hadoop - 无法通过 MapReduce 获得性能

标签 hadoop

我是 Map-reduce 的新手,我正在使用 Hadoop Pipes。

我有一个包含记录数的输入文件,每行一个。我写了一个简单的程序来打印那些三个词是常见的行。在 map 函数中,我将单词作为键发出,并将记录作为值发出,并在 reduce 函数中比较这些记录。

然后我将 Hadoop 的性能与简单的 C++ 程序进行了比较,在该程序中,我从文件中读取记录并将其拆分为单词并将数据加载到 map 中。 Map 包含作为键的单词和作为值的记录。加载所有数据后,我比较了这些数据。
但我发现,与普通的 C++ 程序相比,Hadoop Map-reduce 执行相同的任务需要很长时间。当我在 hadoop 上运行我的程序时,它大约需要 37 分钟,而简单的 C++ 程序只需要大约 5 分钟。

请有人帮我弄清楚我是否在某个地方做错了?我们的应用程序需要性能。

最佳答案

这里有几点需要说明:
Hadoop 不是高性能的——它是可扩展的。在小数据集上执行相同操作的本地程序将始终优于 hadoop。所以只有当你想在机器上运行集群并享受Hadoop的并行处理时,它的使用才有意义。
Hadoop 流式传输也不是性能方面的最佳选择,因为每行都有任务切换。很多情况下用Java编写的原生hadoop程序会有更好的性能

关于hadoop - 无法通过 MapReduce 获得性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697801/

相关文章:

hadoop - 使用sqoop在HDFS中显示导入的表

hadoop - 如何在不知道应用程序ID的情况下终止Hive查询?

java - Map Reduce - 如何在单个作业中分组和聚合多个属性

hadoop - Avro、parquet 和 SequenceFileFormat 在 Hadoop 生态系统中的地位及其效用

hadoop - 配置单元元数据错误 : org. apache.thrift.transport.TTransportException : java.net

hadoop - 在 hbase 集群上设置多个 tsd

hadoop - 从 Hive 插入到 Hbase 时出错

hadoop - 在Spark中执行mapreduces

hadoop - 区域服务器未在 hadoop 2.0 分布式集群上运行

java - 我们需要在同一台机器上安装 mahout 和 hadoop 吗?