HBase(一)HBase v2.2 高可用多节点搭建

最近刚刚完成了HBase相关的一个项目,作为项目的技术负责人,完成了大部分的项目部署,特性调研工作,以此系列文章作为上一阶段工作的总结.

前言

其实目前就大多数做应用的情况来讲,我们并不需要去自己搭建一套HBase的集群,现有的很多云厂商提供的服务已经极大的方便日常的应用使用,不必像多年前一样刀耕火种似得从头开始部署这些底层的组件,大多数时候只需要开箱即用,遇到对应的问题时再去处理相关的问题即可.如果是本地开发呢,我们可以快速的使用docker去启动一个HBase,也能满足日常开发的需求.

但是对于该项目,需要对HBase的内核及实现原理进行调研梳理,就不得不从0搭建一个可以作为特性调研的集群.

搭建步骤

由于HBase依赖了HDFS,所以我们需要先搭建HDFS集群

搭建HDFS

参考文档:

搭建HDFS集群: Apache Hadoop 3.3.6 – Hadoop Cluster Setup

搭建HDFS HA集群: Apache Hadoop 3.3.6 – HDFS High Availability

节点规划

因为在大数据系统中,每台机器中搭建的组件比较多,搭建集群之前,需要做好节点规划的记录,防止忘记每个节点需要部署什么组件

节点

部署

172.36.176.238

namenode datanode

172.36.176.239

datanode

这里使用了两台机器,hdfs使用了两个datanode,因为我们主要想对hbase进行调试,所以能够实现HBase访问多个datanode的特性即可,如果是生产环境搭建的话,还需要搭建secordaryNamenode.

安装java

大数据组件集成的时候,由于组件众多,需要提起了解不同组件之间的兼容性问题,兼容性会出现在当前组件的文档,或源代码中,例如hadoop有针对jdk的兼容性文档,hbase会有针对hadoop和jdk的兼容性文档,后边文章中集成phoenix会有phoenix对于HBase的兼容性文档.

由于hadoop3.2版本只能支持1.8版本的java,所以我们需要先安装jdk.

根据机器CPU架构不同,可能需要使用不同的架构的安装包,如示例中使用的是arm架构的CPU,所以需要使用对应的版本.

在安装的过程中,因为步骤繁多,我们需要保证每一步都可验证,避免其他人按照步骤完成之后发现系统不能正常使用,增大排错难度.

# 不同的linux发行版对应的命令不同
yum install -y java-1.8.0-openjdk-devel.aarch64
which java
java -version

获取HDFS安装包

在Hadoop官网下载3.2.0版本的hadoop安装包

将hadoop安装包复制到/opt目录下

scp ./hadoop-3.2.0.tar.gz root@172.36.176.238:/opt

解压Hadoop安装包到当前目录

tar -xvf hadoop-3.2.0.tar.gz

修改集群host

在两个节点分别执行写入hosts的操作,

在自己的电脑上配置VPN使用的IP,在主机上配置内网ip,配置错误hdfs将无法启动

内网ip查看方式

使用ifconfig命令

echo  "10.208.216.211 master-node 10.208.5.224 salve-node1 " >> /etc/hosts

修改hostname

172.36.176.238节点执行

hostnamectl set-hostname master-node

172.36.176.239节点执行

hostnamectl set-hostname salve-node1

重新ssh登录之后hostname已经修改

配置免密登录

生成rsa公钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

添加环境变量

echo "export HADOOP_HOME=/opt/hadoop-3.2.0" >> ~/.bash_profile
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-7.oe1.aarch64" >> ~/.bash_profile
source ~/.bash_profile

扩展PATH目录

echo "export PATH=${HADOOP_HOME}/bin:\$PATH" >> ~/.bash_profile
echo "export PATH=${HADOOP_HOME}/sbin:\$PATH" >> ~/.bash_profile
source ~/.bash_profile

创建HDFS数据目录

mkdir -p /data/hadoop

配置core-site.xml

修改${HADOOP_HOME}/etc/hadoop/core-site.xml

