铁佛 发表于 2025-1-2 21:03:49

Hadoop 与 Zookeeper 集群搭建

一、Hadoop与Zookeeper介绍

(1)Hadoop

Hadoop 是一个分布式系统基础架构,由 Apache 基金会开发,旨在处理大规模数据集。它主要包含以下两个核心组件:


[*]Hadoop 分布式文件系统(HDFS):一种分布式文件系统,可以或许将大文件切分成多个块,并存储在集群中的不同节点上。具有高容错性、高吞吐量等特点,恰当大规模数据的存储。比方,在一个大型互联网公司中,天天产生的海量用户行为数据可以存储在 HDFS 中。
[*]MapReduce 编程模型:用于大规模数据集的并行计算。通过将计算任务分解为 Map(映射)和 Reduce(归约)两个阶段,实现数据的分布式处理。好比,统计海量文本中每个单词的出现次数,就可以利用 MapReduce 来高效完成。
https://i-blog.csdnimg.cn/direct/d77367924fba45bf80fae46f76f86dd2.png



(2)Zookeepe

        Zookeeper是一个开源的分布式和谐服务,主要用于办理分布式系统中的和谐问题。它提供设置管理、定名服务、集群管理、同步服务等功能。Zookeeper的核心特性包括:


[*]‌全局数据同等性‌:每个服务器保存一份相同的数据副本,客户端无论连接到哪个服务器,数据都是同等的。
[*]‌更新请求顺序执行‌:来自同一个客户端的更新请求按发送顺序依次执行。
[*]‌数据更新原子性‌:一次数据更新要么乐成,要么失败。
[*]‌及时性‌:在一定时间范围内,客户端能读到最新数据‌34
https://i-blog.csdnimg.cn/direct/feffb47a55344ba3aa129def17ce94ac.png


(3)Hadoop与Zookeeper的关系和应用场景

        在一个典范的大数据处理架构中,Hadoop 和 Zookeeper 常常协同工作。Zookeeper 可以为 Hadoop 集群提供分布式和谐服务,比方:


[*]Hadoop NameNode 的高可用性:通过 Zookeeper 实现 NameNode 的主备切换,包管 Hadoop 集群的高可用性。当主 NameNode 出现故障时,Zookeeper 可以或许快速选举出新的主节点,确保集群正常运行。
[*]资源管理和谐:在 Hadoop 的资源管理框架(如 YARN)中,Zookeeper 可以协助进行资源的分配和和谐,包管任务的合理调理和执行。
应用场景



[*]Hadoop 的应用场景:适用于大规模数据的存储和离线处理,如日志分析、数据仓库构建、机器学习模型练习等。比方,电商公司可以利用 Hadoop 分析用户购买行为数据,为用户提供个性化推荐。
[*]Zookeeper 的应用场景:广泛应用于分布式系统中的和谐、设置管理等方面,如分布式锁、服务发现、集群管理等。好比,在一个微服务架构中,Zookeeper 可以用于服务注册与发现,资助服务之间快速找到对方并进行通信。
       在实际应用中,Hadoop和Zookeeper常常被用于同一个系统中,因为它们之间有很强的耦合关系。Zookeeper可以用于管理Hadoop集群的元数据,如NameNode的地点、DataNode的地点等;同时,Hadoop也可以用于处理Zookeeper集群的大数据,如日志、监控数据等。Zookeeper在Hadoop集群中的作用尤为重要,特殊是在NameNode的高可用性方面,通过Zookeeper的选举机制,确保一个NameService下面只有一个活泼的NameNode,从而提供高可靠性的服务。


二、HBase概述

     Apache HBase是一个分布式、可伸缩、列式存储的高并发及时读写NoSQL数据库,是Hadoop生态的重要组成。一张表支持数十亿行和数百万列。
    HBase是依赖Hadoop。因为HBase是在HDFS的基础之上构建的,而HDFS是分布式文件系统,能存储海量数据,以是HBase能存储海量的数据。
HBase在HDFS之上提供了高并发的随机写和支持及时查询,这是HDFS不具备的。
https://i-blog.csdnimg.cn/direct/d0be424098814d6f916001122f55d0be.png

