hadoop HDFS原理基础知识


HDFS设计基础与目标 :
1、硬件错误是常态。因此需要冗余 
2、流式数据访问。即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理 
3、大规模数据集 
4、 简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即
是文件一经写入,关闭,就再也不能修改  

5、程序采用“数据就近”原则分配节点执行

HDFS体系结构 :


1、Namenode

(1)管理文件系统的命名空间 
(2)记录每个文件数据块在各个Datanode上的位置和副本信息 
(3)协调客户端对文件的访问 
(4)记录命名空间内的改动或空间本身属性的改动 
(5)Namenode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等

2、Datanode 
(1) 负责所在物理节点的存储管理 
(2)一次写入,多次读取(不修改) 
(3)文件由数据块组成,典型的块大小是64MB 
(4)数据块尽量散布道各个节点 

读取数据流程 :
(1) 客户端要访问HDFS中的一个文件 
(2)首先从namenode获得组成这个文件的数据块位置列表 
(3)根据列表知道存储数据块的datanode 
(4)访问datanode获取数据 
(5)Namenode并不参与数据实际传输




HDFS的可靠性 :

1、冗余副本策略 
(1) 可以在hdfs-site.xml中设置复制因子指定副本数量 
(2)所有数据块都有副本 
(3)Datanode启动时,遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表(blockreport)汇报给namenode

2、机架策略 
(1)集群一般放在不同机架上,机架间带宽要比机架内带宽要小 
(2)HDFS的“机架感知” 
(3)一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率

3、心跳机制 
(1) Namenode周期性从datanode接收心跳信号和块报告 
(2)Namenode根据块报告验证元数据 
(3)没有按时发送心跳的datanode会被标记为宕机,不会再给它任何I/O请求 
(4)如果datanode失效造成副本数量下降,并且低于预先设置的阈值,namenode会检测出这些数据块,并在合适的时机进行重新复制 
(5)引发重新复制的原因还包括数据副本本身损坏、磁盘错误,复制因子被增大等

4、安全模式 
(1)Namenode启动时会先经过一个“安全模式”阶段 
(2)安全模式阶段不会产生数据写 
(3)在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的 
(4)在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束 
(5)当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数 

5、校验和 
(1)在文件创立时,每个数据块都产生校验和 
(2)校验和会作为单独一个隐藏文件保存在命名空间下 
(3)客户端获取数据时可以检查校验和是否相同,从而发现数据块是否损坏

(4) 如果正在读取的数据块损坏,则可以继续读取其它副本

6、回收站 
(1) 删除文件时,其实是放入回收站/trash 
(2)回收站里的文件可以快速恢复 
(3)可以设置一个时间阈值,当回收站里文件的存放时间超过这个阈值,就被彻底删除,并且释放占用的数据块

7、元数据保护 
(1)映像文件刚和事务日志是Namenode的核心数据。可以配置为拥有多个副本 
(2)副本会降低Namenode的处理速度,但增加安全性 
(3)Namenode依然是单点,如果发生故障要手工切换

8、快照 
(1)支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态 
(2)Hadoop目前还不支持快照,已经列入开发计划 


HDFS文件操作:

注意,hadoop没有当前目录的概念,也没有cd命令 

1、查看文件:dfs -ls

      查看此文件下的子目录:dfs -ls ./in  (in为当前目录下的子目录)

      查看文件内容:dfs -cat ./in/文件

2、上传文件到HDFS:

      dfs -put ../abc abc  (把上级目录中abc上传到当前目录下的abc并创建abc)

3、将HDFS的文件复制到本地:

      dfs -get abc ./xyz

4、删除HDFS下的文档

      dfs -rmr abc

5、查看HDFS基本统计信息 

         dfsadmin -report

6、进入和退出安全模式

        进入安全模式dfsadmin -nsafemode enter

        退出安全模式dfsadmin -nsafemode leave

相关内容