<configuration><property><name>fs.defaultFSname><value>hdfs://$${HOSTNAME}:9000value>property> <property> <name>hadoop.tmp.dirname> <value>/data/hadoopvalue> property> configuration> 

初始化namenode

hdfs namenode -format

启动namenode

hdfs --daemon start namenode

使用jps命令验证是否启动成功

如果出现错误,根据$HADOOP_HOME/logs 目录下的日志进行排查

使用netstat命令能够发现监听的端口

netstat -ltnp |grep java

启动master节点上的datanode

hdfs --daemon start datanode

至此, master node启动成功

访问HDFS页面

需要关闭防火墙(不同的linux发行版对应的命令可能不同)

# 检查防火墙状态
systemctl status firewalld
# 停止防火墙
systemctl stop firewalld 
# 永久关闭防火墙
systemctl disable firewalld.service

修改selinux 文件 

vim /etc/selinux/config
修改为: SELINUX=disabled

本机访问: http://master-node:9870/

搭建其他datanode

重复 <安装java> 到 <配置core-site.xml> 之间的所有步骤在datanode上

跳过启动namenode的步骤

启动完成datanode之后

使用jps查看进程

验证多节点datanode搭建成功

http://master-node:9870/dfshealth.html#tab-datanode

至此,可以看到一个namenode,两个datanode的HDFS集群已经搭建起来了. 

搭建高可用HBase

集群规划

节点

原有部署

新增部署

172.36.176.238

namenode datanode

RegionServer

172.36.176.239

datanode

HMaster RegionServer zookeeper

参考文档

官方文档: Apache HBase ™ Reference Guide

下载HBase源码

下载地址:Index of /dist/hbase/2.2.3

这里需要额外注意,直接下载的源码包编译出来的代码会出现HRegionServer启动报错问题, 需要使用github的hbase代码仓库进行编译

git clone git@github.com:apache/hbase.git
git checkout 2.2.3
# 使用2.2.3分支编译的代码是可以正常部署的

本地编译HBase源码为Hadoop指定版本

● 不使用本地编译的版本会导致HBase在服务端启动时报错. 

● 由于HBase需要使用指定的hadoop版本,所以需要使用指定的hadoop版本编译

● 本地编译需要使用java 8,不能使用8以上的jdk,会报 package javax.annotation does not exist 错误

mvn -DskipTests clean install && mvn -Dhadoop.profile=3.0 -Dhadoop-three.version=3.2.0 -DskipTests package assembly:single

由于本地编译需要下载大量依赖及配置,这里直接放一个编译好的网盘文件

直接下载地址: 

链接: https://pan.baidu.com/s/1QKpw11HV7oA_0KJ7335gfA 提取码: 3qfi 

获取HBase安装包

将HBase安装包copy到/opt目录下

scp ./hbase-2.2.3-bin.tar.gz root@172.36.176.238:/opt
*从本地上传到服务端之后,服务端之间使用scp使用的内网带宽会更快

解压HBase安装包

cd /opt && tar -xvf hbase-2.2.3-bin.tar.gz

添加环境变量及修改PATH

echo "export HBASE_HOME=/opt/hbase-2.2.3" >> ~/.bash_profile
source ~/.bash_profile
echo "export PATH=${HBASE_HOME}/bin:\$PATH" >> ~/.bash_profile
source ~/.bash_profile

修改hbase-env.sh

此处不能省略,ssh远程执行命令会导致之前写入~/.bash_profile失效

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-7.oe1.aarch64" >> ${HBASE_HOME}/conf/hbase-env.sh

创建zookeeper存储目录

mkdir -p /data/zookeeper

添加HBASE配置

在${HBASE_HOME}/conf/hbase-site.xml <configuration>中添加以下内容

<property><name>hbase.cluster.distributed</name><value>true</value>
</property>
<property><name>hbase.rootdir</name><value>hdfs://master-node:9000/hbase</value>
</property>
<property><name>hbase.zookeeper.quorum</name>
<value>salve-node1:2181</value>
</property>
<property><name>hbase.zookeeper.property.dataDir</name><value>/data/zookeeper</value>
</property>

