Spark+Zookeeper搭建高可用Spark集群
Spark三种分布式部署方式比较
目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN,详情参考。
Spark standalone模式分布式部署
环境介绍
主机名 | 应用 |
---|---|
tvm11 | zookeeper |
tvm12 | zookeeper |
tvm13 | zookeeper、spark(master)、spark(slave)、Scala |
tvm14 | spark(backup)、spark(slave)、Scala |
tvm15 | spark(slave)、Scala |
说明
-
依赖scala:
Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0. Support for Scala 2.10 was removed as of 2.3.0. Support for Scala 2.11 is deprecated as of Spark 2.4.1 and will be removed in Spark 3.0.
-
zookeeper: Master结点存在单点故障,所以要借助zookeeper,至少启动两台Master结点来实现高可用,配置方案比较简单。
安装scala
由上面的说明可知,spark对scala版本依赖较为严格,spark-2.4.5依赖scala-2.12.x,所以首先要安装scala-2.12.x,在此选用scala-2.12.10。使用二进制安装:
- 下载安装包
- 解压即用。
$ wget https://downloads.lightbend.com/scala/2.12.10/scala-2.12.10.tgz $ tar zxvf scala-2.12.10.tgz -C /path/to/scala_install_dir
如果系统环境也要使用相同版本的scala,可以将其加入到用户环境变量(.bashrc或.bash_profile
)。
安装spark
- 打通三台spark机器的work用户ssh通道;
- 现在安装包到master机器:tvm13;
- 下载地址
- 注意提示信息。
- 解压到安装目录即可。
配置spark
spark服务配置文件主要有两个:spark-env.sh和slaves。
- spark-evn.sh:配置spark运行相关环境变量
- slaves:指定worker服务器
配置spark-env.sh:cp spark-env.sh.template spark-env.sh
export JAVA_HOME=/data/template/j/java/jdk1.8.0_201 export SCALA_HOME=/data/template/s/scala/scala-2.12.10 export SPARK_WORKER_MEMORY=2048m export SPARK_WORKER_CORES=2 export SPARK_WORKER_INSTANCES=2 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=tvm11:2181,tvm12:2181,tvm13:2181 -Dspark.deploy.zookeeper.dir=/data/template/s/spark" # 关于 SPARK_DAEMON_JAVA_OPTS 参数含义: # -Dspark.deploy.recoverMode=ZOOKEEPER #代表发生故障使用zookeeper服务 # -Dspark.depoly.zookeeper.url=master.hadoop,slave1.hadoop,slave1.hadoop #主机名的名字 # -Dspark.deploy.zookeeper.dir=/spark #spark要在zookeeper上写数据时的保存目录 # 其他参数含义:https://blog.csdn.net/u010199356/article/details/89056304
配置slaves:cp slaves.template slaves
# A Spark Worker will be started on each of the machines listed below. tvm13 tvm14 tvm15
配置系统环境变量
编辑 ~/.bashrc
:
export SPARK_HOME=/data/template/s/spark/spark-2.4.5-bin-hadoop2.7 export PATH=$SPARK_HOME/bin/:$PATH
分发
以上配置完成后,将 /path/to/spark-2.4.5-bin-hadoop2.7
分发至各个slave节点,并配置各个节点的环境变量。
启动
- 先在master节点启动所有服务:
./sbin/start-all.sh
- 然后在backup节点单独启动master服务:
./sbin/start-master.sh
查看状态
启动完成后到web去查看:
- master(8081端口):Status: ALIVE
- backup(8080端口):Status: STANDBY
完成!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
go mod 错误"malformed module path"新发现
当项目出现"malformed module path ......: missing dot in first path element"错误时,网上说的解决办法有两种: 修改go.mod,添加replace 如果使用goland这个ide,修改配置 但是还有一种状况,用以上的方式都不能解决. 假设项目的目录结构如下: demo/main.go demo/a/1.go demo/b/c/2.go 强调一下,这时候/demo/b下,没有文件 也就是说,没有 package b如果这时候,在main.go或者1.go里,import "package demo/b/c"的话,就会出现"malformed module path"错误. 如果项目目录是如下: demo/main.go demo/a/1.go demo/b/3.go // 这里增加了一个文件 demo/b/c/2.go 这个时候,肯定就已经有package b了. 你会发现"malformed module path"错误没有了.
- 下一篇
HybridDB for MySQL数据库的3大应用场景
大数据存储与分析 传统的数据分析场景下,用户需要把数据从在线数据库(Operational Database)复制到离线数据仓库(Data Warehouse)上之后再进行数据分析,这需要海量数据的多次复制、传输、加载和存储等多方面工作。 HybridDB for MySQL(原名PetaData)是新型的HTAP(Hybrid Transaction/Analytical Processing)关系数据库,可以基于一份数据进行事务(OLTP)与分析(OLAP)混合处理,免去了在线数据库和离线数据仓库之间海量数据的复制、传输、加载和存储,降低存储成本的同时极大的缩短了数据分析的延迟,使得即席分析决策系统成为可能。 物联网 物联网有着数据采集点多、数据总量大、并发高的应用特点。在基于 MySQL 数据库的系统架构下,存放着设备信息的库表,往往需要使用分库分表和相应的数据分发技术才能承担业务流量。分库分表的设计不仅增加了数据库运维人员的管理难度,也让系统架构的扩展受到了很大的限制。 HybridDB for MySQL的分布式架构屏蔽了分库分表的细节,只对用户提供一个数据库连接地址和相应的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启