hadoop整合spark的安装与配置

书接上篇hadoop集群

由于服务器已经安装了hadoop集群,所以运行spark就用spark on yarn模式了,把资源调度交给yarn。

spark部署模式

安装spark

spark镜像

将spark安装包上传到/usr/local/

1
2
3
cd /usr/local
sudo tar -zvxf spark-3.2.1-bin-hadoop3.2.tgz
sudo mv spark-3.2.1-bin-hadoop3.2 /spark # 文件夹改名

配置

修改/usr/local/hadoop/etc/hadoop/yarn-site.xml

1
2
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
# 添加如下内容
1
2
3
4
5
6
7
8
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

修改spark配置文件

1
2
3
4
5
6
cd /usr/local/spark
vim conf/spark-env.sh
# 添加如下内容
JAVA_HOME=/usr/local/devtools/jdk-11.0.15.1 # jdk目录
HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop # hadoop配置目录
YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop

上传jar包到hdfs文件系统

1
2
3
4
cd /usr/local/spark
hadoop fs -mkdir /spark
hadoop fs -put ./jars /spark
# 时间较长耐心等待

运行测试

1
2
3
4
5
6
7
8
cd /usr/local/spark
# 运行命令
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.2.1.jar \
10

打开yarn ui即可看到运行结果

image-20220602112807551

点开程序查看日志即可看到结果

image-20220602112859137

常见问题总结

运行时一直上传文件,最后TimeOutException

运行examples的jar时一直上传依赖文件导致时间超时;把spark目录下的jars文件夹内所有jar包上传到hdfs文件系统即可。

spark提交自己上传的jar包时,ClassNotFoundException

jar文件没有目标class文件;idea中将项目编译一下再用maven打包即可:

image-20220602113819951