修改regionservers

vim ${HBASE_HOME}/conf/regionservers# 修改regionservers
master-node
salve-node1

部署其他节点

执行<解压HBase安装包> 到 <创建zookeeper存储目录>的所有步骤

MASTER节点启动

由于之前已经配置了远程登录,并且配置了regionservers所在的服务器,只需要在master节点执行start,即可启动其他机器上对应的节点

start-hbase.sh

使用hbase quick start中的hbase shell验证部署成功

Apache HBase ™ Reference Guide

执行quick中的命令,都可以正常执行,即为安装成功.

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

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

相关文章

javaweb使用Thymeleaf 最凝练的CRUD项目-中

javaweb使用Thymeleaf 最凝练的CRUD项目-中 6、显示首页 ①目标 浏览器访问index.html&#xff0c;通过首页Servlet&#xff0c;渲染视图&#xff0c;显示首页。 ②思路 ③代码 [1]创建PortalServlet <servlet><servlet-name>PortalServlet</servlet-name…

怎么用Midjourney制作表情包

要使用Midjourney制作表情包&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 打开Midjourney的官方网站或下载Midjourney应用程序&#xff0c;并登录你的账户。 2. 在Midjourney中&#xff0c;选择创建新项目或表情包。 3. 在项目中&#xff0c;你可以选择使用预设的模…

类 和 对象

目录 1、面向对象编程 2、面向对象编程 2.1面向对象编程特征 3、类和对象的概念 3.1类的定义 3.11属性 3.12方法 3.13重载 3.14递归 3.13返回值return 3.2对象 3.2.1对象组合 4、jvm内主要三块内存空间 5、参数传值 1、面向对象编程 面向过程&#xff1a;关注的是步骤…

将大模型集成到语音识别系统中的例子

概述 本文旨在探索将大型语言模型&#xff08;LLMs&#xff09;集成到自动语音识别&#xff08;ASR&#xff09;系统中以提高转录准确性的潜力。 文章介绍了目前的ASR方法及其存在的问题&#xff0c;并对使用LLMs的上下文学习能力来改进ASR系统的性能进行了合理的动机论证。 本…

深度学习标量、向量、矩阵、张量之间的区别与联系

文章目录 前言1、张量**注意**&#xff1a; 2、**标量** (scalar)&#xff1a;0阶的张量&#xff0c;0个轴&#xff0c;一个单独的数(整数或实数)&#xff1b;3、**向量**(vector)&#xff1a;1阶的张量&#xff0c;也叫矢量&#xff0c;1个轴&#xff0c;一个数组&#xff1b;…

那些你必须知道的4个matlab小技巧(附最新安装包)

文末福利&#xff1a;MATLAB R2022b软件安装包 MATLAB 简介 01 一、MATLAB简介 数学类科技应用软件包括数值计算&#xff08;Number Crunching&#xff09;型软件和数学分析&#xff08;Math Analysis&#xff09;型软件 数值计算型软件 它们对大批数据具有较强的管理、计…

微信小程序下拉刷新获取数据和触底事件刷新实现

一、下拉刷新 1.json文件 说明&#xff1a;开启下拉刷新&#xff0c;然后设置窗口的背景色&#xff0c;方便观看。 "enablePullDownRefresh": true,"backgroundColor":"#FFC0CB" 2. js文件 说明&#xff1a;重新发起请求&#xff0c;并显示加…

【问题总结】Docker环境下备份和恢复postgresql数据库

目录 文章目录 以从备份恢复forest_resources库为例一、备份数据库二、需要还原的数据库准备1 删除掉远程的库。2 重新创建一个空的库。可以使用sql3 找到数据库存放的路径&#xff0c;并将备份文件上传到对应的路径下 三、 进入docker容器内部&#xff0c;执行数据库恢复附录…

Vue3统计数值(Statistic)

可自定义设置以下属性&#xff1a; 数值的标题&#xff08;title&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认&#xff1a;‘’数值的内容&#xff08;value&#xff09;&#xff0c;类型&#xff1a;string | number&#xff0c;默认&#xff1a;…

