一、Hadoop与Zookeeper介绍
(1)Hadoop
Hadoop 是一个分布式系统基础架构,由 Apache 基金会开发,旨在处理大规模数据集。它主要包含以下两个核心组件:
- Hadoop 分布式文件系统(HDFS):一种分布式文件系统,可以或许将大文件切分成多个块,并存储在集群中的不同节点上。具有高容错性、高吞吐量等特点,恰当大规模数据的存储。比方,在一个大型互联网公司中,天天产生的海量用户行为数据可以存储在 HDFS 中。
- MapReduce 编程模型:用于大规模数据集的并行计算。通过将计算任务分解为 Map(映射)和 Reduce(归约)两个阶段,实现数据的分布式处理。好比,统计海量文本中每个单词的出现次数,就可以利用 MapReduce 来高效完成。
(2)Zookeepe
Zookeeper是一个开源的分布式和谐服务,主要用于办理分布式系统中的和谐问题。它提供设置管理、定名服务、集群管理、同步服务等功能。Zookeeper的核心特性包括:
- 全局数据同等性:每个服务器保存一份相同的数据副本,客户端无论连接到哪个服务器,数据都是同等的。
- 更新请求顺序执行:来自同一个客户端的更新请求按发送顺序依次执行。
- 数据更新原子性:一次数据更新要么乐成,要么失败。
- 及时性:在一定时间范围内,客户端能读到最新数据34
(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不具备的。
(1)列式存储
下图是一个表,表示两行七列数据,也就是可以明白成,存储到磁盘的时候,每行都是由多列数据组成的。
id | 姓名 | 年龄 | 职业 | 年薪 | 女朋友 | 身高 | 1 | 小明 | 24 | | 500W | 已有 | | 2 | 小王 | | 搬砖 | | | | 而假如是列式存储,不同的列是单独存储在不同的文件中,这样可以针对不同的列采取不同的压缩方式,进步压缩结果,降低磁盘利用空间;查询时,也可以只查询部分的列数据,而不用查询全部列,减少I/O,进步查询效率。
对于上表,在Hbase中,可以将姓名、年龄、身高这几列看作是一组,单独存储,职业、年薪这两列也可以看作是一组,单独存储。在Hbase中,多列归为一组 (具体哪些列在哪些组由设计者决定) ,就可以称之为一个列族。
(2)HBase架构图
说明:
1. ZK是zookeeper的缩写,是一个分布式步伐。ZK可以存储小量数据,它一样平常以辅助的脚色来协助其他分布式步伐完成一些功能。
2.HBase依赖ZK。安装HBase的时候,可以独立下载ZK来部署ZK,也可以用HBase自带的ZK
(3)客户端读写HBase的基本流程
三、Hadoop 集群启动
(1)启动下令与节点查抄
在终端输入start-all.sh
下令启动 Hadoop 集群,顺利启动了 NameNode、DataNode、Secondary NameNode、ResourceManager 和 NodeManager 等节点。通过jps
下令查看各节点历程,确保所有节点正常运行。
运行代码:
查抄所有节点正常运行:
运行代码:
(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
复制代码 运行代码:
(由于输出太多,仅截图部分压缩代码)
进入local目次
运行代码:
查看local目次文件
运行代码:
进入/apache-zookeeper-3.5.7-bin目次
- cd apache-zookeeper-3.5.7-bin/
复制代码 运行代码:
2.设置环境变量:
在/etc/profile文件中添加以下内容:
- export ZK_HOME=/usr/local/apache-zookeeper-3.5.7-bin
- export PATH=$PATH:$ZK_HOME/bin
复制代码 运行代码:
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
复制代码 运行代码:
查看conf目次文件
运行代码:
zoo_sample.cfg的文件复制一份,并定名为zoo.cfg
- cp zoo_sample.cfg zoo.cfg
复制代码 运行代码:
2.编辑 zoo.cfg 文件:修改tickTime、initLimit、syncLimit、dataDir、clientPort等参数,并添加集群节点信息,如server.1=wmy077028:2888:3888、server.2=wmy2077028:2888:3888、server.3=wmy3077028:2888:3888(具体环境具体分析)。
- /usr/local/apache-zookeeper-3.5.7-bin/dataDir
复制代码 运行代码:
(3)创建 myid 文件
在dataDir目次下创建myid文件,分别在三台机器上设置不同的值(1、2、3),用于标识集群中的不同节点。
切换到apache-zookeeper-3.5.7-bin目次,并查看当前目次文件
运行代码:
在当前工作目次下创建一个名为dataDir的目次
运行代码:
切换到 dataDir目次下
运行代码:
创建并进入myid文件,内容为1(其他两个历程分别编辑为2,3)
运行代码:
查看三个历程:
- cd /usr/local/
- apache-zookeeper-3.5.7-bin/dataDir/cat myid
复制代码运行代码:
第一个历程:
第二个历程:
第三个历程:
(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
复制代码 运行代码:
切换到apache-zookeeper-3.5.7-bin目次,并查看当前目次文件
运行代码:
分发到其他节点
- scp -r apache-zookeeper-3.5.7-bin/ root@wmy2077028:/usr/local/
- scp -r apache-zookeeper-3.5.7-bin/ root@wmy3077028:/usr/local/
复制代码 运行代码:
(由于输出太多,仅截图部传输代码)
(5)启动 Zookeeper 集群
在每台机器上执行
启动 Zookeeper 服务,通过zkServer.sh status
查看节点状态,确保一台为 leader,两台为 follower。
运行代码:
(6)遇到的问题及办理
1.myid 文件设置错误:节点启动失败,查抄发现myid文件内容设置错误,重新设置正确的值后办理。
2.防火墙问题:节点间无法通信,关闭防火墙后恢复正常。
(7)总结与思考
搭建 Zookeeper 集群需留意设置文件准确性和节点间通信。zoo.cfg文件参数影响集群性能和可靠性,如tickTime控制心跳隔断,initLimit和syncLimit影响节点同步。myid文件标识节点,确保其唯一性和正确性。
五、Zookeeper 客户端操作
(1)连接到 Zookeeper 集群
利用zkCli.sh下令连接到当地 Zookeeper 服务(localhost:2181),连接乐成后表现客户端环境信息和欢迎信息。
运行代码:
(由于输出太多,仅截图部分代码)
(2)数据操作示例
1.查看Zookeeper节点:利用ls /下令查看Zookeeper节点。
2.创建节点:利用create /mynode1下令创建一个名为mynode1的节点。
3.设置节点数据:利用set /mynode1 'value of my node1'为节点设置数据。
- set /mynode1 'value of my node1'
复制代码 4.获取节点数据:利用get /mynode1获取节点数据,验证数据设置是否乐成。
5.查看节点列表:利用ls下令查看当前节点下的子节点列表,表现[mynode1, zookeeper]。
运行代码:
(3)总结与思考
通过 Zookeeper 客户端操作,了解其基本数据模型和操作方法。Zookeeper 提供简朴易用接口,可用于分布式系统和谐和设置管理。在实际应用中,可用于实现分布式锁、服务发现、设置中央等功能。
这次 Hadoop 和 Zookeeper 集群搭建过程布满挑战,但也让我对大数据技能有了更深入明白。盼望我的履历能对大家有所资助,欢迎交流讨论。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |