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



推荐阅读
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • 本文介绍了Elasticsearch (ES),这是一个基于Java开发的开源全文搜索引擎。ES通过JSON接口提供服务,支持分布式集群管理和索引功能,特别适合大规模数据的快速搜索与分析。 ... [详细]
  • 解决getallheaders函数导致的500错误及8种服务器性能优化策略
    本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 从码农到创业者:我的职业转型之路
    在观察了众多同行的职业发展后,我决定分享自己的故事。本文探讨了为什么大多数程序员难以成为架构师,并阐述了我从一家外企离职后投身创业的心路历程。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
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社区 版权所有