搭建HBase2.x完全分布式集群(CentOS 9 + Hadoop3.x)

Apache HBase™是一个分布式、可扩展、大数据存储的Hadoop数据库。
当我们需要对大数据进行随机、实时的读/写访问时,可以使用HBase。这个项目的目标是在通用硬件集群上托管非常大的表——数十亿行X数百万列。Apache HBase是一个开源、分布式、版本化的非关系数据库,模仿了Chang等人的谷歌Bigtable:A distributed Storage System for Structured Data。正如Bigtable利用谷歌文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。

HBase的部署模式包括:

  • 独立模式:HBase不使用HDFS,而是使用本地文件系统代替它在同一个JVM上运行所有HBase守护进程和本地ZooKeeper。

  • 分布模式

    • 伪分布式:所有守护进程都运行在单个节点上。
    • 完全分布式:守护进程分布在集群中的所有节点上。

本文部署HBase集群的时候,需要依赖于Hadoop集群和Zookeeper集群。

一、准备工作

  • 虚拟机相关:

    • VMware workstation 16:虚拟机 > vmware_177981.zip

      如果操作系统是win11或者win10家庭版,推荐使用VMware workstation 17版本,网盘地址为:虚拟机 > vmware_17。

    • CentOS Stream 9:虚拟机 > CentOS-Stream-9-latest-x86_64-dvd1.iso

  • JDK
    jdk1.8:JDK > jdk-8u261-linux-x64.tar.gz

    HBase版本与JDK版本

    在这里插入图片描述

  • Hadoop

    Hadoop 3.3.6:Hadoop > Hadoop 3.3.6.tar.gz

    HBase版本与Hadoop版本

    在这里插入图片描述

  • Zookeeper

    Zookeeper > apache-zookeeper-3.8.4-bin.tar.gz

  • HBase

    Hbase > hbase-2.5.8-bin.tar.gz

  • 辅助工具
    MobaXterm:MobaXterm_Portable_v24.0.zip

本文相关资源可以在文末提供的百度网盘资源中下载,除了vmware(你懂的…),以上资源均来源于官网,MobaXterm是便捷式软件,无需安装。

1. Hadoop安装

参考: 搭建Hadoop3.x完全分布式集群(CentOS 9)

2. Zookeeper安装

参考:搭建Zookeeper完全分布式集群(CentOS 9 )

3. 时钟同步

在HBase集群中,各个节点之间的时间同步非常重要,如果各个节点的时间不一致,那么会出现写入数据的时间戳不一致或某些操作的顺序发生错误等问题,从而影响HBase集群的稳定性和正确性。因此,在部署HBase之前,需要为集群的各节点配置时间同步。

1)安装Chrony

在虚拟机hadoop1上运行如下命令安装时间同步工具Chrony。

yum install chrony –y
ssh hadoop2 "yum install chrony -y"
ssh hadoop3 "yum install chrony -y"

2)启动Chrony服务

在虚拟机hadoop1上运行如下命令启动时间同步工具Chrony的服务。

systemctl start chronyd
ssh hadoop2 "systemctl start chronyd"
ssh hadoop3 "systemctl start chronyd"

3)查看Chrony服务运行状态

在虚拟机hadoop1、 hadoop2和hadoop3查看Chrony服务的运行状态。

systemctl status chronyd

4)配置Chrony服务端

在虚拟机hadoop1执行vi /etc/chrony.conf命令编辑Chrony的配置文件chrony.conf,将Chrony默认使用的时钟源指定为中国国家授时中心,并且允许处于任意网段的Chrony客户端可以通过虚拟机hadoop1的Chrony服务端进行时间同步。在这里插入图片描述

5)配置Chrony客户端

分别在虚拟机hadoop2和虚拟机hadoop3执行vi /etc/chrony.conf命令编辑Chrony的配置文件chrony.conf,指定Chrony客户端进行时间同步的Chrony服务端。

在这里插入图片描述

6)重新启动Chrony服务

在虚拟机hadoop1上运行如下命令重新启动时间同步工具Chrony的服务。

systemctl restart chronyd
ssh hadoop2 "systemctl restart chronyd"
ssh hadoop3 "systemctl restart chronyd"

7)查看时钟源

在虚拟机hadoop1上运行如下命令查看Chrony服务端和客户端的时钟源。

chronyc sources -v
ssh hadoop2 "chronyc sources -v"
ssh hadoop3 "chronyc sources -v"

在这里插入图片描述

二、安装HBase

1. 上传安装包

将hbase-2.5.8-bin.tar.gz上传到hadoop1的/software目录。

2. 安装HBase

以解压方式安装HBase,将HBase安装到/opt目录。

tar -zxvf /software/hbase-2.5.8-bin.tar.gz  -C /opt

3. 配置HBase系统环境变量

