Spark基础:第二章 spark集群安装
文章目录
spark-2.1.1-bin-hadoop2.7.tgz安装包 提取码:q6sc
------------>Spark guide<-------
一、运行模式
1. Local
用于本地开发
2. Standalone Spark
自带的资源调度框架,支持分布式搭建
3. Spark On YARN
Hadoop生态圈中的资源调度框架
4. Spark On Mesos
资源调度框架
5. 集群角色
① 从物理部署层面上来看
Master节点
- Master节点主要运行集群管理器的中心化部分,所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。
Worker节点
- Worker节点负责具体的业务运行。
② 从Spark程序运行的层面来看
驱动器节点
执行器节点
二、配置集群
- 机器准备:三台或以上机器,安装好JDK1.8和Hadoop2.7及以上版本。
1. 下载安装包
上传到Linux
(1) 解压安装包到/software下
tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz
(2) 删除原压缩包
rm -fr spark-2.1.1-bin-hadoop2.7.tgz
(3) 重命名安装包为spark
mv spark-2.1.1-bin-hadoop2.7.tgz spark
2. 修改配置文件
~/software/spark/conf
(1) slaves
将slaves.template复制为slaves
cp slaves.template slaves
Cloud02
Cloud03
(2) spark-env.sh
将spark-env.sh.template复制为spark-env.sh
SPARK_MASTER_HOST=Cloud01
SPARK_MASTER_PORT=7077
(3) 将配置好的spark文件拷贝到其他节点
scp slaves duck@Cloud02:~/software/spark/conf/
scp slaves duck@Cloud03:~/software/spark/conf/
scp spark-env.sh duck@Cloud02:~/software/spark/conf/
scp spark-env.sh duck@Cloud03:~/software/spark/conf/
3. 启动spark集群
./sbin/start-all.sh
4. 检测查看
(1) jps查看
(2) webui查看
Cloud01 : 8080
Cloud02 : 8081
Cloud03 : 8081
三、配置Job HistoryServer
1. 修改配置文件
将 spark-default.conf.template 复制为 spark-default.conf 并编辑修改,开启Log
spark.eventLog.enabled true
spark.eventLog.dir hdfs://Cloud01:9000/spark/test
spark.history.fs.logDirectory hdfs://Cloud01:9000/spark/test
spark.eventLog.compress true
2. 在HDFS上创建/spark/test文件夹
(开启HDFS,请参考全分布模式hdfs的启动)
参数描述:
- spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下;
- spark.history.fs.logDirectory=hdfs://Cloud01:9000/spark/test 配置了该属性后,在start-history-server.sh时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息。
3. 将配置好的spark文件拷贝到其他节点
(参考二2(3))
4. 重新启动spark集群
如果集群未关闭,建议先关闭再重新启动
~/software/spark/sbin/stop-all.sh
~/software/spark/sbin/start-all.sh
5. 启动historyServer
./sbin/start-history-server.sh
6. 检测查看
(1) jps查看
(2) webui查看
Cloud01 : 18080
Cloud02 : 18081
四、配置高可用Spark HA(high available)
- Master是JVM进程有可能挂掉,当Master挂掉之后,不能提交启动Driver,我们要搭建MasterHA。 解决单点故障问题,两个Master两个Worker - Master HA
- Spark集群规划:
Cloud01 | Cloud02 | Cloud03 |
---|---|---|
Master | Master、Worker | Worker |
1. 添加配置spark-env.sh
该配置文件中删掉SPARK_MASTER_HOST并添加
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=Cloud01:2181,Cloud02:2181,Cloud03:2181
-Dspark.deploy.zookeeper.dir=/sparkmaster0821"
2. 将配置文件同步到其他节点
3. 启动zookeeper集群
bin/zkServer.sh start
(请参考->zookeeper的启动)
4. 启动spark集群
./start-all.sh
5. 启动另一个Master
./start-master.sh
6. 检测查看
(1) jps查看
(2) webui查看
Cloud01 : 18080
Cloud02 : 18081
五、安装集群时遇到的问题
Q1: “JAVA_HOME not set” 异常
- 原因:java路径
- 解决:在sbin目录下的spark-config.sh 文件中加入如下配置:
export JAVA_HOME=XXXX
Q2:org.apache.hadoop.security.AccessControlException
-
原因:Hadoop HDFS的写入权限问题
-
解决:在hdfs-site.xml中添加如下配置,关闭权限验证
<property> <name>dfs.permissions</name> <value>false</value> </property>
Q3:jdk版本由1.7更换为1.8后依然显示1.7
-
描述:准备的虚拟机上的jdk是1.7的,于是将文件夹jdk删除,导入新的1.8版本解压缩,但是验证java -version的时候还是显示版本为1.7。
-
原因:直接删除压缩包之后,系统自动启用自带软连接的1.7版本jdk
-
解决:
(1) 先查看which java
进入cd /usr/bin
可以看到文件夹中
(2) 删除软连接
(3) 重新添加软连接sudo ln -s $JAVA_HOME/bin/java /usr/bin/java
(4) 检测javac路径,如果不对和上面修改步骤一样
- 扩展:
Linux文件系统中,所谓的链接(link),我们可以将其视为档案的别名,链接分两种 : 硬链接(hard link)与软链接(symbolic link)。
- 硬链接的意思是一个档案可以有多个名称。
- 而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
- 注意:在webui端查看时,使用主机名+端口号访问一定要在本地映射配置好的情况下才能访问成功。如果未配映射,可以直接用IP+端口号访问。