搭建基于Zookeeper服务的Hbase集群

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 搭建基于Zookeeper服务的Hbase集群

一、任务描述

本实验任务主要完成基于ubuntu环境搭建基于Zookeeper服务的Hbase集群的工作。通过完成本实验任务,要求学生熟练掌握搭建基于Zookeeper服务的Hbase集群的方法,为后续实验的开展奠定Hbase平台基础,也为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。


二、任务目标

1、掌握搭建基于Zookeeper服务的Hbase集群


三、任务环境

Ubuntu(三台节点:mater,slave1,slave2)、Hadoop2.7.3、Hbase1.2.6


四、任务分析

Hbase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统“。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase有三种模式:单机模式,伪分布式模式,完全分布式模式。


学会搭建基于Zookeeper服务的Hbase集群部署的过程。

五、 任务实施

步骤1、Hadoop完全分布式环境搭建

由于在实际环境中每次生成的主机名都不一致,为了命名的规范和简洁,需要修改每台虚拟机的主机名。在ip为192.168.0.2的虚拟机终端输入命令【vim /etc/hostname】,进入编辑页面输入“master”,编辑完成后保存退出。在终端输入命令【reboot】重启后,主机名就修改完成了。然后将ip为192.168.0.3的虚拟机的主机名修改slave1,ip为19.168.0.4的虚拟机的主机名修改为slave2。如图1所示。


b9c807991de847bfaac8b8e31a1a8660.png


图1 修改主机名


修改每台电脑的hosts文件。hosts文件和windows上的功能是一样的。存储主机名和ip地址的映射。在每台linux上,【vim /etc/hosts】 编写hosts文件。将主机名和ip地址的映射填写进去。编辑完后,结果如图2所示:


285ca253c74842da9b607a367498bac5.png


图2 编辑hosts文件


配置完网络之后,可以通过ping命令进行测试是否能够连通,ping除了可以直接连接IP地址,也可以连接主机名,不过此时需要对配置文件hosts进行修改。“etc/hosts“文件是用来配置主机用的DNS服务器信息,是记载LAN内接各主机名称和IP地址,当用户在连接网络时,首先查找该文件,寻找对应的主机名和IP地址。这样就可以实现不同节点之间可以通过ip地址或主机名相互ping通。如图3所示

d1b266fde5ae491b9c150f46198e3b12.png



图3 测试机器之间的联通


完成以上操作即表示完成一个小的局域网络,为hadoop集群搭建准备好条件,由于每个节点之间需要相互配合,相互访问,为避免反复出现输入密码,此时需要对各个节点之间配置免密码配置。 无密码登陆,效果也就是在master上,通过 ssh slave1 或 ssh slave2 就可以登陆到对方计算机上。而且不用输入密码进入ssh目录。下面开始配置免密,进入ssh目录并查看。如图4所示


b951844e14994e669e70d07b74f437ef.png


图4 进入ssh目录


使用命令【ssh-keygen -t rsa】,一路按回车就行了。刚才的步骤主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。

 下面就是关键的地方了,(下面的操作为ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)在master上将公钥放到authorized_keys里。命令:【 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys】。

 然后打开~/.ssh 下面有三个文件

 (1)authorized_keys,已认证的keys

 (2)id_rsa,私钥

 (3)id_rsa.pub,公钥三个文件。

如图5所示

c2b341f662fc45389fa1e2ff4d8661b0.png



图5 生成公钥和私钥


如果有其他 slave 节点,也要执行将 master 公匙传输到 Slave 节点、在 slave 节点上加入授权这两步。这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验,如下图所示

 将master上的公钥放到其他虚拟机的~/.ssh目录下,并测试免密是否成功。下面是放到对slave1的免密配置,依次完成slave2。如图6所示。注意:在进行文件传输时需要密码为“Simplexue123“。上述的操作过程只是单向的,即此时,ssh root@slave1和ssh root@slave2是不需要密码的。而ssh root@master等反向仍然是需要密码的。


a7a733360332493aaf63c487b35b8605.png


图6 将公钥传给其他机器


♥ 温馨提示

 需要在所有节点上完成网络配置,如上面讲的是 master 节点的配置,而在其他的 slave 节点上,也要对/etc/hosts(跟 master 的配置一样)文件进行修改!

 【cd /simple/soft】进入软件包的所在文件夹中,并通过【ls】查看文件夹下所有软件。如图7所示。

