spark搭建
-
继续使用上次搭建hadoop
-
scala安装:https://downloads.lightbend.com/scala/2.12.12/scala-2.12.12.tgz
# 解压
tar -zxvf scala-2.12.12.tgz
# 配置环境变量
vi /etc/profile
export SCALE_HOME=/root/scale/scala-2.12.12
export PATH=$PATH:$SCALE_HOME/bin
- 修改hadoop yarn-site.yml配置
# 是否启用一个线程检查每个任务证使用的物理内存量,如果任务超出了分配值,则直接将其kill,默认是true
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
# 是否启用一个线程检查每个任务证使用的虚拟内存量,如果任务超出了分配值,则直接将其kill,默认是true。
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
其他相关配置:
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
# 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
<property>
<name>yarn.resourcemanager.address</name>
<value>rmaster:8032</value>
</property>
# 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>rmaster:8030</value>
</property>
# esourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>rmaster:8035</value>
</property>
# ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>rmaster:8033</value>
</property>
# ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>rmaster:8088</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://10.0.2.19:8040/jobhistory/logs</value>
</property>
- 发送linux02,linux04服务
scp -r yarn-site.xml linux04:$PWD
scp -r yarn-site.xml linux02:$PWD
- spark安装
# 解压
[root@linux01 ~]# tar -zxvf spark-2.4.8-bin-hadoop2.7.tgz
# cd 到配置文件 /root/spark-2.4.8-bin-hadoop2.7/conf
- 修改spark配置: /root/spark-2.4.8-bin-hadoop2.7/conf目录下
[root@linux01 conf]# cp spark-env.sh.template spark-env.sh
[root@linux01 conf]# vi spark-env.sh
# 配置Spark集群的Master端口
export SPARK_MASTER_PORT=7077
# cpu
export SPARK_WORKER_CORES=1
# 内存
export SPARK_WORKER_MEMORY=1G
export JAVA_HOME=/usr/local/java/jdk1.8.0_281/
# 配置Spark集群的Master地址
export SPARK_MASTER_HOST=linux01
# Master重新启动的模式
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=linux01:2181,linux02:2181,linux03:2181,linux04:2181 -Dspark.deploy.zookeeper.dir=/spark_save_zk"
# 有三种:(1)ZooKeeper (2) FileSystem (3)NONE
spark.deploy.zookeeper.url:ZooKeeper的Server地址
spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。
包括Worker,Driver和Application。
- 日志配置
[root@linux01 conf]# cp log4j.properties.template log4j.properties
[root@rlinux01 conf]# vi log4j.properties # 将日志的INFO改为WARN
- slave配置
[root@linux01 conf]# cp slaves.template slaves
[root@linux01 conf]# vi slaves
linux02
linux04
- 环境变量配置一波
[root@linux01/02/04 conf]# vim /etc/profle
export SCALE_HOME=/opt/scala-2.12.12
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin
[root@linux01/02/04 conf]# source /etc/profle
- 启动项目:
[root@linux01 sbin]# ./start-all.sh
- 停止
[root@linux01 sbin]# ./stop-all.sh
- 验证
# 进入zookeeper
[zk: localhost:2181(CONNECTED) 0] ls /
# 可以看到 spark_save_zk, 高可用配置OK
# demo运行:
bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://linux01:7077
--executor-memory 1G
--total-executor-cores 1
examples/jars/spark-examples_2.11-2.4.8.jar
10
-
登陆web ui : http://10.0.0.155:8080/
-
spark提交任务到yarn
# 在spark-env.sh 注释掉 SPARK_MASTER_HOST SPARK_MASTER_PORT
# 添加
YARN_CONF_DIR=/root/hadoop/etc/hadoop
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://linux01:9000/logs # 新建logs
-Dspark.history.retainedApplications=30"
- 验证 /root/spark-2.4.8-bin-hadoop2.7
[root@linux01 spark-2.4.8-bin-hadoop2.7]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --executor-memory 1G --total-executor-cores 1 examples/jars/spark-examples_2.11-2.4.8.jar 10