(1)列式存储

       下图是一个表,表示两行七列数据,也就是可以明白成,存储到磁盘的时候,每行都是由多列数据组成的。
id姓名年龄职业年薪女朋友身高1小明24500W已有2小王搬砖         而假如是列式存储,不同的列是单独存储在不同的文件中,这样可以针对不同的列采取不同的压缩方式,进步压缩结果,降低磁盘利用空间;查询时,也可以只查询部分的列数据,而不用查询全部列,减少I/O,进步查询效率。
       对于上表,在Hbase中,可以将姓名、年龄、身高这几列看作是一组,单独存储,职业、年薪这两列也可以看作是一组,单独存储。在Hbase中,多列归为一组 (具体哪些列在哪些组由设计者决定) ,就可以称之为一个列族。
(2)HBase架构图

https://i-blog.csdnimg.cn/direct/d69fea2b830f46ba8e250fe93a1e28ff.pnghttps://i-blog.csdnimg.cn/direct/efef2d59d5044720bb0f96a458cd291d.png
说明:
1. ZK是zookeeper的缩写,是一个分布式步伐。ZK可以存储小量数据,它一样平常以辅助的脚色来协助其他分布式步伐完成一些功能。
2.HBase依赖ZK。安装HBase的时候,可以独立下载ZK来部署ZK,也可以用HBase自带的ZK


(3)客户端读写HBase的基本流程

https://i-blog.csdnimg.cn/direct/5049f9e3048448a1a66f7dadfb2bd08e.png

三、Hadoop 集群启动

(1)启动下令与节点查抄

        在终端输入start-all.sh
下令启动 Hadoop 集群,顺利启动了 NameNode、DataNode、Secondary NameNode、ResourceManager 和 NodeManager 等节点。通过jps
下令查看各节点历程,确保所有节点正常运行。
start-all.sh
运行代码:
https://i-blog.csdnimg.cn/direct/5028e9d76bbd48d48e9c713eb2229696.png
查抄所有节点正常运行:
jps
运行代码:
https://i-blog.csdnimg.cn/direct/4b712e80bd7148298598d7653da8f387.png
https://i-blog.csdnimg.cn/direct/f0c14f8f41184c91908c77ef547868fa.png
https://i-blog.csdnimg.cn/direct/cf3019d7e28f4c168c51c026a7cf0864.png

(2)遇到的问题及办理

权限问题:最初启动时,部分节点因权限不足无法正常启动。通过查抄文件权限,利用chmod下令赋予相干用户执行权限后办理。
设置错误:设置文件中某些参数设置错误,导致节点间通信异常。仔细查抄hadoop-env.sh、core-site.xml、hdfs-site.xml和yarn-site.xml等设置文件,修正错误参数后,集群乐成启动。
(3)总结与思考

       启动 Hadoop 集群过程中,对各节点功能和相互关系有了更深入明白。NameNode 负责管理文件系统定名空间,DataNode 存储实际数据块,Secondary NameNode 辅助 NameNode 进行元数据备份,ResourceManager 负责资源管理,NodeManager 负责容器管理。合理设置各节点参数对集群性能至关重要。
四、Zookeeper 集群搭建

(1)解压与设置环境变量

1.解压 Zookeeper 安装包:利用tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local下令将 Zookeeper 解压到指定目次。
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local 运行代码:https://i-blog.csdnimg.cn/direct/ce043172f73e4e7d8397773ebf1a2766.png
https://i-blog.csdnimg.cn/direct/a2241b0419fa4713b2c10b4ee10a79ca.png
(由于输出太多,仅截图部分压缩代码)
进入local目次
cd /usr/local/
运行代码:
https://i-blog.csdnimg.cn/direct/0ad9d82f833340a5a24f5f88999d36d6.png
查看local目次文件
ll date
运行代码:
https://i-blog.csdnimg.cn/direct/2cd2a026ba894a96ad6487f3e6b2e8e4.png
https://i-blog.csdnimg.cn/direct/0f8a88babbe54854b7bda68d87280b8a.png
进入/apache-zookeeper-3.5.7-bin目次
cd apache-zookeeper-3.5.7-bin/ pwd
运行代码:
https://i-blog.csdnimg.cn/direct/b23c042058e347a4be7a7131445ceb6c.png
https://i-blog.csdnimg.cn/direct/b7d8cab76e2f4d009710a4bf667803b5.png

