热门标签 | 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



推荐阅读
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Kafka Topic 数据管理与清理策略
    本文探讨了在生产环境中如何有效管理和定期清理Kafka Topic中的数据。介绍了基于时间、日志大小和日志起始偏移量三种清除方式,并重点讲解了基于时间的清除策略及其配置方法。 ... [详细]
  • 深入理解Quartz:Java定时任务框架详解
    Quartz是一个功能强大的调度库,适用于各种规模的应用程序。本文将详细介绍Quartz的基本概念、配置方法以及如何在Java项目中使用Quartz来管理定时任务。 ... [详细]
  • 本文介绍了如何在Ubuntu 16.04系统上配置Nginx服务器,以便能够通过网络访问存储在服务器上的图片资源。这解决了在网页开发中需要使用自定义在线图标的需求。 ... [详细]
  • 本文详细介绍了SSH(Secure Shell)的基础知识、应用场景以及如何在不同平台上使用SSH进行安全的远程操作。文章还探讨了SSH的高级用法,如免密登录和其他安全增强措施。 ... [详细]
  • 本文详细介绍了如何通过Git Bash在本地仓库与远程仓库之间建立连接并进行同步操作,包括克隆仓库、提交更改和推送更新等步骤。 ... [详细]
  • Windows 环境下安装 Git 并连接 GitHub 的详细步骤
    本文详细介绍了如何在 Windows 系统中安装 Git 工具,并通过配置 SSH 密钥实现与 GitHub 的安全连接。包括下载、安装、环境配置及验证连接等关键步骤。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • Linux环境下Git安装及常见问题解析
    本文详细介绍了在Ubuntu系统中安装Git的过程,包括环境检查、软件安装、用户配置以及SSH密钥生成等步骤,并针对安装过程中可能出现的问题提供了有效的解决方案。 ... [详细]
  • 前言Git是目前最流行的版本控制系统,在它的基础之上,GitHub和GitLab成为当前最流行的代码托管平台,它们均提供的代码评审、项目管理、持续集成等功能,越来越多的互联网企业都 ... [详细]
  • 本文介绍了MySQL数据库的安全权限管理思想及其制度流程,涵盖从项目开发、数据库更新到日常运维等多个方面的详细流程控制,旨在通过严格的流程管理和权限控制,有效预防数据安全隐患。 ... [详细]
  • 1整合dubbo1.1e3-manager-Service1.1.1pom.xml排除jar在e3-manager-Service工程中添加dubbo依赖的jar包。 ... [详细]
  • 本文详细介绍了 Apache ZooKeeper 的 FileTxnLog 类中的 setPreallocSize 方法,并提供了多个实际应用中的代码示例。通过这些示例,读者可以更好地理解如何在不同场景下合理设置日志文件的预分配大小。 ... [详细]
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社区 版权所有