【发布时间】:2021-01-11 12:01:51
【问题描述】:
所以 - 当 Tez 选择要运行的映射器数量时,它会查看可以并行运行的容器数量(可用插槽)、波形因子、数据的机架位置、FileInputFormat 最大拆分大小、Tez 最大分组大小,可以拆分的条带、要获取的列的未压缩总数据大小等 - 它不查看 tez 容器大小。
因此,映射器数量的计算会导致每个映射器的输入狭缝长度字节 - 可以估计(在运行作业之前)。
但是 - 如何估计处理输入拆分所需的总容器大小(内存)?
我了解所需的内存取决于
- 输入分割长度原始(字节)
- 压缩(百分比?)
- 将应用于记录的任何 UDF(可能可以忽略不计)
- 使用时的向量化(布尔值)
- 根据需要进行地图连接(布尔值)
- 根据需要排序(布尔值)
- 写入磁盘之前使用的缓冲区(百分比?)
但是 - 我如何根据输入拆分字节来估计容器大小或更确切地说容器内所需的堆空间?
一种方法是在一次运行后查看映射器任务的已提交堆字节。
但是是否有任何公式可以根据上述因素或任何其他因素从 INPUT_SPLIT_LENGTH_BYTES 估算 COMMITTED_HEAP_BYTES ?
【问题讨论】:
标签: hadoop hive hadoop-yarn google-cloud-dataproc apache-tez