1.名词
NameNode、DataNode、机架、Client、File、Block、Package
2.组件间的关系:
2.1.机架通过交换机相连,HDFS假设:在同一个机架之间传输数据比机架间传输数据快。
2.2.NameNode、DataNode指实现不同功能的服务器。NN只用一台,DN需要若干台。
2.3.一个File在HDFS中按照Block存储,冗余,一般为3份(可配置)。一份位于NN机架上,另外两份位于相同但不同于NN的机架上。即,1T的数据,需要3T的物理存储空间,3T的网络流量。
2.4.NN,管理客户端读写请求,管理HDFS命名空间,管理数据块映射;DN,以Block为单位存储数据,Blcok大小为64M(可配置)
3.写:
举例说明,Client有一个100M的文件要写入HDFS系统,HDFS由6台服务器,一个交换机组成,其中一个服务器用作NN,5个服务器用作DN,名称为Host1、2、3、4、5,流程如下:
1.Clinet将File分为两个Block,Block1(64M)、Block2(36M)
2.Client通知NN,发出写文件请求
3.NN记录分配Block信息,并返回可用的DN
Block1: host2,host1,host3
Block2: host7,host8,host4
NN分配Block映射时,按照以下原则:
第一个副本位于同NN的机架上,第二个副本位于不同于第一个副本的机架上,第三个副本位于同于第二个副本的机架但不同的服务器上
4.Client将Block1按照64K为单位,分成1024个Package,向Host2发送第一个Package;
5.Host2向Host1发送第一个Package,Client向Host2发送第二个Package;
6.Host1向Host3发送第一个Package,Client向Host2发送第三个Package,Host2向Host1发送第二个Package;
7.如上过程,直到Block1发送完成。Block发送完成后,Host2、1、3向NN发送消息表明数据传输完成,Host2向Client发送消息表明数据传输完成
8.Client向NN发送消息表明Block1发送完成
9.如上过程,开始发送Block2
这个过程中,NN和DN通过心跳信息通信,心跳信息中包含传输的完成进度情况,DN是否活着。如果DN死了,将分配给DN的数据放到其他的DN上去。3个DN的选择原则可以看出,如果一个DN死了,不能读取数据时,可以从同机架上的DN读取数据;一个机架死了,可以从另外一个机架上读取数据。
(图片来源:http://www.cnblogs.com/laov/p/3434917.html)