携手创造,一起生长!这是我参与「日新方案 8 月更文挑战」的第22天,点击查看活动详情
一、概述
Hadoop散布式文件体系(HDFS)是指被规划成合适运行在通用硬件(commodity hardware)上的散布式文件体系(Distributed File System)。它和现有的散布式文件体系有很多一起点。但同时,它和其他的散布式文件体系的区别也是很明显的。HDFS是一个高度容错性的体系,合适布置在廉价的机器上。HDFS能供给高吞吐量的数据拜访,十分合适大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件体系数据的目的。HDFS在最开端是作为Apache Nutch搜索引擎项目的根底架构而开发的。HDFS是Apache Hadoop Core项目的一部分。———-来源于百度百科。
HDFS核心特性
- 硬件毛病:毛病的检测和主动快速恢复
- 数据拜访:合适批量处理的一次写入,处处读取,而不是用户交互式的随机读写
- 大数据集:典型的HDFS文件大小是GB到TB的等级。所以,HDFS被规划成支撑大文件。它应该供给很高的聚合数据带宽,一个集群中支撑数百个节点,一个集群中还应该支撑千万等级的文件。不适用很多小文件的存储。
二、HDFS架构
架构 1.0
- DATANODE:担任文件数据的存储和读写操作,HDFS 将文件数据分割成若干数据块(Block),每个 DataNode存储一部分数据块,这样文件就散布存储在整个 HDFS 服务器集群中。
- NameNode:担任整个散布式文件体系的元数据(MetaData)办理,也就是文件路径名、数据块的 ID以及存储位置等信息,相当于操作体系中文件分配表(FAT)的人物。
架构 2.0(高可用)
图上表述了一个集群大约的样子,有 3 个 DataNode(标准集群), 有两个 NameNode,一个是Active, 一个是 Standby, 每个 NameNode 节点都有敞开 ZKFailoverController(简写ZKFC)看护进程,有3个JournalNode。
它是怎么到达高可用呢? 1、首先,它有两个 NameNode,一个是 Active 的,一个是 Standby (备援状况)的,当 Active 宕机后,可以使用Standby的机器。 2、为了确保 Standby 的机器中,namespace和文件块与Active宕机之前共同,DataNode在向Active NameNode发送块的位置信息和“心跳”时,也要把这些信息发送给Standby NameNode,这样才干确保Standby中的文件块信息与Active NameNode中的数据共同。 3、为了确保 Standby NameNode 中的 namespace 与 Active NameNode 共同,Active NameNode 需要把一切对 namespace进 行的操作都要记录到 JournalNode. 4、作为Standby 的NameNode只要监控到JournalNode中namespace有更改日志,就兼并到当时namespace,以确保 namespace 与 Active Namenode 共同。
三、HDFS 的运维
要害的装备文件
常见指令
命令格局:hdfs dfs [-operation] [option] [path_local] [path_hdfs]
安全形式
NN进程发动,此刻NN正在从 fsimage 和 edits 日志文件加载体系信息(准确的说,应该是正在兼并 fsimage 和 edits),并等候各 DN 上报各自数据块状况。然后 NN 主动进入安全形式查看数据块完整性。安全形式状况下的HDFS是不能履行写入操作,但可以履行读操作,查看完毕并比及hadoop集群完结发动后退出安全形式。
副本率 = 实际副本数 除以 装备副本数,最低副本率可以在装备文件的 “dfs.namenode.safemode.threshold-pct” 装备项装备,表明当实际的副本率小于该值时,NN 就会主动在其他 DN 节点上仿制副本。
发动安全形式:
hdfs dfsadmin -safemode enter
查看安全形式
hdfs dfsadmin -safemode get
封闭安全形式
hdfs dfsadmin -safemode leave