准备工作
下载地址
官网
下载页面有个Spark release archives,点击可以查看历史版本
我这里选择的是spark-2.4.5,由于我Hadoop选择的是2.7.7版本,所以下载的是spark-2.4.5-bin-hadoop2.7.tgz。
环境依赖
Spark-2.4.5依赖的java和scala版本分布为Java8和Scala 2.12。安装过程略。
我本机的版本:
集群规划
角色 | 节点 |
---|---|
Master | bigdata01,bigdata03 |
Salve | bigdata01,bigdata02,bigdata03,bigdata04 |
Spark HistoryServer | bigdata02 |
分布式高可用安装
上传安装包并解压到对应目录:
tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /home/bigdata/apps/
修改配置文件spark-env.sh:
[bigdata@bigdata01 apps]$ cd /home/bigdata/apps/spark-2.4.5-bin-hadoop2.7/conf
[bigdata@bigdata01 conf]$ ll
total 36
-rw-r--r-- 1 bigdata bigdata 996 Feb 3 2020 docker.properties.template
-rw-r--r-- 1 bigdata bigdata 1105 Feb 3 2020 fairscheduler.xml.template
-rw-r--r-- 1 bigdata bigdata 2025 Feb 3 2020 log4j.properties.template
-rw-r--r-- 1 bigdata bigdata 7801 Feb 3 2020 metrics.properties.template
-rw-r--r-- 1 bigdata bigdata 865 Feb 3 2020 slaves.template
-rw-r--r-- 1 bigdata bigdata 1292 Feb 3 2020 spark-defaults.conf.template
-rwxr-xr-x 1 bigdata bigdata 4221 Feb 3 2020 spark-env.sh.template
[bigdata@bigdata01 conf]$ mv spark-env.sh.template spark-env.sh
[bigdata@bigdata01 conf]$ vim spark-env.sh
在spark-env.sh后面添加如下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
# master端口
export SPARK_MASTER_PORT=7077
# 通过zk做高可用
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata01,bigdata02,bigdata03 -Dspark.deploy.zookeeper.dir=/spark"
配置slave信息:
[bigdata@bigdata01 conf]$ mv slaves.template slaves
[bigdata@bigdata01 conf]$ vim slaves
在slave后面添加如下内容:
bigdata01
bigdata02
bigdata03
bigdata04
拷贝hdfs的配置文件到这里的conf目录:
[bigdata@bigdata01 conf]$ cd /home/bigdata/apps/hadoop-2.7.7/etc/hadoop
[bigdata@bigdata01 hadoop]$ cp core-site.xml hdfs-site.xml /home/bigdata/apps/spark-2.4.5-bin-hadoop2.7/conf
把spark-2.4.5-bin-hadoop2.7分发到bigdata02、bigdata03、bigdata04服务器:
[bigdata@bigdata01 hadoop]$ cd /home/bigdata/apps
[bigdata@bigdata01 apps]$ scp -r spark-2.4.5-bin-hadoop2.7/ bigdata02:$PWD
[bigdata@bigdata01 apps]$ scp -r spark-2.4.5-bin-hadoop2.7/ bigdata03:$PWD
[bigdata@bigdata01 apps]$ scp -r spark-2.4.5-bin-hadoop2.7/ bigdata04:$PWD
配置环境变量:
[bigdata@bigdata01 apps]$ vim ~/.bashrc
在内容后面添加Spark配置信息:
export SPARK_HOME=/home/bigdata/apps/spark-2.4.5-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
配置生效:
[bigdata@bigdata01 apps]$ source ~/.bashrc
bigdata02、bigdata03、bigdata04服务器几个也需要如上配置。
启动spark集群,由于我们规划是bigdata01和bigdata03是Master,所以在这两个服务器分别执行:
# bigdata01执行
[bigdata@bigdata01 apps]$ $SPARK_HOME/sbin/start-all.sh
# bigdata03执行
[bigdata@bigdata03 ~]$ $SPARK_HOME/sbin/start-master.sh
jps查看,bigdata01、bigdata03具有Master和Worker两个节点,bigdata02、bigdata04只有Worker节点。
查看web页面:
bigdata01:http://bigdata01:8080/,可以看到4个worker,以及此时没有任务在跑。
bigdata03:http://bigdata03:8080/,可以看到这里没有worker信息,他的Status值是STANDBY
Spark HistoryServer安装
复制spark-defaults.conf
[bigdata@bigdata02 conf]$ cd /home/bigdata/apps/spark-2.4.5-bin-hadoop2.7/conf/
[bigdata@bigdata02 conf]$ cp spark-defaults.conf.template spark-defaults.conf
[bigdata@bigdata02 conf]$ vim spark-defaults.conf
在后面添加:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoopdajun/spark_historylog
重新编辑spark-env.sh文件
[bigdata@bigdata02 conf]$ vim spark-env.sh
在后面添加如下内容,用于配置日志路径以及web访问端口:
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://hadoopdajun/spark_historylog"
在Hadoop中添加上面的路径:
[bigdata@bigdata02 conf]$ hadoop fs -mkdir -p hdfs://hadoopdajun/spark_historylog
启动Spark HistoryServer,并查看jps,可以看到已经多了一个HistoryServer
[bigdata@bigdata02 conf]$ $SPARK_HOME/sbin/start-history-server.sh
starting org.apache.spark.deploy.history.HistoryServer, logging to /home/bigdata/apps/spark-2.4.5-bin-hadoop2.7/logs/spark-bigdata-org.apache.spark.deploy.history.HistoryServer-1-bigdata02.out
[bigdata@bigdata02 conf]$ jps
2368 QuorumPeerMain
4465 Jps
1699 JournalNode
4435 HistoryServer
3928 Worker
1529 NameNode
1596 DataNode
通过http://bigdata02:18080/访问,页面如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。