热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

构建高可用性Spark分布式集群:大数据环境下的最佳实践

在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用`ssh-keygen-trsa`命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的`~/.ssh/authorized_keys`文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。

免密登录配置

1 所有节点生成密钥

ssh-keygen -t rsa# 一直回车,使用默认配置#根目录查看.ssh文件ls -atrl

.ssh文件夹目录说明:

id_rsa:私钥

id_rsa.pub:公钥

2 主节点生成认证文件

cat .ssh/id_rsa.pub >> .ssh/authorized_keys#认证文件authorized_keys保存所有节点的公钥#221-223do i in {1..2}; ssh 192.168.23.22$i cat .ssh/id_rsa.pub >> .ssh/authorized_keys;done#216ssh 192.168.23.216 cat .ssh/id_rsa.pub >> .ssh/authorized_keys;#将认证文件复制到所有节点do i in {1..2}; scp .ssh/authorized_keys pjb@192.168.23.22$i:/home/pjb/.ssh/authorized_keysdone#216scp .ssh/authorized_keys pjb@192.168.23.216:/home/pjb/.ssh/authorized_keys

3 所有节点授权

#授权chmod -R 700 .sshchmod -R 600 .ssh/authorized_keys# 验证ssh 192.168.23.222

zookeeper集群搭建

1 下载

zookeeper官网:https://zookeeper.apache.org/releases.html

zookeeper安装包:apache-zookeeper-3.5.7-bin.tar.gz

2 上传服务器

将zookeeper安装包上传到各个节点:192.168.23.221-223

3 安装

1)准备工作

#解压tar -zxvf apache-zookeeper-3.5.7-bin.tar.gzcd apache-zookeeper-3.5.7-bin#创建数据和日志目录mkdir datamkdir logs#复制生成zoo.cfg文件cd confcp zoo_sample.cfg zoo.cfg

2)修改zoo.cfg文件

#数据和日志目录dataDir=/home/pjb/bigdata/apache-zookeeper-3.5.7-bin/datadataLogDir=/home/pjb/bigdata/apache-zookeeper-3.5.7-bin/logs#所有节点server.1=KUD01:2888:3888server.2=KUD02:2888:3888server.3=KUD03:2888:3888

3)创建myid文件

根据zoo.cfg中各个节点配置myid信息,即:server.myid编号,在各个节点的data目录下创建myid文件

#在192.168.23.221cd /home/pjb/bigdata/apache-zookeeper-3.5.7-bin/dataecho 1 >> myid#192.168.23.222,192.168.23.223分别是:echo 2 >> myid,echo 3 >> myid

4)启动

在各个节点执行

cd /home/pjb/bigdata/apache-zookeeper-3.5.7-bin/bin#启动zookeeper./zkServer.sh start#查看集群状态./zkServer.sh status#1个主节点,2个从节点#1台: Mode: leader 2台:Mode: follower

spark集群规格
0f4f188f46d669cc02547aa86c058979.png

spark集群规格

1 下载

spark官网:http://spark.apache.org/

spark安装包:spark-2.4.5-bin-hadoop2.7.tgz

2 安装配置

1)修改spark-env.sh文件

export JAVA_HOME=/usr/java/jdk1.8.0_172#SPARK_MASTER_HOST=192.168.23.221#PARK_MASTER_PORT=7077export SPARK_DAEMON_JAVA_OPTS="  -Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=KUD01,KUD02,KUD03   -Dspark.deploy.zookeeper.dir=/spark-info"

2)将spark-env.sh复制到其他所有节点

3)启动主节点(192.168.23.221)

cd /home/pjb/bigdata/spark-2.4.5-bin-hadoop2.7/sbin./start-all.sh

4)启动备份主节点(192.168.23.216)

cd /home/pjb/bigdata/spark-2.4.5-bin-hadoop2.7/sbin./start-master.sh

5)验证

主节点:http://192.168.23.221:8080/

b50a4997ca062dbcc786499464b80113.png

spark管理页面

备份主节点:http://192.168.23.216:8080/

b6712c0df2e4af8c8b095b4ee153d091.png

spark管理页面

提交一个spark应用到spark集群运行

cd /home/pjb/bigdata/spark-2.4.5-bin-hadoop2.7./bin/spark-submit --master spark://KUD01:7077,HSlave02:7077 --class org.apache.spark.examples.SparkPi --executor-memory 2048mb --total-executor-cores 12 examples/jars/spark-examples_2.11-2.4.5.jar 1000

--executor-memory 每个executor使用的内存大小

--total-executor-cores 整个app使用的核数

运行spark shell

spark-shell是一个交互式的命令行,里面可以写spark程序,方便学习和测试,它也是一个客户端,用于提交spark应用程序

1 local模式

/bigdata/spark-2.4.5-bin-hadoop2.7/bin/spark-shell

上面的方式没有指定master的地址,即用的是spark的local模式运行的(模拟的spark集群运行的过程)

2 集群模式

/bigdata/spark-2.4.5-bin-hadoop2.7/bin/spark-shell --master spark://KUD01:7077,192.168.23.216:7077

上面是指定了master的地址,那么就会将任务提交到集群,开始时sparksubmit(客户端)要连接Master,并申请计算资源(内存和核数),Master进行资源调度(就是让那些Worker启动Executor),在准备工作时,这些进程都已经创建好了

ed22d1024c758d9600a737d26fc4537a.png

spark-shell

3 完成WordCount

sc.textFile("hdfs://KUD01:9000/spark/test").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect



推荐阅读
author-avatar
xuzhaotong
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有