在虚拟机hadoop1执行vi /etc/profile命令编辑系统环境变量文件profile,在该文件的底部添加如下内容。

export HBASE_HOME=/opt/hbase-2.5.8
export PATH=$PATH:$HBASE_HOME/bin

执行source /etc/profile命令初始化系统环境变量使添加的HBase系统环境变量生效。

三、配置HBase

虚拟机HMasterHRegionServer
hadoop1
hadoop2
hadoop3

1. 配置文件介绍

所有配置文件都位于 conf 目录中,需要保持集群中每个节点同步。

  • backup-masters

    默认情况下不存在。文件中添加运行备用HMaster进程的虚拟机主机名或IP。

  • hadoop-metrics2-hbase.properties

    用于连接HBase Hadoop的Metrics2框架

  • hbase-env.cmd和hbase-env.sh

    用于Windows和Linux/UNIX环境的脚本来设置HBase的工作环境,包括Java、Java选项和其他环境变量的位置。

  • h base-policy.xml

    它是一个RPC服务器使用的默认策略配置文件,根据文件配置内容对客户端请求进行授权决策。仅在启用HBase安全性时使用。

  • hbase-site.xml

    该文件指定覆盖HBase默认的配置选项。

    配置项说明
    hbase.tmp.dir本地文件系统的临时目录,默认目录在/tmp目录下,该目录会在系统重启后清空,所以需要注意该参数的值
    默认值为: j a v a . i o . t m p d i r / h b a s e − {java.io.tmpdir}/hbase- java.io.tmpdir/hbase{user.name}
    hbase.rootdirRegionServers使用的目录,指定了HBase的数据存放目录,该路径需要完全限定(full-qualified),比如需要指定一个9000端口的HDFS文件系统下的/hbase目录,应写成:hdfs://namenode.example.org:9000/hbase
    默认值:${hbase.tmp.dir}/hbase
    hbase.cluster.distributed是否分布式
    默认值:false
    hbase.zookeeper.quorum用逗号分隔的ZooKeeper集群中的服务器列表
    hbase.zookeeper.property.dataDir存放HBase自己管理的zookeeper的属性数据信息的目录
    zookeeper.znode.parent指定了HBase在ZooKeeper上使用的节点路径
    hbase.wal.provider配置WAL的实现方式:
    asyncfs:默认值。自hbase-2.0.0(hbase-1536、hbase-14790)以来新增。它构建在一个新的非阻塞dfsclient实现上。
    filesystem:这是hbase-1.x版本中的默认设置。它构建在阻塞的DFSClient上,并以经典的DFSClient管道模式写入副本。
    multiwal:由多个asyncfs或filesystem实例组成
  • log4j.properties

    通过log4j进行HBase日志记录的配置文件。修改这个文件中的参数可以改变HBase的日志级别。

  • regionservers

    包含HBase集群中运行的所有Region Server主机列表(默认情况下,这个文件包含单个条目localhost)。该文件是一个纯文本文件,每行是一个主机名或IP地址

2. 配置HBase

1)修改HBase配置文件hbase-env.sh

HBase的配置文件hbase-env.sh主要用于配置HBase的运行环境。进入虚拟机hadoop1的/opt/hbase-2.5.8/conf目录,执行vi hbase-env.sh命令编辑配置文件hbase-env.sh,在文件的尾部添加如下内容。

export HBASE_MANAGES_ZK=false
export JAVA_HOME=/opt/jdk1.8.0_261

HBASE_MANAGES_ZK 该配置项为true时,由HBase自己管理Zookeeper;否则,启动独立的Zookeeper

2)修改HBase配置文件hbase-site.xml

HBase的配置文件hbase-site.xml主要用于配置HBase的参数。进入虚拟机hadoop1的/opt/hbase-2.5.8/conf目录,执行vi hbase-site.xml命令编辑配置文件hbase-site.xml,将该文件的<configuration>标签中的默认配置替换为如下内容。

<property><name>hbase.cluster.distributed</name><value>true</value>
</property>
<property><name>hbase.rootdir</name><value>hdfs://hadoop1:9000/hbase</value>
</property>
<property><name>hbase.tmp.dir</name><value>/opt/data/hbase/tmp</value>
</property>
<property><name>zookeeper.znode.parent</name><value>/hbase</value>
</property>
<property><name>hbase.zookeeper.property.dataDir</name><value>/opt/data/zookeeper/zkdata</value>
</property>
<property><name>hbase.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<property><name>hbase.wal.provider</name><value>asyncfs</value>
</property>
<property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value>
</property>

3)修改HBase配置文件regionservers

HBase的配置文件regionservers用于通过主机名指定运行Regionserver的计算机。由于这里在虚拟机hadoop2和hadoop3运行HRegionserver进程,执行 vi regionservers 命令编辑配置如下内容。

hadoop2
hadoop3

4)分发HBase安装目录

