鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

(可选)内存借用

如果在启动参数中已经配置了堆外内存,请跳过本章节。如果因为特殊情况无法在启动参数中配置堆外内存,可以按照如下步骤操作。

  1. 复制parse_para.sh脚本到“${SPARK_HOME}/bin/”目录下。
  2. 修改parse_para.sh权限。
    chmod 550 ${SPARK_HOME}/bin/parse_para.sh
  3. 打开spark-submit文件。
    cd ${SPARK_HOME}/bin/
    vi spark-submit
  4. “i”进入编辑模式,替换最后一行内容。
    exec 3< <(bash "${SPARK_HOME}/bin/parse_para.sh" "$@")
    mapfile -t new_args <&3
    pid=$!
    wait $pid
    ret=$?
    if [  $ret -eq 2 ]; then
            exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "$@"
    else
            exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "${new_args[@]}"
    fi
  5. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  6. 增加启动参数。
    --conf spark.omni.enableBorrow=true --conf spark.omni.borrowMemory.Fraction=90
    表1 参数说明

    参数名称

    默认值

    参数说明

    spark.omni.enableBorrow

    false

    控制内存借用特性是否开启。true表示开启内存借用特性,false表示关闭内存借用特性。

    spark.omni.borrowMemory.Fraction

    90

    堆外借用堆内内存的比例,默认为90%。如果运行时报错堆内内存不足,则减小此参数。如果运行时报错堆外内存不足,则增大此参数。

    • 如果原本参数中设置了spark.memory.offHeap.enabled为true,则无法开启内存借用,需修改此参数为false后再开启内存借用。
      --conf spark.memory.offHeap.enabled=false
    • 不支持读取spark-default.conf文件中的executor-memory。
    • 如果原本参数中未配置executor-memory大小,无法使用内存借用特性。