实现输入拆分(hadoop)

gt0wga4j  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(433)

说到大数据,假设我们有一个非常大的文件(以gb为单位),比如说,我们知道hdfs以分块的分布式方式存储文件,考虑到块的大小,比如说128 mb,是否有可能某些块会是这样的:
区块1:


这是一号线。
这是二号线。
这是三号线。
这是四号线。
这是电话线
区块2:


五个。
这是六号线。
这是七号线。
这是八号线。
这是九号线。
这是十号线。
我知道输入分割的概念,以及它是如何成为逻辑边界而不是物理边界的,但我从未见过它的实现。当然,我读过描述哪些方法应该被重写的文章。。但我的第一个疑问是,这种划分真的有可能像半张唱片在这里和那里一样吗?
如果是的话,对它的实施有什么想法吗?

kmbjn2e3

kmbjn2e31#

当达到块大小并创建下一个块时,这种情况是可能的。您可以通过将块大小设置为4KB来模拟这种情况,然后将内容放入并移动到dfs。在那里你可以看到最后一行在两个街区之间分开。这本身就是一个很好的输入分裂的例子。当该过程发生时,控件也将访问块2以获取块1中未完成行的挂起数据。当块中的最后一条记录不完整时,输入分割包括下一个块的位置信息和完成记录所需数据的字节偏移量。

bogh5gae

bogh5gae2#

这里有很好的解释。

https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/

还有这里

https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/LineRecordReader.java#L243

相关问题