为了便捷地在虚拟机hadoop2和hadoop3安装和配置HBase,这里通过scp命令将虚拟机hadoop1的相关配置同步到两台主机。

scp -r /opt/hbase-2.5.8 root@hadoop2:/opt/
scp /etc/profile root@hadoop2:/etc/
scp -r /opt/hbase-2.5.8 root@hadoop3:/opt/
scp /etc/profile root@hadoop3:/etc/

四、启动与测试

1. 启动

在hadoop1主机运行如下命令启动集群。

1)启动hadoop

start-all.sh

2)启动zookeeper

xzkServer.sh start

3)启动hbase

start-hbase.sh

2. 查看进程

分别在hadoop1、hadoop2和hadoop3运行jps命令查看

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 网页查看

在这里插入图片描述

4. shell测试

进入hbase shell交互界面,查看集群状态、命名空间列表、表列表,最后退出交互界面

hbase shell
> status
> list_namespace
> list
> exit

在这里插入图片描述

5. 关闭集群

在hadoop1主机运行如下命令关闭集群。

stop-hbase.sh     	 #关闭HBase集群
xzkServer.sh stop 	 #关闭Zookeeper集群
stop-all.sh			#关闭Hadoop集群

附、网盘资源

链接:https://pan.baidu.com/s/1MSUdwbPArIAglQTDRhOjrg?pwd=jiau
提取码:jiau

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ceph学习 -11.块存储RBD接口

文章目录 RBD接口1.基础知识1.1 基础知识1.2 简单实践1.3 小结 2.镜像管理2.1 基础知识2.2 简单实践2.3 小结 3.镜像实践3.1 基础知识3.2 简单实践3.3 小结 4.容量管理4.1 基础知识4.2 简单实践4.3 小结 5.快照管理5.1 基础知识5.2 简单实践5.3 小结 6.快照分层6.1 基础知识6.2…

微信小程序使用 Vant Weapp 中 Collapse 折叠面板 的问题!

需求&#xff1a;结合Tab 标签页 和 Collapse 折叠面板 组合成显示课本和章节内容&#xff0c;并且用户体验要好点&#xff01; 如下图展示&#xff1a; 问题&#xff1a;如何使用Collapse 折叠面板 将内容循环展示出来&#xff1f; js中的数据是这样的 代码实现&#xff1…

Python | Leetcode Python题解之第39题组合总和

题目&#xff1a; 题解&#xff1a; from typing import Listclass Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:def dfs(candidates, begin, size, path, res, target):if target < 0:returnif target 0:res.append(p…

Stability AI 发布 SD3 API:开启人工智能新篇章

文章目录 1.Stable Diffusion 3 API开放了! 2.Stability AI Document地址3.获取API Key4.API方式调用SD3出图接口地址接口请求规范接口请求响应结果 5.Stable Diffusion 3.0、Stable Image Core、Fooocus 2.3.1、MidJounery效果查看 1.Stable Diffusion 3 API开放了! Stabilit…

react 响应式栅格布局

遇到一个小问题 , 有很多的下拉框放在了一行的盒子里 用到了栅格思路 , 但响应式处理屏幕时候右侧的按钮会覆盖掉样式 之前我的思路是子绝父相 , 将按钮定在最右侧 , 按钮和下拉框都在同一盒子中 , 且做了栅格处理没想到还是会覆盖解决 : 后来我用到了 margin-left: auto 来让…

蓝桥杯2024年第十五届省赛真题-宝石组合

思路&#xff1a;参考博客&#xff0c;对Ha,Hb,Hc分别进行质因数分解会发现&#xff0c;S其实就等于Ha&#xff0c;Hb&#xff0c;Hc的最大公约数&#xff0c;不严谨推导过程如下&#xff08;字丑勿喷&#xff09;&#xff1a; 找到此规律后&#xff0c;也不能枚举Ha&#xff…

OpenCV——Niblack局部阈值二值化方法

目录 一、Niblack算法1、算法概述2、参考文献二、代码实现三、结果展示OpenCV——Niblack局部阈值二值化方法由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、Niblack算法 1、算法概述 Niblack 算法是一种典型的局部阈值…

JavaWeb开发05-事务管理-AOP概述-AOP通知类型-通知顺序-切入点表达式-连接点-案例

一、事务管理 1.事务回顾 2.Spring事务管理 删除部门和删除部门下的员工应该绑定在一起&#xff0c;但是如果这两个操作之间出现错误&#xff0c;就会执行删除部门不删除员工&#xff0c;所以需要使用事务将两个任务绑定在一起&#xff0c;要么一起成功要么一起失败 Spring中如…

基础知识集合

https://blog.csdn.net/sheng_q/category_10901984.html?spm1001.2014.3001.5482 epoll 事件驱动的I/O模型&#xff0c;同时处理大量的文件描述符 内核与用户空间共享一个事件表&#xff1a;监控的文件描述符以它们的状态&#xff0c;当状态变化&#xff0c;内核将事件通知给…

