spark部署,standalone,ha,配置历史服务器

spark集群安装之前需要满足如下条件:

  1. 集群主机名和hosts文件映射一一对应
  2. 集群ssh免密登录配置
  3. 集群每个节点防火墙关闭
  4. JDK正确安装
  5. Scala正确安装
  6. Hadoop集群安装,因为Spark存储层要用到HDFS,所以应该至少保证HDFS服务的正常运行
    集群环境:3节点,node01,node02,node03.

standalone模式

下载,解压spark,我用的是spark-2.1.3-bin-2.6.0-cdh5.14.0版本,在node01上进行操作,安装目录:/export/servers.tar -zxvf spark-2.1.3-bin-2.6.0-cdh5.14.0 -C /export/servers进入到spark的conf目录下,修改slaves文件和 spark-env.sh文件
cd /export/servers/spark-2.1.3-bin-2.6.0-cdh5.14.0/conf cp slaves.template slaves cp spark-env.sh.template spark-env.sh
修改slaves,添加worker任务节点vim slaves #添加worker节点 node02 node03
修改spark-env.sh,添加配置项

vim spark-env.sh
#配置java环境变量
export JAVA_HOME=/export/servers/jdk1.8.0_141
#指定spark Master的IP
export SPARK_MASTER_HOST=bdata05
#指定spark Master的端口
export SPARK_MASTER_PORT=7077
#scala 环境变量
export SCALA_HOME=/export/servers/scala-2.11.8
#hadoop的配置文件目录
export HADOOP_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

将spark文件夹分发到node02,node03节点上

scp -r spark-2.1.3-bin-2.6.0-cdh5.14.0 node02:$PWD
scp -r spark-2.1.3-bin-2.6.0-cdh5.14.0 node03:$PWD

在node01节点上启动spark,在spark主目录下启动cd /export/servers/spark-2.1.3-bin-2.6.0-cdh5.14.0 sbin/start-all.sh查看状态,就可以确认启动成功了.
主节点启动成功
worker节点启动陈功
启动过程中如果报JAVA_HOME not set,参见另一篇博客java_home not set 解决

配置历史服务器

spark的历史服务配置,需要修改hadoop的hdfs-site.xml和yarn-site.xml文件

#修改hdfs-site.xml
#添加如下配置
<!-- 关闭hdfs的文件权限 -->
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
#修改yarn-site.xml
#添加如下配置
<property>
     <name>yarn.log-aggregation-enable</name>
     <value>true</value>
 </property>

进入到spark的conf目录,修改spark-defaults.conf和spark-env.sh文件

cd /export/servers/spark-2.1.3-bin-2.6.0-cdh5.14.0/conf 
cp spark-defaults.conf.template spark-defaults.conf 
vim spark-defaults.conf 
#添加如下配置
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node01:8020/spark/history
#保存退出
#编辑spark-env.sh
vim spark-env.sh
#添加如下配置
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node01:8020/spark/history -Dspark.history.retainedApplications=3 -Dspark.history.ui.port=18080"

注意:在启动sparkhistoryserver之前需要在hdfs上建好spark/history目录.
参数描述:
spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下;
spark.history.ui.port=18080 WEBUI访问的端口号为18080
spark.history.fs.logDirectory=hdfs://node01:8020/spark/history 配置了该属性后,在start-history-server.sh时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息
spark.history.retainedApplications=3 指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
将配置好的spark文件拷贝到其他节点上,启动sparkhistoryserver,在spark目录下启动.sbin/start-history-server.sh
spark history server

定时删除sparkhistory任务

随着任务的运行,sparkhistory越来越大,需要定时清除sparkhistory文件,进入spark的conf目录,编辑spark-defaults.conf文件

cd /export/servers/spark-2.1.3-bin-2.6.0-cdh5.14.0/conf
vim spark-defaults.conf
#添加如下配置
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 1d
spark.history.fs.cleaner.maxAge 7d

参数说明
spark.history.fs.cleaner.enabled:指定history-server的日志是定时清除.
spark.history.fs.cleaner.interval:指定history-server的日志检查间隔,默认每一天会检查一下日志文件
spark.history.fs.cleaner.maxAge:指定history-server日志生命周期,当检查到某个日志文件的生命周期为7d时,则会删除该日志文件
分发到各个节点,重新启动spark history server就好了.

spark ha搭建

在实际生产中,需要搭建ha服务,防止单点故障的情况发生.spark ha搭建需要借助Zookeeper,并且至少启动两个master来实现ha,配置方式比较简单.在spark的conf目录下,编辑spark-env.sh文件

cd /export/servers/spark-2.1.3-bin-2.6.0-cdh5.14.0/conf 
vim spark-env.sh
#注释掉master host
#export SPARK_MASTER_HOST=node01
#添加新的内容
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181  -Dspark.deploy.zookeeper.dir=/spark"
#将内容分发到其他两台机器
scp spark-env.sh node02:$PWD
scp spark-env.sh node02:$PWD

在node01上启动sbin/start-all.sh,在node02节点上启动sbin/start-master.sh 打开网页输入node01:8080 ,输入node02:8080 ,注意:输入node01,node02,需要在hosts文件配置映射.
active master
standly master
观察到 一个active master,一个standby master.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值