d6ffafa5e04343c38e8f8defceb4fe3b.png


图7 进入软件所在目录

 在simple目录下执行解压命令。如图8所示


098072ef18db4320af153495b2568bf0.png


图8 解压hadoop

 切换到配置文件所在目录下并查看。如图9所示


529352c598e34ebaa31ac70ed9306a8c.png

图9 查看配置文件

 在当前目录下执行命令:【vim hadoop-env.sh】,按i键之后进入编辑状态,在文件中添加如下内容: export JAVA_HOME=/simple/jdk1.8.0_73。如图10所示。保存后在终端输入命令【vim yarn-env.sh】对yarn-env.sh进行同样的配置,如图11所示。


076f1bc06a6a452c9dacd745762ac1f7.png


图10 配置hadoop-env.sh

2d78e8e01a23490887acf60260d9112c.png



图11 配置yarn-env.sh

 在当前目录下执行【vim core-site.xml】并修改配置文件core-site.xml的 内容如下(实际修改不需要写中文注释)。如果没有配置hadoop.tmp.dir参数,此时系统默认的临时文件为/tmp/Hadoop,而这个目录在每次重启机器后会删除,需要重新格式化,否则报错。

1.   <!-- 这个属性用来指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口,也可以指定为一个namenode服务(这个服务内部可以有多台namenode实现hadoop的namenode服务 -->
2.  <property>
3.         <name>fs.default.name</name>
4.         <value>hdfs://master:9000</value>
5.  </property>
6.  <property>
7.  <!-- 指定hadoop临时目录,前面用file:表示是本地目录。hadoop在运行过程中肯定会有临时文件或缓冲之类的,必然需要一个临时目录来存放,这里就是指定这个的 -->
8.       /**tmp提前创建好 */
9.          <name>hadoop.tmp.dir</name>
10.         <value>/simple/hadoop-2.7.3/tmp</value>
11. </property>
  在当前目录下执行【vim hdfs-site.xml】并修改配置文件hdfs-site.xml
1.  <!-- namenode数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据-->
2.  <property>
3.          <name>dfs.name.dir</name>
4.          <value>/simple/hadoop-2.7.3/hdfs/name</value>
5.  </property>
6.  <!-- datanode数据的存放地点。也就是block块存放的目录了-->
7.  <property>
8.          <name>dfs.data.dir</name>
9.          <value>/simple/hadoop-2.7.3/hdfs/data</value>
10. </property>
  在当前目录下执行编辑文件命令:【vim mapred-site.xml】并修改该文件内容
1.  <!-- 通知框架MR使用YARN -->
2.  <property>
3.          <name>mapreduce.framework.name</name>
4.          <value>yarn</value>
5.  </property>
6.  <!---- 指定mr框架jobhistory的内部通讯地址 -->
7.  <property>
8.          <name>mapreduce.jobhistory.address</name>
9.          <value>master:10020</value>
10. </property>
11. <!---- 指定mr框架web查看的地址 -->
12. <property>
13.          <name>mapreduce.jobhistory.webapp.address</name>
14.          <value>master:19888</value>
15. </property>

2d78e8e01a23490887acf60260d9112c.png2d78e8e01a23490887acf60260d9112c.png在当前目录下执行【vim yarn-site.xml】,这个文件就是配置资源管理系统yarn了,其中主要指定了一些节点资源管理器nodemanager,以及总资源管理器resourcemanager的配置。 可以看到这个配置中,跟mapreduce框架是相关的。修改配置文件内容如下

 可见yarn首先是为了支持mapreduce这个模型,之后很多其他的框架都是基于mapreduce以及yarn的功能基础上开发出来的。

1.  <!--- 启用的资源调度器主类 -->
2.  <property>
3.      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
4.      <value>org.apache.mapred.ShuffleHandler</value>
5.  </property>
6.  <!--- ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等 -->
7.  <property>
8.      <name>yarn.resourcemanager.address</name>
9.      <value>master:8032</value>
10. </property>
11. <!-- ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等 -->
12. <property>
13.     <name>yarn.resourcemanager.scheduler.address</name>
14.     <value>master:8030</value>
15. </property>
16. <!-- ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等 -->
17. <property>
18.     <name>yarn.resourcemanager.resource-tracker.address</name>
19.     <value>master:8031</value>
20. </property>
21. <!-- 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等 -->
22. <property>
23.     <name>yarn.resourcemanager.admin.address</name>
24.     <value>master:8033</value>
25. </property>
26. <!-- ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息 -->
27. <property>
28.     <name>yarn.resourcemanager.webapp.address</name>
29.     <value>master:8088</value>
30. </property>
31. <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
32. <property>
33.     <name>yarn.nodemanager.aux-services</name>
34.     <value>mapreduce_shuffle</value>
35. </property>

在master节点上完成以上所有操作之后,需要把master上的hadoop分别远程拷贝到slave1,slave2上。例如:【scp –r hadoop-2.7.3/ slave1:/simple/】,如图12所示。然后使用命令【vim hadoop-2.7.3/etc/hadoop/slaves】修改文件slaves的内容,将原来的内容删掉替换为图13所示内容。


31446534b648475e8f4031002e92a347.png


图12 将hadoop拷贝到子节点

a8596229b9ef42af84d23204e11d5e89.png



图13 修改主节点的slaves文件

 执行【vim /etc/profile】。把hadoop的安装目录配置到环境变量中。如图14所示。注意:依次在slave1,slave2虚拟机上配置环境变量。



f25f2e418c2843b4ac6a77780b9d3152.png

图14 配置环境变量

 然后让配置文件生效:【source /etc/profile】,依次在slave1和slave2节点上执行该命令。如图15所示


084bad1d10c249449bc10f5e22af2f7f.png

图15 使配置文件生效

 格式化namenode。在任意目录下执行如下命令进行格式化:【hdfs namenode -format】 或者 【hadoop namenode -format】 。 如图16所示

238b9fc3f2aa49e8ba2f876c93b78fc5.png


图16 在master节点格式化namenode

 在master节点启动hadoop,输入命令:【start-all.sh】。如图17所示


7fe4c22b066c49b2921e3829c3fdcd12.png


图17 启动hadoop服务

 启动之后,分别在master,slave1,slave2节点中在任意目录下执行jps命令验证进程是否正常启动。如图18-20所示

754db49021c7447f8149a6d9e39f17bc.png


图18 jps查看服务


6825e5e2d01f43d0b69d45ba1f6c9b64.png


图19 jps查看服务


fcb8861e2a984cef94b656438a8876b7.png


图20 jps查看服务


步骤2、Zookeeper完全分布环境搭建

分别在三台节点下进入/simple/zookeeper/conf使用命令【vi zoo.cfg】进行zoo.cfg配置文件修改,设置集群配置参数,添加集群配置。如图21所示。

d164cc8ff9a749999cfdb15cc2f6a521.png



图21 配置zoo.cfg文件

 分别在三台节点的zookeeper/目录下新建zk_data文件夹,并在此zk_data/目录下新建myid文件。如图22所示。

7f0f2c2938e74166ac5c78483a69f855.png



图22 创建myid文件

 在主节点zookeeper文件夹zk_data/下,对myid文件进行编译【echo 1 >> myid】。如图23所示。


60825e96b7ab4fd7a16321aa479ad6bc.png


图23 配置主节点myid文件

 相同的步骤在第二个节点,为myid文件赋值2。如图24所示。


26202f0f2bbb4f34ab8d377bbf366613.png


图24 配置slave1节点myid文件

 相同的步骤在第三个节点,为myid文件赋值3。如图25所示。


c2979136ca484a0285b8ef038f76654c.png


图25 配置myid文件3

步骤3、Hbase完全分布环境搭建

在主节点master的linux系统中终端首先切换到simple目录,执行命令:【cd /simple】。然后执行解压命令:【tar -zxvf /simple/soft/hbase-1.2.6-bin.tar.gz -C /simple】。如图26所示。


6fcfb3b1348747b0a669a335ed6cc5b7.jpg


图26 解压

 将解压好的Hbase软件包重命名为hbase。如图27所示。


011186e088e74c418aa2ff7697528381.jpg


图27 重命名

 切换到hbase的conf目录下并查看。发现conf目录下有配置文件hbase-env.sh和hbase-site.xml。如图28所示。


7bfd93ade90246c6bac2a63cd2c722b4.png


图28 查看配置文件

 修改配置文件hbase-env.sh。在hbase的conf目录下执行命令【vim hbase-env.sh】,按i键之后进入编辑状态,配置如下。如图29所示 。

d7bf15d005374bacb829e2b527e69a11.jpg



图29 修改hbase-env.sh

 修改配置文件hbase-site.xml。在hbase的conf目录下执行【vim hbase-site.xml】,修改配置文件hbase-site.xml。如图30所示。

b385948f773f49f58d1c3e0cac3fc0bb.png

图30 修改hbase-site.xml

 修改配置文件regionservers。在hbase的conf目录下执行【vim regionservers】,修改配置文件regionservers。如图31所示。



a06c5ec710474c3b9d9ee5ba28d73023.png

图31 修改regionservers

 将Hbase分发到slave1和slave2两个节点的/simple目录下。如图32-33所示。


c90a2ffe509d4db28f551abd99a4cdaf.png


图32 分发到slave1


bd4ba6140eba4ae7b70f1f6b9b765e44.png


图33 分发到slave2


步骤4、启动Hbase

分别进入三个节点到zookeeper bin文件下,通过命令【./zkServer.sh start】来启动服务。如图34-36所示。


a60ba29871204e76b4cd6706c28704eb.png


图34 启动Zookeeper集群


d2b6dcfeb8ab47808609a0c9e33152ca.png


图35 启动Zookeeper集群

aec822f34db34a61829df26bfb080d03.png



图36 启动Zookeeper集群

 在三台节点上利用【./zkServer.sh status】查看Zookeeper节点状态。如图37-39所示。


cc643d73557a4631bbfb3730d3290e2b.png


图37 master查看Zookeeper节点状态


bc0254e341634e44bd04e0ac8953cda6.png


图38 slave1查看Zookeeper节点状态


77ca5eb41a21400ca413ac761b1c1ed5.png


图39 slave2查看Zookeeper节点状态

 启动Hbase。在主节点master进入目录/simple/hbase/bin/,执行命令【./start-hbase.sh】。如图40所示。

465242488b7b431e9b2bfd4d4a43650c.png



图40 启动Hbase

 查看是否启动。在各个节点执行【jps】命令,可以看到新启动进程。如图41-43所示。


27ad003aaf3b484b9a472d58438060fb.png


图41 master查看Hbase进程

49f73437243043398ac2a81e083eb1e7.png

图42 slave1查看Hbase进程


5e5da12a50194fff87f5c3ba2171b2da.png


图43 slave2查看Hbase进程

 在主节点master进入hbase的命令行模式,并查看所有表。执行【./hbase shell】命令。如图44所示。

f6d095e620d84c12bf6d23a555c2af0f.png



图44 查看所有表

 在主节点master查看hbase的管理界面。在浏览器的地址栏中输入:http://master:16010/ 。如图45所示。


0cf16317c17f466ea79f1bc87bd6ebb3.png


图45 查看hbase的管理界面


♥ 知识链接

HRegionServer


HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。


♥ 温馨提示

HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。

612334624d06474f85cdce9332a034ce.png


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
|
2月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
67 3
|
1月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
|
2月前
|
存储 数据库
zookeeper 集群环境搭建及集群选举及数据同步机制
zookeeper 集群环境搭建及集群选举及数据同步机制
52 2
|
1月前
|
开发工具
部署安装zookeeper集群
部署安装zookeeper集群
|
2月前
|
存储 Java Spring
使用Spring Boot和Zookeeper实现服务协调
使用Spring Boot和Zookeeper实现服务协调
|
3月前
|
Java 网络安全
分布式系统详解--框架(Zookeeper-简介和集群搭建)
分布式系统详解--框架(Zookeeper-简介和集群搭建)
122 0
|
3月前
|
存储 监控 负载均衡
Zookeeper 详解:分布式协调服务的核心概念与实践
Zookeeper 详解:分布式协调服务的核心概念与实践
168 0
|
4月前
|
存储 大数据 Apache
深入理解ZooKeeper:分布式协调服务的核心与实践
【5月更文挑战第7天】ZooKeeper是Apache的分布式协调服务,确保大规模分布式系统中的数据一致性与高可用性。其特点包括强一致性、高可用性、可靠性、顺序性和实时性。使用ZooKeeper涉及安装配置、启动服务、客户端连接及执行操作。实际应用中,面临性能瓶颈、不可伸缩性和单点故障等问题,可通过水平扩展、集成其他服务和多集群备份来解决。理解ZooKeeper原理和实践,有助于构建高效分布式系统。
|
4月前
|
分布式计算 监控 Hadoop
Ganglia监控Hadoop与HBase集群
Ganglia监控Hadoop与HBase集群