gpt4 book ai didi

hadoop - 关于输入分割长度的 Tez 容器大小估计

转载 作者:行者123 更新时间:2023-12-02 18:37:17 27 4
gpt4 key购买 nike

因此 - 当 Tez 选择要运行的映射器数量时,它会查看可以并行运行的容器数量(可用插槽)、波动因子、数据的机架位置、FileInputFormat 最大拆分大小、Tez 最大分组大小,可以拆分的 strip 、要获取的列的未压缩总数据大小等 - 它不查看 tez 容器大小。

因此映射器数量的计算导致每个映射器的输入狭缝长度字节 - 可以估计(在运行作业之前)。

但是 - 如何估计处理该输入拆分所需的总容器大小(内存)?

我了解所需的内存将取决于

  1. 输入拆分长度原始(字节)
  2. 压缩(百分比?)
  3. 将应用于记录的任何 UDF(可能可以忽略不计)
  4. 如果使用则向量化( bool 值)
  5. 如果需要映射连接( bool 值)
  6. 根据需要排序( bool 值)
  7. 写入磁盘之前使用的缓冲区(百分比?)

但是 - 我如何根据输入的拆分字节估计容器大小或容器内所需的堆空间?

一种方法是在一次运行后查看映射器任务的已提交堆字节。

但是是否有任何公式可以根据上述因素或任何其他因素从 INPUT_SPLIT_LENGTH_BYTES 估算 COMMITTED_HEAP_BYTES?

最佳答案

我认为每个映射器的输入拆分长度不会直接影响 Tez 容器大小。这只是意味着拆分将由一个映射器处理,但并不意味着整个拆分将立即加载到内存中。因此拆分长度可能比运行映射器的 Tez 容器大小大得多。

作为一般准则,

Set Tez container size to be the same as or a small multiple(1 or 2 times that) of YARN container size yarn.scheduler.minimum-allocation-mbbut NEVER more than yarn.scheduler.maximum-allocation-mb. You want to haveheadroom for multiple containers to be spun up.

查看此 doc 中的更多详细信息.

关于hadoop - 关于输入分割长度的 Tez 容器大小估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64059236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com