2.设置环境变量:
在/etc/profile文件中添加以下内容:
vi /etc/profile
export ZK_HOME=/usr/local/apache-zookeeper-3.5.7-bin

export PATH=$PATH:$ZK_HOME/bin 运行代码:
https://i-blog.csdnimg.cn/direct/8ca0961f858047abb150ab35b580da42.png
https://i-blog.csdnimg.cn/direct/b520d27e356f4392891f0bce6f01848c.png
3.设置环境变量
(2)设置文件修改

1.复制设置文件:进入/usr/local/apache-zookeeper-3.5.7-bin/conf目次,复制zoo_sample.cfg为zoo.cfg。
cd/usr/local/apache-zookeeper-3.5.7-bin/conf 运行代码:
https://i-blog.csdnimg.cn/direct/657a512576564a7887dea42cfde77607.png
查看conf目次文件
ll 运行代码:
https://i-blog.csdnimg.cn/direct/422c7ed4be4941158c4c38ce025d871f.png
zoo_sample.cfg的文件复制一份,并定名为zoo.cfg
cp zoo_sample.cfg zoo.cfg 运行代码:
https://i-blog.csdnimg.cn/direct/8f02fac157b84260a737bc50206bc5df.png
https://i-blog.csdnimg.cn/direct/3fcbe67514c840acbaa3a76055c19962.png

2.编辑 zoo.cfg 文件:修改tickTime、initLimit、syncLimit、dataDir、clientPort等参数,并添加集群节点信息,如server.1=wmy077028:2888:3888、server.2=wmy2077028:2888:3888、server.3=wmy3077028:2888:3888(具体环境具体分析)。
vi zoo.cfg
/usr/local/apache-zookeeper-3.5.7-bin/dataDir 运行代码:
https://i-blog.csdnimg.cn/direct/cd5540670fa44bcbb3e6a809e37042c1.png
https://i-blog.csdnimg.cn/direct/ff4aa20ec35b4a2787f1832798e58cd0.png
(3)创建 myid 文件

        在dataDir目次下创建myid文件,分别在三台机器上设置不同的值(1、2、3),用于标识集群中的不同节点。
切换到apache-zookeeper-3.5.7-bin目次,并查看当前目次文件
cd .. ll 运行代码:
https://i-blog.csdnimg.cn/direct/912b93f745c84537ba9cdbe32451c41f.png
https://i-blog.csdnimg.cn/direct/3df9bdfbe7cd4b2099b074f66cf67250.png

在当前工作目次下创建一个名为dataDir的目次
mkdir dataDir 运行代码:
https://i-blog.csdnimg.cn/direct/89789d345e58454d8fca5491d5aaceb3.png
切换到 dataDir目次下
cd dataDir/ 运行代码:

https://i-blog.csdnimg.cn/direct/38cf76737eb44e84b0010f47fda4d2b9.png
创建并进入myid文件,内容为1(其他两个历程分别编辑为2,3)
vi myid
运行代码:
https://i-blog.csdnimg.cn/direct/3092b38e8571460fa2604c8ffbe3f557.png
https://i-blog.csdnimg.cn/direct/280bbdacb4a045bd915a3e47988521d6.png
查看三个历程:
cd /usr/local/
apache-zookeeper-3.5.7-bin/dataDir/cat myid 运行代码:
第一个历程:
https://i-blog.csdnimg.cn/direct/18a89b5cebc04467b03fcee9883f3acd.png
第二个历程:
https://i-blog.csdnimg.cn/direct/3d9ea16e3bdc47abb78b9bb7e4d6af3f.png
第三个历程:
https://i-blog.csdnimg.cn/direct/a4747ca4c94e4c84943422b7a2053f5d.png
(4)分发 Zookeeper 到其他节点

      利用scp -r apache-zookeeper-3.5.7-bin/ root@wmy2077028:/usr/local/和scp -r apache-zookeeper-3.5.7-bin/ root@wmy3077028:/usr/local/下令将 Zookeeper 分发到其他节点。