Mac上Maven的安装和环境变量配置保姆级教程(最新版实时更新)

目录 一、Maven的安装 1.进入官网&#xff08;Maven官网&#xff09;下载安装包并解压 2.这里我使用了Homebrew安装Maven 安装Homebrew&#xff1a; 安装Maven&#xff1a; 二、Maven配置环境变量 1.打开环境变量文档&#xff1a; 2.在弹出文档结尾加入配置&#xff1a…

【Node.js】 fs模块全解析

&#x1f525;【Node.js】 fs模块全解析 &#x1f4e2; 引言 在Node.js开发中&#xff0c;fs模块犹如一把万能钥匙&#xff0c;解锁着整个文件系统的操作。从读取文件、写入文件、检查状态到目录管理&#xff0c;无所不能。接下来&#xff0c;我们将逐一揭开fs模块中最常用的那…

【HC32L110】华大低功耗单片机启动文件详解

本文主要记录华大低功耗单片机 HC32L110 的 汇编启动过程&#xff0c;包括startup_hc32l110启动文件详细注释 目录 1.启动文件的作用2.堆栈定义2.1 栈2.2堆 3.向量表4.复位程序5.中断服务程序6.堆栈初始化启动过程详解7.1从0地址开始7.2在Reset_Handler中干了啥&#xff1f; 8.…

PyTorch|保存及加载模型、nn.Sequential、ModuleList和ModuleDict

系列文章目录 PyTorch|Dataset与DataLoader使用、构建自定义数据集 PyTorch|搭建分类网络实例、nn.Module源码学习 pytorch|autograd使用、训练模型 文章目录 系列文章目录一、保存及加载模型&#xff08;一&#xff09;保存及加载模型的权重&#xff08;二&#xff09;保存及…

探究欧拉恒等式的美学与数学威力

正如老子所述&#xff0c;“道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物”&#xff0c;数学作为人类认知自然法则的语言&#xff0c;其数系的不断发展象征着对世界理解的深化。从自然数经由分数、无理数至复数&#xff0c;复数虽看似反直觉&#xff0c;却…

MATLAB实现蚁群算法优化柔性车间调度(ACO-fjsp)

蚁群算法优化车间调度的步骤可以分为以下几个主要阶段&#xff1a; 1.初始化阶段&#xff1a; 设置算法参数&#xff0c;如信息素浓度、启发式因子等。这些参数将影响蚂蚁在选择路径时的决策过程。 确定车间调度的具体问题规模&#xff0c;包括工件数量、机器数量以及每个工件…

AI:162-如何使用Python进行图像识别与处理深度学习与卷积神经网络的应用

本文收录于专栏&#xff1a;精通AI实战千例专栏合集 从基础到实践&#xff0c;深入学习。无论你是初学者还是经验丰富的老手&#xff0c;对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码&#xff0c;详细讲解供大家学习&#xff0c;希望可以帮到大家。正…

OpenHarmony GIF图像渲染库—ohos-gif-drawable

简介 本项目是OpenHarmony系统的一款GIF图像渲染库&#xff0c;基于Canvas进行绘制&#xff0c;主要能力如下: 支持播放GIF图片。支持控制GIF播放/暂停。支持重置GIF播放动画。支持调节GIF播放速率。支持监听GIF所有帧显示完成后的回调。支持设置显示大小。支持7种不同的展示…

面试题:Redis如何防止缓存穿透 + 布隆过滤器原理

题目来源 招银网络-技术-1面 题目描述 缓存穿透是什么&#xff1f;如何防止缓存穿透布隆过滤器的原理是什么&#xff1f; 我的回答 缓存穿透是什么&#xff1f; 攻击者大量请求缓存和数据库中都不存在的key。如何防止缓存穿透 可以使用布隆过滤器布隆过滤器的原理是什么&a…

AI容器化部署开发尝试 (一)(Pycharm连接docker,并部署django测试)

注意&#xff1a;从 Docker 19.03 开始&#xff0c;Docker 引入了对 NVIDIA GPU 的原生支持&#xff0c;因此若AI要调用GPU算力的话docker版本也是有要求的&#xff0c;后面博客测试。 当然本篇博客还没设计到GPU的调用&#xff0c;主要Pycharm加Anaconda的方案用习惯了&#…

缓存的使用及常见问题的解决方案

用户通过浏览器向我们发送请求&#xff0c;这个时候浏览器就会建立一个缓存&#xff0c;主要缓存一些静态资源&#xff08;js、css、图片&#xff09;&#xff0c;这样做可以降低之后访问的网络延迟。然后我们可以在Tomcat里面添加一些应用缓存&#xff0c;将一些从数据库查询到…