Hadoop分块与分片

转载 2013年12月03日 10:34:54

HDFS存储系统中,引入了文件系统的分块概念(block),块是存储的最小单位,HDFS定义其大小为64MB。与单磁盘文件系统相似,存储在 HDFS上的文件均存储为多个块,不同的是,如果某文件大小没有到达64MB,该文件也不会占据整个块空间。在分布式的HDFS集群上,Hadoop系统 保证一个块存储在一个datanode上。

        当我们执行hadoop fs -put aa.txt /bb.txt,则aa.txt会被复制为集群的/bb.txt。查看系统的log日志hadoop-$username-namenode-*.log,可以看到类似于

2011-09-07 08:39:12,506 INFO org.apache.hadoop.hdfs.StateChange: BLOCK* NameSystem.addStoredBlock: blockMap updated: 127.
    0.0.1:50010 is added to blk_5715489406767973176_1455 size 32

       这样的信息,里面记录有分配block的元数据信息和block号(blk_5715489406767973176)。

       在另一个日志中hadoop-$username-datanode-*.log可以看到对应的datanode打印出相应的log:

2011-09-07 08:39:12,495 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Receiving block blk_5715489406767973176_145
    5 src: /127.0.0.1:48492 dest: /127.0.0.1:50010 

       HDFS的namenode只存储整个文件系统的元数据镜像,这个镜像由配置dfs.name.dir指定,datanode则存有文件的metainfo和具体的分块,存储路径由dfs.data.dir指定。

       分析完毕分块,下面讨论一下分片:

       hadoop的作业在提交过程中,需要把具体的输入进行分片。具体的分片细节由InputSplitFormat指定。分片的规则为  FileInputFormat.class中的getSplits()方法指定:

       long splitSize = computeSplitSize(goalSize, minSize, blockSize);

      computeSplitSize:

             Math.max(minSize, Math.min(goalSize, blockSize));

       其中goalSize为“InputFile大小”/“我们在配置文件中定义的mapred.map.tasks”值,minsize为mapred.min.split.size,blockSize为64,所以,这个算式为取分片大小不大于block,并且不小于在mapred.min.split.size配置中定义的最小Size。

        当某个分块分成均等的若干分片时,会有最后一个分片大小小于定义的分片大小,则该分片独立成为一个分片。

相关文章推荐

Hadoop之K-Means聚类算法

Begin 读取inputPath,从中选取前k个点作为初始质心,将质心数据写入centerPath; While 聚类终止条件不满足 ...

Hadoop分块和分片

一、分块:        HDFS存储系统中,引入了文件系统的分块概念(block),块是存储的最小单位,HDFS定义其大小为64MB。存储在 HDFS上的文件均存储为多个块,如果某文件大小没有到达...

Hadoop案例之自定义分片策略解决大量小文件问题

Hadoop案例之自定义分片策略解决大量小文件问题   转载: http://blog.csdn.net/qq1010885678/article/details/50771361 1.默认的分片策略...

源码分析Hadoop FileInputFormat如何分片

Hadoop采用的是分布式并行计算的模式来处理大数据,在处理时必然要对数据进行分片,将数据由大化小,将一个大的任务化为几个小的任务,这就是hadoop处理大数据的核心思想。         这里要讨论...

关于hadoop循环获取路径以及获得分片的源代码

protected List listStatus(JobContext job ) throws IOExcepti...

Hadoop中分片为什么需要metasplitInfo文件

说明:把之前的东西总结梳理了一下,发上来,比较粗略,不过意思还是比较明白。 在hadoop中,很重要的一个特点就是分片,将输入划分成很多个split,而通过分析我们知道 划分分片的时候会最终生...

hadoop自定义SdfInputFormat,文件按标记分片

由于要用hadoop streaming处理sdf文件,而sdf文件的文件格式为 1 -OEChem-12181003042D ..... $$$$ 以$$$$结尾的多行。 ...

Hadoop自定义linereader,实现按行分块

Hadoop自定义linereader,实现按行分块,map方法按行处理
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)