Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hadoop中是否对中间键值对流进行了优化_Java_Hadoop_Mapreduce_Streaming - Fatal编程技术网

Java hadoop中是否对中间键值对流进行了优化

Java hadoop中是否对中间键值对流进行了优化,java,hadoop,mapreduce,streaming,Java,Hadoop,Mapreduce,Streaming,mapreduce作业中的中间键值对将被写入mapred.local.dir,然后被随机移动到将运行reduce任务的tasktracker节点 我知道,HFDS经过优化,可以写入大数据块,因此与常规文件系统相比,可以最大限度地减少硬盘的寻道时间 现在我很好奇hadoop是否也针对将中间kev值对流式传输到本地文件系统进行了优化? 我这样问是因为我的应用程序几乎没有输入数据,但是有大量的中间数据和中等大小的输出数据 Hadoop在我的情况下是有益的还是应该考虑不同的框架?< /强>(注意我的软件

mapreduce作业中的中间键值对将被写入
mapred.local.dir
,然后被随机移动到将运行reduce任务的tasktracker节点

我知道,HFDS经过优化,可以写入大数据块,因此与常规文件系统相比,可以最大限度地减少硬盘的寻道时间

现在我很好奇hadoop是否也针对将中间kev值对流式传输到本地文件系统进行了优化?

我这样问是因为我的应用程序几乎没有输入数据,但是有大量的中间数据和中等大小的输出数据<强> Hadoop在我的情况下是有益的还是应该考虑不同的框架?< /强>(注意我的软件与单词计数非常密切相关,但是我发射所有子串而不是所有单词)

非常感谢你的帮助

编辑:第一眼看到这个问题,我就稍微重复了一下 中间kv对被发送到HDFS的印象是,它们被发送到tasktracker节点的本地文件系统


中间输出存储在本地FS上,而不存储在HDFS上。因此,HDFS的优化程度并不重要。但是,如果您想扩展磁盘i/o以提高效率,可以使用不同设备上以逗号分隔的目录列表作为mapred.local.dir属性的值。这将分散负载,从而提高性能

您还可以使用组合器使事情变得更好

HDFS是否针对中间数据进行了优化

正如@Tariq提到的,HDFS不用于中间数据(尽管有些人有)

那么,让我重新表述你的问题:

Hadoop是否针对中间数据进行了优化

是的,有一些优化(例如,请参阅)

即使有了这些优化,洗牌繁重的工作也会在这个阶段遇到瓶颈。调整配置参数(如
mapreduce.reduce.shuffle.input.buffer.percent
)可以在一定程度上帮助缓解此问题。使用组合器(正如@Tariq所建议的)也是一个好主意

Hadoop在我的案例中是有益的还是应该考虑一个不同的框架?


是的,Hadoop在您的情况下仍然很有用(假设您不是在单节点模式下运行)。您可以更好地编写针对特定用例优化的自己的代码,但要证明这样做是正确的(在大多数情况下)。

Thx供您参考。我知道是本地的FS,只是想知道这个流媒体是否也有一些优化。不幸的是,在我的情况下,组合器是没有好处的,有太多不同的字,使用组合器只会将输出降低到50-70%左右。我知道中间kv对不会写入HDFS,我很好奇流媒体是否针对这一阶段进行了优化,因为即使在terasort基准测试中也存在大量的混乱。也许循环io.sort缓冲区比常规输出缓冲区做得更好?reduce.input.buffer。。这给我带来了一些问题,因为如果我正确理解它是reduce任务堆的一部分,并且我需要reduce()函数的所有堆,这会导致我的模拟崩溃。但我同意,即使只是为了处理失败,它还是值得的。论文很有意思,希望Hadoop会考虑实现一个中间存储系统,因为我的情况是很棒的,因为KV数据的数量比输入大10倍。