mapreduce有哪些缺点?

时间:2013-09-03 06:47:28

标签: hadoop mapreduce

mapreduce的缺点是什么? mapreduce有很多优点。但我也想知道mapreduce的缺点。

4 个答案:

答案 0 :(得分:14)

当mapreduce不合适时,我宁愿问吗?如果您按预期使用它,我认为您不会看到任何不利之处。话虽如此,有些情况下mapreduce不是一个合适的选择:

  • 实时处理。
  • 始终非常容易实现每个和所有内容作为MR程序。
  • 当您的中间流程需要相互通信时(作业单独运行)。
  • 当您的处理需要通过网络改组时,需要处理大量数据。
  • 当您需要处理流数据时。 MR最适合批处理您已经拥有的大量数据。
  • 使用独立系统获得所需结果时。与分布式系统相比,配置和管理独立系统显然不那么痛苦。
  • 当您有 OLTP 需求时。 MR不适合大量短期在线交易。

可能还有其他一些案例。但重要的是你使用它有多好。例如,您不能指望MR作业在几毫秒内给出结果。你不能把它算作它的劣势。只是你在错误的地方使用它。它适用于任何技术,恕我直言。长话短说,在你采取行动之前要好好思考。

如果你还想要,可以采取以上几点作为mapreduce的缺点:)

HTH

答案 1 :(得分:3)

以下是MapReduce无法正常工作的一些用例。

  1. 当您需要快速响应时。例如说<几秒钟(使用流 处理,CEP等)
  2. 处理图表
  3. 复杂算法,例如一些机器学习算法,如SVM,也看到13个drawfs (并行计算研究的景观:来自伯克利的观点)
  4. 迭代 - 当您需要一次又一次地处理数据时。例如KMeans - 使用Spark
  5. 当地图阶段生成太多密钥时。传递需要永远。
  6. 连接两个具有复杂条件的大型数据集(相同的情况可以 通过哈希等处理)
  7. 有状态的操作 - 例如评估状态机级联任务 一个接一个 - 使用Hive,Big可能有所帮助,但很多开销     重读和解析数据。

答案 2 :(得分:1)

  1. 首先,流式传输地图输出,如果可以将其保留在内存中,则效率会更高。我最初使用MPI部署了我的算法但是当我扩展一些节点开始交换时,这就是我进行转换的原因。

  2. Namenode会跟踪分布式文件系统中所有文件的元数据。我正在阅读一本hadoop书(Hadoop in action),它提到雅虎估计每个文件的元数据大约为600字节。这意味着如果您有太多文件,您的Namenode可能会遇到问题。

  3. 如果您不想使用流媒体API ,则必须使用 java 语言编写程序。我举例说来自C ++的翻译。这有一些副作用,例如Java与C相比有很大的字符串开销。因为我的软件都是关于字符串的,所以这是一种缺点。

  4. 说实话,我真的不得不努力寻找缺点。 mapreduce解决的问题比它引入的问题要大得多。 这个列表绝对不完整,只是几个第一个评论。显然,你必须记住,它是面向大数据,而这正是它将发挥最佳性能的地方。还有很多其他的分发框架都有自己的特点。

答案 3 :(得分:1)

  1. 你需要重新思考/重写一些简单的操作,比如Joins,Filter来实现map / reduce / Key / value模式
  2. MapReduce假定作业可以并行化。但对于所有数据处理工作可能并非如此。
  3. 它与Java密切相关,当然你有猪和蜂巢来救援,但你失去了灵活性。