(可选)内存借用
如果在启动参数中已经配置了堆外内存,请跳过本章节。如果因为特殊情况无法在启动参数中配置堆外内存,可以按照如下步骤操作。
- 复制parse_para.sh脚本到“${SPARK_HOME}/bin/”目录下。
- 修改parse_para.sh权限。
chmod 550 ${SPARK_HOME}/bin/parse_para.sh
- 打开spark-submit文件。
cd ${SPARK_HOME}/bin/ vi spark-submit
- 按“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
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 增加启动参数。
--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大小,无法使用内存借用特性。
- 如果原本参数中设置了spark.memory.offHeap.enabled为true,则无法开启内存借用,需修改此参数为false后再开启内存借用。
父主题: 执行Spark引擎业务