当前位置: Oracle DBA培训网-优技培训 >> Hadoop大数据 > Hadoop培训教程 >

Hadoop大数据入门:HDFS数据组织

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仅仅接收并存储。这就是流水线式的复制。

技术沙龙MORE+

标签错误:<!-- #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> -->
我要参加技术沙龙