Part I - 文件清单
- spark-2.1.1-bin-hadoop2.7.tar
Part II - 下载链接
[Spark 下载链接]:http://spark.apache.org/downloads.html
Part III - 基于YARN的Spark集群分布式部署
在部署Hadoop后的基础上,进行以下操作。
总览,集群信息:
节点角色 | Master | Slave1 | Slave2 |
IP | 192.168.137.128 | 192.168.137.129 | 192.168.137.130 |
HostName | BlogMaster | BlogSlave1 | BlogSlave2 |
Spark | BolgMaster-YES | BlogSlave1-YES | BlogSlave2-YES |
Step 1: 解压spark安装包至指定的目录(/opt/cluster/)
[root@BlogMaster ~]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tar -C /opt/cluster
Step 2: 修改spark的两个配置文件(位于/opt/cluster/spark-2.1.1-bin-hadoop2.7/conf)
分别为:slaves和spark-env.sh。值得注意,在该目录下,两个文件并不存在,但存在同名但后缀为template的文件,故可以采用拷贝方式创建这两个文件。
- Step 2.1: 对于slave文件
首先,执行如下命令:
[root@BlogMaster conf]# cp slaves.template slaves
其次,进入新创建的slave文件,新添如下内容:
# A Spark Worker will be started on each of the machines listed below.
BlogSlave1
BlogSlave2
- Step 2.2: 对于spark-env.sh文件
首先,执行如下命令:
[root@BlogMaster conf]# cp spark-env.sh.template spark-env.sh
其次,进入新创建的spark-env.sh文件,在该文件末尾新添如下内容:
export SPARK_HOME=/opt/cluster/spark-2.1.1-bin-hadoop2.7
export JAVA_HOME=/opt/cluster/jdk1.8.0_181
export HADOOP_HOME=/opt/cluster/hadoop-2.8.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$YARN_HOME/etec/hadoop
export SPARK_MASTER_IP=BlogMaster
SPARK_LOCAL_DIRS=/opt/cluster/spark-2.1.1-bin-hadoop2.7
export SPARK_LIBRARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native
- Step 2.3: 分发BlogMaster的修改后完整spark文件至两台Slave节点
对于BlogSlave1
[root@BlogMaster cluster]# scp -r spark-2.1.1-bin-hadoop2.7/ BlogSlave1:$PWD
对于BlogSlave2
[root@BlogMaster cluster]# scp -r spark-2.1.1-bin-hadoop2.7/ BlogSlave2:$PWD
Part IV - Spark集群启动和运行状态监测
Step 1: 启动Spark集群
总体,将在BlogMaster节点依次启动HDFS,YARN和Spark集群。具体地,将分别执行如下命令:
[root@BlogMaster hadoop-2.8.4]# start-dfs.sh
[root@BlogMaster hadoop-2.8.4]# start-yarn.sh
[root@BlogMaster hadoop-2.8.4]# cd ..
[root@BlogMaster cluster]# cd spark-2.1.1-bin-hadoop2.7/
[root@BlogMaster spark-2.1.1-bin-hadoop2.7]# sbin/start-all.sh
考虑到Hadoop以及其内部包含的YARN集群,设置了全局环境变量,因此可以直接执行start-dfs.sh和start-yarn.sh两行命令。而spark集群的启动必须进入其安装目录,采用sbin/start-all.sh命令启动。
[root@BlogMaster hadoop-2.8.4]# start-dfs.sh
第一步: 在BlogMaster节点下,执行start-dfs.sh命令。
[root@BlogMaster hadoop-2.8.4]# start-dfs.sh
中间结果:
Starting namenodes on [BlogMaster]
BlogMaster: starting namenode, logging to /opt/cluster/hadoop-2.8.4/logs/hadoop-root-namenode-BlogMaster.out
BlogSlave2: starting datanode, logging to /opt/cluster/hadoop-2.8.4/logs/hadoop-root-datanode-BlogSlave2.out
BlogSlave1: starting datanode, logging to /opt/cluster/hadoop-2.8.4/logs/hadoop-root-datanode-BlogSlave1.out
Starting secondary namenodes [BlogSlave1]
BlogSlave1: starting secondarynamenode, logging to /opt/cluster/hadoop-2.8.4/logs/hadoop-root-secondarynamenode-BlogSlave1.out
第二步: 在BlogMaster节点下,执行start-yarn.sh命令。
[root@BlogMaster hadoop-2.8.4]# start-yarn.sh
中间结果:
starting yarn daemons
starting resourcemanager, logging to /opt/cluster/hadoop-2.8.4/logs/yarn-root-resourcemanager-BlogMaster.out
BlogSlave1: starting nodemanager, logging to /opt/cluster/hadoop-2.8.4/logs/yarn-root-nodemanager-BlogSlave1.out
BlogSlave2: starting nodemanager, logging to /opt/cluster/hadoop-2.8.4/logs/yarn-root-nodemanager-BlogSlave2.out
第三步: 在BlogMaster节点下,执行sbin/start-all.sh命令。
[root@BlogMaster hadoop-2.8.4]# cd ..
[root@BlogMaster cluster]# cd spark-2.1.1-bin-hadoop2.7/
[root@BlogMaster spark-2.1.1-bin-hadoop2.7]# sbin/start-all.sh
中间结果:
[root@BlogMaster spark-2.1.1-bin-hadoop2.7]# sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/cluster/spark-2.1.1-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-BlogMaster.out
BlogSlave1: starting org.apache.spark.deploy.worker.Worker, logging to /opt/cluster/spark-2.1.1-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-BlogSlave1.out
BlogSlave2: starting org.apache.spark.deploy.worker.Worker, logging to /opt/cluster/spark-2.1.1-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-BlogSlave2.out
[root@BlogMaster spark-2.1.1-bin-hadoop2.7]# jps
10789 NameNode
11080 ResourceManager
12104 Master
12170 Jps
Step 2: Spark集群正常运行状态—后台判断
在BlogMaster将产生Master进程,而在两台Slave节点将产生Worker进程。 具体如下:
BlogMaster节点:
[root@BlogMaster spark-2.1.1-bin-hadoop2.7]# jps
10789 NameNode
11080 ResourceManager
12104 Master
12170 Jps
BlogSlave1节点:
[root@BlogSlave1 hadoop]# jps
5873 DataNode
6050 NodeManager
6968 Worker
5930 SecondaryNameNode
7022 Jps
BlogSlave2节点:
[root@BlogSlave2 ~]# jps
5937 Jps
5162 DataNode
5263 NodeManager
5871 Worker
Step 3: Spark集群正常运行状态—网页查看
- Step 3.1: 通过BlogMaster:8080查看spark集群
- Step 3.2: 通过BlogMaster:8088查看算圆周率的作业
执行如下命令,提交spark作业。
[root@BlogMaster spark-2.1.1-bin-hadoop2.7]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client ./examples/jars/spark-examples_2.11-2.1.1.jar
以此方式进入web页面,查看刚提交的作业:
等待相对较长的时间,可以欣赏一首Alan Walker的The Spectre,enjoy…
大概2分钟后,再次通过此方式查看已结束的作业,结果如下:
运行结果查看,