如何在 Apache TEZ 中增加 Mappers 和 Reducer

How to increase Mappers and Reducer in Apache TEZ

我知道这个简单的问题,我需要这个社区的一些帮助,当我创建 ORC 格式的 PartitionTable 时,当我尝试从指向 2 GB 的非分区 table 转储数据时包含 210 列的文件,我看到 Number of Mapper are 2 and reducer are 2 。有没有办法增加Mapper和reducer。我的假设是我们无法像 MR 1.0 那样设置 Mapper 和 reducer 的数量,它基于 Yarn 容器大小、Mapper 最小内存和最大内存等设置。谁能建议我 TEz 计算映射器和缩减器。保持内存大小设置的最佳价值是什么,这样我就不会遇到:Java 堆 space、Java 内存不足问题。我的文件大小可能会增长到 100GB。请帮我解决这个问题。

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

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

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

  • (a) 恰好是请求的数字
  • (b) 恰好一个减速机——也就是说,如果工作需要它,比如总订单

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

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

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