博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark(二)CentOS7.5之Spark2.3.1HA安装
阅读量:6956 次
发布时间:2019-06-27

本文共 6705 字,大约阅读时间需要 22 分钟。

一 下载安装包

1 官方下载

官方下载地址:

2  安装前提

  • Java8  安装成功
  • zookeeper  安装成功
  • hadoop  安装成功
  • Scala  安装成功

注意:从Spark2.0版开始,默认使用Scala 2.11构建。Scala 2.10用户应该下载Spark源包并构建 。

3  集群规划

节点名称  Zookeeper Master Worker
node21
QuorumPeerMain
主Master  
node22
QuorumPeerMain
备Master Worker
node23
QuorumPeerMain
  Worker

 

二 集群安装

1  解压缩

[admin@node21 software]$ tar zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /opt/module/[admin@node21 module]$ mv spark-2.3.1-bin-hadoop2.7 spark-2.3.1

2  修改配置文件

(1)进入配置文件所在目录

[admin@node21 ~]$ cd /opt/module/spark-2.3.1/conf/[admin@node21 conf]$ lltotal 36-rw-rw-r-- 1 admin admin  996 Jun  2 04:49 docker.properties.template-rw-rw-r-- 1 admin admin 1105 Jun  2 04:49 fairscheduler.xml.template-rw-rw-r-- 1 admin admin 2025 Jun  2 04:49 log4j.properties.template-rw-rw-r-- 1 admin admin 7801 Jun  2 04:49 metrics.properties.template-rw-rw-r-- 1 admin admin  870 Jul  4 23:50 slaves.template -rw-rw-r-- 1 admin admin 1292 Jun  2 04:49 spark-defaults.conf.template-rwxrwxr-x 1 admin admin 4861 Jul  5 00:25 spark-env.sh.template

(2)复制spark-env.sh.template并重命名为spark-env.sh

[admin@node21 conf]$ cp spark-env.sh.template spark-env.sh[admin@node21 conf]$ vi spark-env.sh

编辑并在文件末尾添加如下配置内容

#指定默认master的ip或主机名export SPARK_MASTER_HOST=node21  #指定maaster提交任务的默认端口为7077    export SPARK_MASTER_PORT=7077 #指定masster节点的webui端口       export SPARK_MASTER_WEBUI_PORT=8080 #每个worker从节点能够支配的内存数 export SPARK_WORKER_MEMORY=1g        #允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用核心)export SPARK_WORKER_CORES=1    #每个worker从节点的实例(可选配置) export SPARK_WORKER_INSTANCES=1   #指向包含Hadoop集群的(客户端)配置文件的目录,运行在Yarn上配置此项   export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop    #指定整个集群状态是通过zookeeper来维护的,包括集群恢复export SPARK_DAEMON_JAVA_OPTS="      -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node21:2181,node22:2181,node23:2181-Dspark.deploy.zookeeper.dir=/sparkmaster"

(3)复制slaves.template成slaves,并修改配置内容

[admin@node21 conf]$ cp slaves.template slaves[admin@node21 conf]$ vi slaves

修改从节点

node22node23

(4)将安装包分发给其他节点

[admin@node21 module]$ scp -r spark-2.3.1 admin@node22:/opt/module/[admin@node21 module]$ scp -r spark-2.3.1 admin@node23:/opt/module/

修改node22节点上conf/spark-env.sh配置的MasterIP为SPARK_MASTER_IP=node22

3  配置环境变量

所有节点均要配置

[admin@node21 spark-2.3.1]$ sudo vi /etc/profileexport  SPARK_HOME=/opt/module/spark-2.3.1export  PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin[admin@node21 spark-2.3.1]$ source /etc/profile

三 启动集群

1 启动zookeeper集群

所有zookeeper节点均要执行

[admin@node21 ~]$ zkServer.sh start

2 启动HDFS集群

[admin@node21 ~]$ start-dfs.sh[admin@node22 ~]$ start-yarn.sh [admin@node23 ~]$ yarn-daemon.sh start resourcemanager

3 启动Spark集群

启动spark:启动master节点:sbin/start-master.sh 启动worker节点:sbin/start-slaves.sh

或者:sbin/start-all.sh

[admin@node21 spark-2.3.1]$ sbin/start-all.shstarting org.apache.spark.deploy.master.Master, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.master.Master-1-node21.outnode22: starting org.apache.spark.deploy.worker.Worker, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.worker.Worker-1-node22.outnode23: starting org.apache.spark.deploy.worker.Worker, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.worker.Worker-1-node23.out

注意:备用master节点需要手动启动

[admin@node22 spark-2.3.1]$ sbin/start-master.sh starting org.apache.spark.deploy.master.Master, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.master.Master-1-node22.out

4 查看进程

