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
Hadoop mapreduce的缺点是什么?_Hadoop_Mapreduce - Fatal编程技术网

Hadoop mapreduce的缺点是什么?

Hadoop mapreduce的缺点是什么?,hadoop,mapreduce,Hadoop,Mapreduce,mapreduce的缺点是什么?mapreduce有很多优点。但是我也想知道mapreduce的缺点 首先,它将映射输出流化,如果可以将其保存在内存中,则效率会更高。我最初使用MPI部署我的算法,但当我放大一些节点时,开始交换,这就是我进行转换的原因 名称节点跟踪分布式文件系统中所有文件的元数据。我正在读一本hadoop书籍(hadoop in action),其中提到Yahoo估计每个文件的元数据大约为600字节。这意味着,如果文件太多,Namenode可能会遇到问题 如果您不想使用流式API

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

  • 首先,它将映射输出流化,如果可以将其保存在内存中,则效率会更高。我最初使用MPI部署我的算法,但当我放大一些节点时,开始交换,这就是我进行转换的原因

  • 名称节点跟踪分布式文件系统中所有文件的元数据。我正在读一本hadoop书籍(hadoop in action),其中提到Yahoo估计每个文件的元数据大约为600字节。这意味着,如果文件太多,Namenode可能会遇到问题

  • 如果您不想使用流式API,则必须使用java语言编写程序。例如我做了一个C++翻译。这有一些副作用,例如,与C相比,Java有很大的字符串开销。因为我的软件都是关于字符串的,这是某种缺陷

  • 说实话,我真的得努力思考才能找到缺点。mapreduce为我解决的问题比它引入的问题要大得多。这张单子肯定不完整,只是开头几句话。显然,您必须记住,它是面向大数据的,而这正是它的最佳表现。还有很多其他的发布框架都有自己的特点

  • 您需要重新考虑/重写一些琐碎的操作,如连接、过滤器,以在映射/减少/键/值模式中实现
  • MapReduce假定作业可以并行化。但并非所有数据处理工作都是如此
  • 它与Java紧密相连,当然你有猪和蜂巢来营救,但你失去了灵活性

  • 我宁愿问什么时候mapreduce不是一个合适的选择?我认为如果您按预期使用它,您不会看到任何缺点。尽管如此,在某些情况下,mapreduce不是一个合适的选择:

    • 实时处理
    • 作为MR程序来实现每一项和每一件事情并不总是非常容易
    • 当您的中间进程需要相互通信时(作业独立运行)
    • 当处理需要通过网络对大量数据进行洗牌时
    • 当您需要处理流数据时。MR最适合于批处理您已经拥有的大量数据
    • 当您可以使用独立系统获得所需的结果时。与分布式系统相比,配置和管理独立系统显然不那么痛苦
    • 当您有OLTP需求时。MR不适用于大量的短期在线交易
    可能还有其他几种情况。但这里重要的是你使用它有多好。例如,你不能指望一份先生的工作会在几分钟内给你带来结果,你也不能把它算作它的缺点。只是你用错地方了。它适用于任何技术,IMHO。长话短说,三思而后行

    如果您仍然愿意,可以将以上几点作为mapreduce的缺点:)


    HTH

    这里有一些MapReduce不能很好工作的用例

  • 当您需要快速响应时。e、 g.说<几秒钟(使用流 处理、CEP等)
  • 处理图形
  • 复杂算法,例如一些机器学习算法,如SVM,也可参见13张图纸 (并行计算研究的前景:来自伯克利的观点)
  • 迭代—当您需要一次又一次地处理数据时。e、 g.KMeans-使用Spark
  • 当贴图阶段生成过多关键点时。那就永远不可能了
  • 连接两个具有复杂条件的大型数据集(可以采用相同的情况 通过散列等方式处理)
  • 有状态操作-例如,评估状态机级联任务 一个接一个地使用蜂箱,大的可能会有帮助,但是会有很多开销 重新读取和解析数据

  • 如果您不想使用java,您可以始终使用流。NN与MR无关。这是运行mapreduce的架构的一个限制,因此需要记住,尽管您是对的,但它不一定严格与MR相关。mapreduce可以在任何地方运行,而不仅仅是HDFS。NN是HDFS特有的。如果您在HDFS中存储了大量非常小的文件,那么您将看到元数据问题,这同样不是Hadoop平台的高效使用。但是,我同意。你说的也对。这个问题是针对MR框架的,所以我想提一下。