HDFS架构原则分析

1、元数据与数据分离

                在HDFS 中存放数据时,文件本身的属性是存放在NameNode节点上,而文件所持有的数据是存放在DataNode节点上,这样可以对大量的数据进行一个统一的管理

2、master/salve架构(主从架构)

                一个HDFS集群由一个NameNode节点和一定数目的DataNode节点组成

3、移动计算比移动数据更划算

                这就涉及到hosts算法(即主机选择算法),文件是按照数据块的类型存储的,对数据进行处理时,是按照逻辑Split(片)的形式读取,首先说下文件切分算法(即文件是如何进行逻辑上的分片)

            (1)文件切分算法                 

                  为了减少网络开销提高计算效率,一般将逻辑片的大小设定为和数据块的大小一致,这样就避免了数据的跨块读取,首先,将定义的最大值(即maxsize)和数据块的大小(blocksize)做对比,选取出最小值,再将该值与minsize(片的最小值,默认为1,可以通过配置参数mapred.min.split.size来进行设置)做对比,选取出最大值作为我们逻辑片的大小

                  这样就保证了当我们的文件大小大于数据块的大小,此时的逻辑片的大小就与数据块的大小一致,当文件的大小小于数据块的大小,逻辑片的大小就与文件的大小一致,以此来提高运算效率

                原码分析:





             (2)hosts算法                 

                  分片完成后,就开始hosts算法,确定每一个逻辑片的元数据,一般包括四部分<file,start,length,hosts>

                                    file----------表示逻辑片存放在那些文件中

                                    start--------表示逻辑片在文件中的起始位置

                                    length------表示逻辑片的长度

                                    hosts-------文件所在的节点信息

                    host选择遵循本地性,即将算法调度到要处理的数据所在的节点上,因为我们的数据并不是存放在一个节点上,我们需要从其它节点上读取信息,这就涉及到网络传输,为了减少网络开销,我们会选择存储数据最多的节点,将算法调度到该节点上,这样处理数据时就是以本地的模式进行,会提高运算效率,将其他存储少量信息的节点通过网络传输将数据传输过来,这样就能减少带宽,提高系统的吞吐量,因而说移动计算比移动数据更划算。

 

猜你喜欢

转载自blog.csdn.net/qq_42444621/article/details/80715230