AlphaPose复现配置教程

AlphaPose复现配置教程 AlphaPose介绍 AlphaPose是一种准确的多人姿态估计器&#xff0c;这是第一个在COCO数据集上达到70 mAP (75 mAP)和在MPII数据集上达到80 mAP (82.1 mAP)的开源系统。为了匹配跨帧的同一人的姿态&#xff0c;我们还提供了一种高效的在线姿态跟踪器&…

scala学习手册

1. case class学习 样例类模式匹配 1.1 样例类&#xff08;case class&#xff09;适合用于不可变的数据。它是一种特殊的类&#xff0c;能够被优化以用于模式匹配。 case class MetaData(userId: String)case class Book(name: String) {def printBookName(): Unit {printl…

跨网络的通信过程、路由的作用以及默认网关

如下网络拓扑图&#xff0c;交换机0所在的网段为192.168.1.0/24&#xff0c;交换机1所在网段为192.168.2.0/24&#xff0c;且各自有2台主机&#xff1a; 假设PC0&#xff08;192.168.1.10/32&#xff09;要跟PC4&#xff08;192.168.2.11/32&#xff09;通信&#xff0c;如何实…

函数和控制流

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…

Simulink仿真模块 - Data Store Read

Data Store Read:从数据存储中读取数据 在仿真库中的位置为:Simulink / Signal Routing 模型为: 说明 Data Store Read 模块将指定数据存储中的数据复制到其输出中。多个 Data Store Read 模块可从同一个数据存储读取数据。 用来读取数据的源数据存储由 Data Store Memory 模…

vue+element-ui通用后台管理系统(适合新手)

vueelement-ui通用后台管理系统&#xff08;适合新手&#xff09; 1、使用到的技术 使用vue2element-uiaxiosjs-cookielessecharts实现的一个简易的通用后台管理系统&#xff0c;具有很强的可扩展性&#xff0c;修改简单&#xff0c;只要有点前端基础就能看懂&#xff1b; 2…

怎么学习Java数据库连接(JDBC)? - 易智编译EaseEditing

学习Java数据库连接&#xff08;JDBC&#xff09;是掌握Java与数据库交互的关键步骤。以下是学习Java JDBC的一些建议&#xff1a; 先掌握Java基础&#xff1a; 在学习JDBC之前&#xff0c;确保你已经掌握了Java的基本语法、面向对象编程和其他核心概念。这将有助于更好地理解…

Spring、SpringBoot、SpringCloud、SpringCloud Alibaba、Elasticsearch版本对应,附下载地址

1、GitHub Alibaba 发布SpringCloud Alibaba和SpringCloud 、SpringBoot版本 Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot2022.0.0.0-RC2Spring Cloud 2022.0.03.02022.0.0.0-RC1Spring Cloud 2022.0.03.0.02021.0.5.0*Spring Cloud 2021.0.52.6.132021.0.4…

基于FPGA的softmax函数优化及实现

文章目录 前言优化方案测试数据产生及Matlab结果处理流程工程说明功耗与面积标准softmax函数功耗与面积总结前言 FPGA异构计算是一个趋势,在AI推理、深度学习中广泛使用FPGA进行加速,减小系统延迟。而AI推理中有一个组件被广泛使用,各种网络模型中都有其身影,那就是激活函…

Ceph 应用

Ceph 应用 一、创建 CephFS 文件系统 MDS 接口 1.服务端操作 1&#xff09;在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node01 node02 node032&#xff09;查看各个节点的 mds 服务 ssh rootnode01 systemctl status ceph-mdsnode01 ssh rootnode02 syst…

人工智能顶会投稿截止时间汇总

一、NeurIPS 1. 会议名称及等级 Annual Conference on Neural Information Processing Systems&#xff08;CCF-A&#xff09;https://dblp.uni-trier.de/db/conf/nips/index.html 2. 投稿时间及接收率 https://neurips.cc/Conferences/2023/CallForPapers#OpenReview 一般…