【问题标题】:How to increase Mappers and Reducer in Apache TEZ如何在 Apache TEZ 中增加 Mappers 和 Reducer
【发布时间】:2015-03-02 23:00:55
【问题描述】:

我知道这个简单的问题,我需要这个社区的这个查询的帮助,当我创建 ORC 格式的 PartitionTable 时,当我尝试从指向 2 GB 文件的非分区表中转储数据时,我有 210 列,我请参阅 Mapper 的数量为 2 和 reducer 的数量为 2 。有没有办法增加 Mapper 和 reducer。我的假设是我们不能像 MR 1.0 那样设置 Mapper 和 reducer 的数量,它基于 Yarn 容器大小、Mapper 最小内存和最大内存等设置。任何人都可以建议我 TEz 计算映射器和化简器。保持内存大小设置的最佳价值是什么,这样我就不会遇到:Java 堆空间、Java 内存不足问题。我的文件大小可能会增长到 100GB。请帮我解决这个问题。

【问题讨论】:

    标签: mapreduce hive hadoop-yarn hiveql azure-hdinsight


    【解决方案1】:

    您仍然可以在 Yarn 中设置映射器和减速器的数量。你试过吗?如果是,请回到这里。

    Yarn 改变了底层的执行机制,但 #mappers 和 #reducers 描述的是 Job 需求,而不是 Job 资源的分配方式(这就是 yarn 和 mrv1 的不同之处)。

    传统的 Map/Reduce 具有硬编码的 map 和 reduce “槽”数量。正如你所说 - Yarn 使用容器 - 这是每个应用程序。纱线因此更灵活。但在这两种情况下,#mappers 和 #reducers 都是作业的输入。而且在这两种情况下,映射器和缩减器的 实际 数量可能与请求的数量不同。通常,#reducers 要么是

    • (a) 正是请求的号码
    • (b) 正好是一个减速器 - 即如果工作需要它,例如在总订购中

    【讨论】:

    • 当我尝试通过 hive 命令设置 mapper 和 reducer 并且 tez 有执行引擎时,我的数字没有得到反映。您已经提到“Yarn 改变了底层的执行机制,但 #mappers 和 #reducers 描述的是作业要求——而不是作业资源的分配方式(这就是 yarn 和 mrv1 的不同之处)。”这意味着基于 Job Type Yarn 将分配容器,其中 MRV1 只是利用可用资源或通过设置 # of reducers .. 你能否详细说明“分配作业资源的方式”
    • thnx javadba ..我明白了。即使我们为#mapper 和reducer 指定编号,根据作业要求/大小是否可能会有所不同,即它将> 1 并且小于等于提到的#reducer。如果我错了,请纠正我。 ..在一个容器中,我可以在同一个容器(内存、CPU 和 I/O 磁盘)中有更多的映射任务或映射和减速器任务。但是在 MR 1.0 中,映射器将在一个节点和减速器上在另一个节点上。
    • 不,只有一个映射器或减速器从一个容器中运行。 altiscale.zendesk.com/hc/en-us/articles/…
    【解决方案2】:

    对于内存设置,如果您使用 hive 和 tez,以下 2 个设置将对您有用:

    1) hive.tez.container.size - 这是将使用的 Yarn Container 的大小(以 MB 为单位的值)。

    2) hive.tez.java.opts - 这是用于每个任务的 java opts。如果容器大小设置为 1024 MB,则设置 java 选择说“-Xmx800m”而不是“-Xmx1024m”。 YARN 会杀死使用比指定容器大小更多内存的进程,并且考虑到 java 进程的内存占用通常会超过指定的 Xmx 值,将 Xmx 设置为与容器大小相同的值通常会导致问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多