三、HDFS+大数据集群
1、CentOS集群、计算机集群的基本架构,从图说明你对集群的理解(C/S模式、机架、网络互联,交换机)
2、HDFS存储原理、数据读取策略
数据存放:HDFS的副本放置策略、冗余复制因子
第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点
第二个副本:放置在与第一个副本不同的机架的节点上
第三个副本:与第一个副本相同机架的其他节点上
更多副本:随机节点
数据读取:机架感知策略
(1)机架感知策略:HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
(2)当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据
c)数据复制:流水线复制策略
每个块都向HDFS的名称节点发起写请求,名称节点根据系统中各个数据节点的使用情况,选择一个数据节点列表返回给客户端,然后客户端就把数据首先写入到列表中的第一个数据节点,同时把列表传给第一个数据节点,第一个数据节点收到数据的时候,写入本地,并且向列表中的第2个数据节点发起连接请求,把自己已经接收到的数据和列表传递给第二个数据节点。第二个数据节点收到数据的时候,写入本地,并向列表中的第三个节点发送连接请求,依次类推,列表中的多个数据节点形成一条数据复制的流水线。
d)数据错误与恢复
名称节点出错:同步存储元数据信息,把元数据信息同步存储到其他文件系统,比如远程挂载的网络文件系统
数据节点出错:
(1)每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态
(2)当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求
(3)这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一些数据块的副本数量小于冗余因子
(4)名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本
(5)HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置
数据出错:
(1)网络传输和磁盘错误等因素,都会造成数据错误
(2)客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读取到正确的数据
(3)在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息写入到同一个路径的隐藏文件里面
(4)当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块
3、HDFS数据读写过程(图3-8、3-9)