一、HDFS基本概念
HDFS设计基础与目标
① 有冗余
② 数据批量读取而不是随机读取
③ 大规模数据集
④ 对文件采用一次写入多次读取的逻辑设计,文件一经写入,关闭,就再也不能修改
⑤ 采用“数据就近”原则分配节点执行应用场景:
时延;吞吐量
MapReduce计算模型;海量数据的理想分析;静态数据源HDFS体系结构
① NameNode
-管理文件系统的命名空间;
-记录每个文件数据块在各个DataNode上的位置和副本信息;
-协调客户端对文件的访问;
-记录命名空间内的改动或空间本身属性的改动;
-namenode使用事务日志记录HDFS元数据的变化。使用镜像文件存储文件系统的命名空间,包括文件映射,文件属性等② DataNode
-负责所在物理节点的存储管理;
-一次写入,多次读取(不修改);
-文件由数据块组成,默认的块block大小是64MB;
-数据块尽量散布在各个节点
-Block大小和副本数由client端上传文件到HDFS时设置,其中副本数可以变更,Block大小是不可以上传后再改变的③ HDFS的可靠性:
-冗余副本策略(hdfs-site.xml中的replication复制因子,每次datanode启动都向namenode汇报hdfs数据块和本地文件的对应关系);
-机架策略(副本尽量分布在不同机架,人为通过Py脚本设置);
-心跳机制(namenode周期性3s从DataNode接受心跳信号和块报告);
-安全模式(namenode收集各个DataNode的报告,当数据块达到最小副本数量以上被认为是安全的。最小副本数,阈值比例);
-校验和(文件块创立时,每个数据块都产生校验和,取数据时将比较校验和);
-回收站(删除文件时,文件被放入回收站/trash,回收站里的文件可以恢复。时间阈值);
-元数据保护(映像文件和事务日志,可以配置为拥有多个副本。元数据副本);
-快照机制(闪回)HDFS文件操作
bin/hadoop dfs -put ../abc abc #将Linux中的文件上传到hdfs bin/hadoop dfs -get abc ./xyz #将hdfs中的文件下载到Linux bin/hadoop dfs -rmr abc #删除hdfs中的文件 bin/hadoop dfs -cat ./out/part-r-00000 #查看hdfs中的文件 bin/hadoop dfsadmin -report #查看hdfs基本统计信息 bin/hadoop dfsadmin -safemode enter #进入安全模式 bin/hadoop dfsadmin -safemode leave #退出安全模式
HDFS特点:
高容错,平民化硬件
大规模数据存储
高吞吐量数据访问
简单一致性
数据读取本地化
二、HA Namenode
运行原理
两个NameNode为了数据同步,会通过一组JournalNodes的独立进程进行通信。所有datanodes必须配置两个NameNode的地址,发送数据块位置信息和心跳给他们两个。运行NameNode的服务器有相同的硬件配置。standby状态的NameNode可以完成checkpoint操作,因此没必要配置Secondary NameNode、CheckpointNode、BackupNode。使用nameservice ID区分一个HDFS集群。同一个集群中的不同NameNode,使用不同的NameNode ID区分。
基本命令
命令“hdfs haadmin -failover --forcefence serviceId1 serviceId2” 把NameNode的状态进行安全的切换。其中后面一个会变为active状态。
NameNode切换,执行命令
hdfs haadmin –failover –forceactive hadoop100 hadoop101