scp /etc/profile root@wmy2077028:/etc

scp /etc/profile root@wmy3077028:/etc 运行代码:
https://i-blog.csdnimg.cn/direct/96dc8d236fd6470e8727a9308e4e5e4f.png
切换到apache-zookeeper-3.5.7-bin目次,并查看当前目次文件
cd ll 运行代码:
https://i-blog.csdnimg.cn/direct/ae905638acbd4066816314f2748d78a1.png
https://i-blog.csdnimg.cn/direct/2782e5c7ad0e46438cb2263f90a03900.png
分发到其他节点
scp -r apache-zookeeper-3.5.7-bin/ root@wmy2077028:/usr/local/

scp -r apache-zookeeper-3.5.7-bin/ root@wmy3077028:/usr/local/
运行代码:
https://i-blog.csdnimg.cn/direct/d92e0de7dcfe464bb51d2a194a3e066f.png
https://i-blog.csdnimg.cn/direct/935a5f90d860443dafa776c73b9f311a.png
(由于输出太多,仅截图部传输代码)
(5)启动 Zookeeper 集群

在每台机器上执行
zkServer.sh status
启动 Zookeeper 服务,通过zkServer.sh status
查看节点状态,确保一台为 leader,两台为 follower。
运行代码:
https://i-blog.csdnimg.cn/direct/059a41bdd5544214bd21942a10ee158f.png
https://i-blog.csdnimg.cn/direct/24f4bba6241143a891bf45c4c98a5b4c.png

https://i-blog.csdnimg.cn/direct/58281f21a04d4741b687d8148b2bdf6e.png

(6)遇到的问题及办理

1.myid 文件设置错误:节点启动失败,查抄发现myid文件内容设置错误,重新设置正确的值后办理。
2.防火墙问题:节点间无法通信,关闭防火墙后恢复正常。
(7)总结与思考

       搭建 Zookeeper 集群需留意设置文件准确性和节点间通信。zoo.cfg文件参数影响集群性能和可靠性,如tickTime控制心跳隔断,initLimit和syncLimit影响节点同步。myid文件标识节点,确保其唯一性和正确性。
五、Zookeeper 客户端操作

(1)连接到 Zookeeper 集群

       利用zkCli.sh下令连接到当地 Zookeeper 服务(localhost:2181),连接乐成后表现客户端环境信息和欢迎信息。
zkCli.sh 运行代码:
https://i-blog.csdnimg.cn/direct/f7b9d7e2324341a5a56aa507dfdbe119.png
(由于输出太多,仅截图部分代码)
(2)数据操作示例

1.查看Zookeeper节点:利用ls /下令查看Zookeeper节点。
ls / 2.创建节点:利用create /mynode1下令创建一个名为mynode1的节点。
create /mynode1 3.设置节点数据:利用set /mynode1 'value of my node1'为节点设置数据。
set /mynode1 'value of my node1' 4.获取节点数据:利用get /mynode1获取节点数据,验证数据设置是否乐成。
get /mynode1 5.查看节点列表:利用ls下令查看当前节点下的子节点列表,表现。
运行代码:
https://i-blog.csdnimg.cn/direct/a4d8e72b77654d24ba8357c48f8474b7.png
(3)总结与思考

       通过 Zookeeper 客户端操作,了解其基本数据模型和操作方法。Zookeeper 提供简朴易用接口,可用于分布式系统和谐和设置管理。在实际应用中,可用于实现分布式锁、服务发现、设置中央等功能。
       这次 Hadoop 和 Zookeeper 集群搭建过程布满挑战,但也让我对大数据技能有了更深入明白。盼望我的履历能对大家有所资助,欢迎交流讨论。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Hadoop 与 Zookeeper 集群搭建