1.数据块
兼容HDFS的应用都是处理大数据集合的。这些应用都是写数据一次,读可以是多次,并且读的速度要满足流式读。HDFS支持文件的write-once-read-many。一个典型的block大小是64MB,因而文件总是按照64MB切分成chunk,每个chunk存储于不同的Datanode上。
2.数据产生步骤
某个客户端创建文件的请求其实并没有立即发给Namenode,事实上,HDFS客户端会将文件数据缓存到本地的一个临时文件中。应用的写被透明地重定向到这个临时文件。当这个临时文件累积的数据超过一个block的大小(默认64MB),客户端才会联系Namenode。Nam-enode将文件名插入文件系统的层次结构中,并且分配一个数据块给它,然后返回Datanode的标识符和目标数据块给客户端。客户端将本地临时文件flush到指定的Datanode上。当文件关闭时,在临时文件中剩余的没有flush的数据也会传输到指定的Datanode,然后客户端告诉Namenode文件已经关闭。此时Namenode才将文件创建操作提交到持久存储。如果Na-menode在文件关闭前关闭了,该文件将丢失。上述方法是通过对HDFS上运行的目标应用认真考虑的结果。如果不采用客户端缓存,由于网络速度和网络堵塞会对吞估量造成比较大的影响。(www.xing528.com)
3.数据块复制
当某个客户端向HDFS文件写数据时,一开始是写入本地临时文件,假设该文件的rep-lication因子设置为3,那么客户端会从Namenode获取一张Datanode列表来存放副本。然后客户端开始向第一个Datanode传输数据,第一个Datanode一小部分(4kbit)一小部分地接收数据,将每个部分写入本地仓库,并且同时传输该部分到第二个Datanode节点。第二个Da-tanode也是这样,边收边传,一小部分一小部分地收,存储在本地仓库,同时传给第三个Datanode。第三个Datanode就仅仅是接收并存储了。这就是流水线式的复制。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。