Hadoop大数据入门:HDFS数据组织
Hadoop大数据入门:HDFS数据组织包括1.数据块,2.Staging,3.流水线式的复制
1.数据块
HDFS最适合的应用场景是处理大数据集合,同时这些应用多是一次写入多次读取,并且读的速度要满足流式读,即write-once-read-many的语义。一个典型的Block大小是64MB,因此文件总是按照64MB切分成Chunk,每个Chunk存储于不同的DataNode服务器中。
2.Staging
在某个客户端上创建文件的请求其实并没有立即发给NameNode,事实上,HDFS客户端会将文件数据缓存到本地的一个临时文件中,应用写文件时被透明地重定向到这个临时文件。
当这个临时文件累积的数据超过一个Block的大小(默认为64MB),客户端才会联系NameNode。NameNode将文件名插入文件系统的层次结构中,并且分配一个数据块给它,然后返回DataNode的标识符和目标数据块给客户端。客户端将本地临时文件flush到指定的DataNode上。当文件关闭时,在临时文件中剩余的没有flush的数据也会传输到指定的DataNode,然后客户端告诉NameNode文件已经关闭。此时NameNode才将文件创建操作提交到持久存储。如果NameNode在文件关闭前挂机,该文件将丢失。
上述方法是对在HDFS上运行的目标应用认真考虑的结果。如果不采用客户端缓存,网络速度和网络堵塞因素会对吞吐量造成比较大的影响。
3.流水线式的复制
当某个客户端向HDFS文件写数据的时候,一开始是写入本地的临时文件,假设该文件的replication因子为3,那么客户端会从NameNode获取一张DataNode列表来存放副本。然后客户端开始向第一个DataNode传输数据,第一个DataNode会一小部分一小部分(4KB)地接收数据,将每个部分写入本地仓库,同时传输该部分到第二个DataNode。第二个DataNode也是这样,边收边传,一小部分一小部分地接收,将每个部分存储在本地仓库,同时传给第三个DataNode。第三个DataNode仅仅接收并存储。这就是流水线式的复制。
-
标签错误:<!-- #Label#
labelId=20160707140604
moduleId=1
classId=12231768634
orderby=2
fields=url,title,u_info
attribute=
datatypeId=22192428132
recordCount=3
pageSize=
<htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate>
-->
- 我要参加技术沙龙