【问题标题】:Switching off data locality for Hadoop MapReduce jobs关闭 Hadoop MapReduce 作业的数据局部性
【发布时间】:2016-08-10 13:39:38
【问题描述】:

我有一个 YARN 集群和集群中的几十个节点。我的程序是一个仅限地图的工作。 它的 Avro 输入非常小,有几百万行,但处理单行需要大量的 CPU 能力。我观察到许多地图任务都在单个节点上运行,而其他节点没有参与。这会导致某些节点非常慢并影响整体 HDFS 性能。我认为这种行为是因为 Hadoop 数据局部性。

我很好奇是否可以将其关闭,或者是否有其他方法可以强制 YARN 在集群中更均匀地分配地图任务?

谢谢!

【问题讨论】:

    标签: hadoop mapreduce hdfs hadoop-yarn hortonworks-data-platform


    【解决方案1】:

    假设您不能轻松地在集群中更均匀地重新分配数据(肯定不是您的所有数据都在一个节点上,对吧?!)这似乎是放松局部性的简单方法:

    yarn.scheduler.capacity.node-locality-delay
    

    这个设置应该有一个默认的40,试着把它设置为1看看这是否有想要的效果。也许甚至 0 也可以工作。

    【讨论】:

    • 如果您使用 FairScheduler,这也可能是相关的:tech-blog.flipkart.net/2015/05/…
    • 谢谢,我去看看。数据大小实际上总共为 20MB,因此很可能位于同一节点上 + 其他节点上的 2 个副本。我们最近开始使用公平的调度程序,所以也感谢您的链接!
    • @Vyacheslav:20 MB 太小,无法在 Hadoop 中处理。
    • 输入量小,但处理时间非常长。 1 行最多 1 分钟,我的输入中有 100 万行。我们使用 hadoop 是一种在多台机器上自动分配负载的好方法 + 在其他 YARN 队列空闲或忙碌的情况下具有弹性。所以我相信我的用例是有道理的。
    • @Vyacheslav:可能以下不是一个干净的方法:最小化 HDFS 中的块大小,并从该 avro 文件中提取数据作为 HDFS 中的文本文件,然后运行该仅映射作业。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多