[admin@node21 spark-2.3.1]$ jps1316 QuorumPeerMain3205 Jps3110 Master1577 DataNode1977 DFSZKFailoverController1788 JournalNode2124 NodeManager[admin@node22 spark-2.3.1]$ jps1089 QuorumPeerMain1233 DataNode1617 ResourceManager1159 NameNode1319 JournalNode1735 NodeManager3991 Master4090 Jps1435 DFSZKFailoverController3918 Worker[admin@node23 spark-2.3.1]$ jps1584 ResourceManager1089 QuorumPeerMain1241 JournalNode2411 Worker1164 DataNode1388 NodeManager2478 Jps

四 验证集群HA

1 看Web页面Master状态

node21是ALIVE状态,node22为STANDBY状态,WebUI查看:

从节点连接地址:

2 验证HA的高可用

手动干掉node21上面的Master进程,node21:8080无法访问,node22:8080状态如下,Master状态成功自动进行切换。

 

3 HA注意点 

  • 主备切换过程中不能提交Application。
  • 主备切换过程中不影响已经在集群中运行的Application。因为Spark是粗粒度资源调度。

五 配置历史服务器

1 临时配置

对本次提交的应用程序起作用

./spark-shell --master spark://node21:7077 --name myapp1--conf spark.eventLog.enabled=true--conf spark.eventLog.dir=hdfs://node21:8020/spark/test

停止程序,在Web Ui中Completed Applications对应的ApplicationID中能查看history。

2  永久配置

spark-default.conf配置文件中配置HistoryServer,对所有提交的Application都起作用

在客户端节点,进入../spark-2.3.0/conf/ spark-defaults.conf最后加入:

//开启记录事件日志的功能spark.eventLog.enabled          true//设置事件日志存储的目录spark.eventLog.dir              hdfs://node21:8020/spark/test//设置HistoryServer加载事件日志的位置spark.history.fs.logDirectory   hdfs://node21:8020/spark/test//日志优化选项,压缩日志spark.eventLog.compress         true

启动HistoryServer:

./start-history-server.sh

访问HistoryServer:node21:18080,之后所有提交的应用程序运行状况都会被记录。

六 故障问题

1 Worker节点无法启动

[admin@node21 spark-2.3.1]$ sbin/start-all.sh starting org.apache.spark.deploy.master.Master, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.master.Master-1-node21.outnode23: starting org.apache.spark.deploy.worker.Worker, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.worker.Worker-1-node23.outnode22: starting org.apache.spark.deploy.worker.Worker, logging to /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.worker.Worker-1-node22.outnode23: failed to launch: nice -n 0 /opt/module/spark-2.3.1/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 --port 7078 spark://node21:7077node23: full log in /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.worker.Worker-1-node23.outnode22: failed to launch: nice -n 0 /opt/module/spark-2.3.1/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 --port 7078 spark://node21:7077node22: full log in /opt/module/spark-2.3.1/logs/spark-admin-org.apache.spark.deploy.worker.Worker-1-node22.out

由于之前在conf/spark-env.sh里配置了如下信息

#每个worker从节点的端口(可选配置)       export SPARK_WORKER_PORT=7078       #每个worker从节点的wwebui端口(可选配置)  export SPARK_WORKER_WEBUI_PORT=8081

可能是由于端口问题去掉上述两项配置,重启成功。

2 启动Spark on YARN报错

Caused by: java.net.ConnectException: Connection refused

[admin@node21 spark-2.3.1]$ spark-shell --master yarn --deploy-mode client

报错原因:内存资源给的过小,yarn直接kill掉进程,则报rpc连接失败、ClosedChannelException等错误。

解决方法:

先停止YARN服务,然后修改yarn-site.xml,增加如下内容

yarn.nodemanager.vmem-check-enabled
false
yarn.nodemanager.vmem-pmem-ratio
4

将新的yarn-site.xml文件分发到其他Hadoop节点对应的目录下,最后在重新启动YARN。 

重新执行以下命令启动spark on yarn,启动成功

转载于:https://www.cnblogs.com/dupengfei-summer/p/9304553.html

你可能感兴趣的文章
洛谷2142高精度减法(模板)
查看>>
First Missing Positive && missing number
查看>>
SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 4)
查看>>
10条设计师应该知道的字体设置技巧
查看>>
Mac Brew Uninstall MySql
查看>>
LeetCode刷题笔记-回溯法-分割回文串
查看>>
Serv-U和win2003防火墙的设置
查看>>
【网摘】ActiveX组件及其注册
查看>>
Bootstrap网格系统(Grid System)
查看>>
linux内核参数优化
查看>>
Utils工具方法集插件详解
查看>>
Windows Server定时执行bat
查看>>
Linux RTC Test Example rtctest.c hacking
查看>>
Linux C enum
查看>>
递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
查看>>
字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码
查看>>
物件捆绑 背包问题 动态规划 求解
查看>>
finish
查看>>
查看系统信息msinfo32工具的使用
查看>>
iso系统镜像刻录到光盘和U盘
查看>>