不同块大小的hadoop

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

在hadoop中,我需要做什么才能拥有更小/更大的块?
具体地说,我希望有更多的Map器,可以得到更小的数据。似乎我需要减小块大小,但我很困惑(我是hadoop新手)-我需要在将文件放到hdfs上时做些什么,还是需要指定与输入拆分大小相关的内容,或者两者都需要?
我正在共享群集,因此无法执行全局设置,因此需要按作业进行设置(如果可能)?我正在从代码运行作业(稍后可能从oozie运行)。

cld4siwp

cld4siwp1#

你真的不必减少块大小有更多的Map器,这将处理较少的数据量。
您不必修改hdfs块大小( dfs.blocksize ),根据您的集群配置将其设为默认全局值。
你可以用 mapreduce.input.fileinputformat.split.maxsize 属性的值小于块大小。
将使用此值计算输入分割,并为每个计算的输入分割触发一个Map器。

dwbf0jvd

dwbf0jvd2#

Map程序运行的内容由输入拆分控制,完全取决于您如何指定它。hdfs块大小与此无关(除了大多数拆分器将块大小用作创建输入拆分的基本“块”以实现良好的数据局部性之外)。您可以编写自己的拆分器,它接受一个hdfs块并拆分为100个拆分,如果您愿意的话。还可以看看在hadoop中更改文件分割大小。
既然如此,那么这样做的明智性(许多Map绘制者都有很小的裂口)是非常值得怀疑的。其他人都在尝试相反的方法(创建几个带有聚合拆分的Map器)。请参阅处理hadoop的小文件问题、小文件问题、amazon弹性mapreduce深入和最佳实践等。

相关问题