BigDL-2.x在Hadoop/YARN集群上的部署与运行指南
前言
BigDL作为基于Apache Spark的分布式深度学习框架,能够充分利用Hadoop/YARN集群的计算资源进行大规模深度学习训练。本文将详细介绍如何在Hadoop/YARN环境中部署和运行BigDL-2.x应用程序,涵盖从环境准备到任务提交的完整流程。
环境要求
在开始之前,请确保您的环境满足以下要求:
- Hadoop版本:Apache Hadoop 2.7及以上(包括3.x版本)或CDH 5.x
- Python版本:3.7(推荐使用conda管理Python环境)
- JDK版本:8(推荐使用OpenJDK)
1. 环境准备
1.1 Python环境配置
首先需要在提交应用的本地机器上准备Python环境:
# 创建conda环境
conda create -n bigdl python=3.7
conda activate bigdl
# 安装BigDL
pip install bigdl
# 安装其他必要的Python依赖
1.2 JDK安装与配置
BigDL依赖Spark,而Spark需要JDK环境:
# Ubuntu系统安装示例
sudo apt-get install openjdk-8-jre
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
# CentOS系统安装示例
su -c "yum install java-1.8.0-openjdk"
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/jre
export PATH=$PATH:$JAVA_HOME/bin
java -version # 验证JDK版本
1.3 Hadoop配置
确保正确设置Hadoop配置目录环境变量:
export HADOOP_CONF_DIR=/path/to/hadoop/conf
1.4 CDH用户注意事项
如果使用CDH集群,需要注意:
- 取消所有Spark相关环境变量:
env | grep SPARK - CDH默认的HADOOP_CONF_DIR通常是
/etc/hadoop/conf
2. 使用内置函数运行在YARN上
这是最简单且推荐的方式,无需关心环境准备和Spark命令细节。
2.1 初始化Orca上下文
在代码开头初始化Orca上下文:
from bigdl.orca import init_orca_context
# 初始化YARN客户端模式
sc = init_orca_context(cluster_mode="yarn-client", cores=4, memory="10g", num_nodes=2)
# 或者初始化YARN集群模式
# sc = init_orca_context(cluster_mode="yarn-cluster", cores=4, memory="10g", num_nodes=2)
参数说明:
yarn-client:Spark驱动运行在提交节点yarn-cluster:Spark驱动运行在YARN集群随机节点
2.2 运行方式
Jupyter Notebook方式(仅支持yarn-client)
jupyter notebook --notebook-dir=./ --ip=* --no-browser
Python脚本方式(支持两种模式)
python script.py
3. 使用spark-submit运行在YARN上
如果需要更精细的控制,可以使用spark-submit方式。
3.1 打包Python环境
conda pack -o environment.tar.gz
3.2 编写Python脚本
脚本中初始化Orca上下文:
from bigdl.orca import init_orca_context
sc = init_orca_context(cluster_mode="spark-submit")
3.3 提交任务
设置环境变量:
export SPARK_HOME=/path/to/spark
export SPARK_VERSION="spark版本号"
export BIGDL_HOME=/path/to/bigdl
export BIGDL_VERSION="bigdl版本号"
YARN集群模式
${SPARK_HOME}/bin/spark-submit \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=environment/bin/python \
--conf spark.executorEnv.PYSPARK_PYTHON=environment/bin/python \
--jars ${BIGDL_HOME}/jars/bigdl-assembly-spark_${SPARK_VERSION}-${BIGDL_VERSION}-jar-with-dependencies.jar \
--master yarn \
--deploy-mode cluster \
--executor-memory 10g \
--driver-memory 10g \
--executor-cores 8 \
--num-executors 2 \
--archives environment.tar.gz#environment \
script.py
YARN客户端模式
${SPARK_HOME}/bin/spark-submit \
--conf spark.pyspark.driver.python=/path/to/python \
--conf spark.pyspark.python=environment/bin/python \
--jars ${BIGDL_HOME}/jars/bigdl-assembly-spark_${SPARK_VERSION}-${BIGDL_VERSION}-jar-with-dependencies.jar \
--master yarn \
--deploy-mode client \
--executor-memory 10g \
--driver-memory 10g \
--executor-cores 8 \
--num-executors 2 \
--archives environment.tar.gz#environment \
script.py
4. 使用bigdl-submit运行在YARN上
BigDL提供了专门的提交脚本简化操作。
4.1 打包Python环境
conda pack -o environment.tar.gz
4.2 编写Python脚本
from bigdl.orca import init_orca_context
sc = init_orca_context(cluster_mode="bigdl-submit")
4.3 提交任务
YARN集群模式
bigdl-submit \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=environment/bin/python \
--conf spark.executorEnv.PYSPARK_PYTHON=environment/bin/python \
--master yarn \
--deploy-mode cluster \
--executor-memory 10g \
--driver-memory 10g \
--executor-cores 8 \
--num-executors 2 \
--archives environment.tar.gz#environment \
script.py
YARN客户端模式
PYSPARK_PYTHON=environment/bin/python bigdl-submit \
--master yarn \
--deploy-mode client \
--executor-memory 10g \
--driver-memory 10g \
--executor-cores 8 \
--num-executors 2 \
--archives environment.tar.gz#environment \
script.py
总结
本文详细介绍了在Hadoop/YARN集群上运行BigDL-2.x的三种方式:
- 内置函数方式:最简单,适合快速开始
- spark-submit方式:提供更多控制选项
- bigdl-submit方式:BigDL专用提交脚本,简化操作
根据您的具体需求选择合适的方式,建议初次使用者从内置函数方式开始,熟悉后再尝试其他方式以获得更精细的控制。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



