spark3.0教程:yarn模式部署(spark-3.0.0-bin-hadoop)

介绍

依赖 yarn 资源调度,这种部署目前最为广泛

spark with hadoop 版本

使用 spark with hadoop 版本,可以方便的部署 Spark on Hive

缺点: 本教程使用 hadoop 是 3.0.3,而 spark-3.0.0 自带的 hadoop 是 3.2 版本,hadoop 版本不一致,但基本不影响使用

与 without hadoop 版本 比较

如果使用 without hadoop 版本,部署时会 额外增加很多 jar 包,否则无法运行

安装

上传到linux

登录 hadoop1,上传 spark-3.0.0-bin-hadoop3.2.tgz 到 /program 目录下

解压缩

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz --no-same-owner

修改文件名

mv spark-3.0.0-bin-hadoop3.2 spark-3.0.0

修改 yarn-site.xml

修改 hadoop 配置文件 $HADOOP_HOME/etc/hadoop/yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

增加下面内容:

<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

同步到 hadoop2

rsync -av /program/hadoop-3.0.3/etc/hadoop/  root@hadoop2:/program/hadoop-3.0.3/etc/hadoop/

同步到 hadoop3

rsync -av /program/hadoop-3.0.3/etc/hadoop/  root@hadoop3:/program/hadoop-3.0.3/etc/hadoop/

重启hadoop

停止:

/program/bin/hadoop.sh stop

启动:

/program/bin/hadoop.sh start

配置环境变量

vim /etc/profile.d/bigdata_env.sh

增加下面内容:

export SPARK_HOME=/program/spark-3.0.0
export PATH=${SPARK_HOME}/bin:$PATH

立即生效

source /etc/profile

测试

echo $SPARK_HOME

创建 spark-env.sh

cd /program/spark-3.0.0/conf/

根据模板复制 spark-env.sh 文件:

cp spark-env.sh.template spark-env.sh

编辑文件:

vim spark-env.sh

在末尾添加下面内容:

export JAVA_HOME=/program/jdk1.8.0_202
export HADOOP_CONF_DIR=/program/hadoop-3.0.3/etc/hadoop
export YARN_CONF_DIR=/program/hadoop-3.0.3/etc/hadoop
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

解释:

  • JAVA_HOME:必须 指定 java 绝对路径,否则可能会报错

  • 指定 HADOOP_CONF_DIR 配置目录,可以读取 HDFS 集群相关的配置

  • 指定 YARN_CONF_DIR 配置目录,可以读取 YARN 集群相关的配置

  • 由于是 without-hadoop 版本,所以需要指定 SPARK_DIST_CLASSPATH 否则找不到 hadoop jar包

  • LD_LIBRARY_PATH:详见 链接

重启hadoop(可略)

停止:

/program/bin/hadoop.sh stop

启动:

/program/bin/hadoop.sh start

原文出处:/show_1IX4QF6kckQ0.html