这篇文章是在hadoop的基础上集成spark,关于hadoop环境的搭建可以参考我之前的博文https://blog.csdn.net/wbo112/article/details/124654197?spm=1001.2014.3001.5501
本次使用的是
spark-3.3.1-bin-hadoop3.tgz
ip | 主机名 |
---|---|
192.168.68.121 | hadoop1 |
192.168.68.122 | hadoop2 |
192.168.68.123 | hadoop3 |
后续web 界面访问有可能直接是机器名,所以需要把IP与主机 加到本地hosts文件中
解压spark-3.3.1-bin-hadoop3.tgz
到目录下
进入解压后的目录/home/hadoop/software/spark-3.3.1-bin-hadoop3
执行spark自带计算圆周率示例代码
在spark目录中执行如下代码
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.3.1.jar \
10
输出日志中有这么一句Spark web UI at http://hadoop1:4040
,在spark程序运行中可以看到任务运行的各种状态(spark任务结束前面的web-ui地址也就打不开了)。
上面的示例是scala
版本的示例,源码在/home/hadoop/software/spark-3.3.1-bin-hadoop3/examples/src/main/scala/org/apache/spark/examples
spark-yarn
解压spark-3.3.1-bin-hadoop3.tgz
到目录下到/home/hadoop/software/spark-yarn/
目录下
在spark-yarn配置文件中增加
执行如下命令
/home/hadoop/software/spark-yarn/spark-3.3.1-bin-hadoop3/conf
进入spark配置文件目录
cp spark-env.sh.template spark-env.sh
复制模板配置文件
修改spark-env.sh
增加如下内容
YARN_CONF_DIR=/home/hadoop/software/hadoop-3.2.3/etc/hadoop #注意,这是hadoop目录
再次进入就可以将任务在yarn上运行
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
./examples/jars/spark-examples_2.12-3.3.1.jar \
10
进入yarn
的web-ui
yarn也能看到执行记录
再次进入``/home/hadoop/software/spark-yarn/spark-3.3.1-bin-hadoop3/conf`
执行如下命令
cp spark-defaults.conf.template spark-defaults.conf
配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop1:9000/directory #这个是hdfs的地址,目录不存在,要手动创建
spark.yarn.historyServer.address=hadoop1:19889 #这个端口是spark的端口,必须没被占用
spark.history.ui.port=19889 #这个端口是spark的端口,必须没被占用
再次进入spark-env.sh
配置历史服务器信息,参数信息同上
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=19888
-Dspark.history.fs.logDirectory=hdfs://hadoop1:10020/directory
-Dspark.history.retainedApplications=30" #指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
再次回到/home/hadoop/software/spark-yarn/spark-3.3.1-bin-hadoop3/
目录执行如下命令,启动历史服务器
sbin/start-history-server.sh
.
再次执行
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
./examples/jars/spark-examples_2.12-3.3.1.jar \
10
再次进入yarn的web-ui,找到上面任务的历史执行记录。
点击这里的History
,就会进入我们刚才配置的spark的历史任务的web-ui界面。如我本地是Spark Pi - Spark Jobs http://hadoop1:19889/history/application_1723817139150_0002/jobs/,就能看到spark执行信息。