【HBase分布式数据库】第三章 HBase快速入门

3.1 HBase安装文件详解

任务目的

了解安装包下各个文件作用

任务清单

任务1:解压安装包

任务2:文件介绍

任务步骤

任务1:解压安装包

下载

通过hbase官网https://hbase.apache.org/downloads.html,选择版本进行下载。

3.1-1

解压

通过以下指令进行解压。

shell 复制代码
tar -zxvf hbase-1.4.10-bin.tar.gz

3.1-2

任务2:文件介绍

主目录预览

进入hbase主目录并进行查看。

shell 复制代码
cd hbase-1.4.10
ll

3.1-3

bin目录

该目下两个文件重要,一个文件可以启动hbase服务,一个可以关闭

3.1-4

conf目录

该目录下,一个文件用来配置系统环境,一个文件用来配置hbase环境,一个用来配置从节点

3.1-5

其他目录

docs:帮助文档,比如API等。

hbase-webapp:hbase的web资源存储目录。

lib:jar包存储目录。

3.2 HBase快速搭建

任务目的

掌握HBase单机安装

掌握HBase伪分布式安装

任务清单

任务1:HBase单机安装

任务2:HBase伪分布式安装

任务步骤

任务1:HBase单机安装

1、下载好hbase的tar包,解压到指定目录下。

tar -zxf hbase-1.4.10-bin.tar.gz

3.2-1

2、切入到hbase目录下的配置目录,修改hbase-env.sh文件,导入JDK,并使用自带ZK。保存配置。

cd hbase-1.4.10/conf

vim hbase-env.sh

3.2-2

3.2-3

3、修改hbase-site.xml文件,加入如下三条配置。并保存。

vim hbase-site.xml

3.2-4

4、返回主目录,启动hbase环境。通过jps命令检查,HMaster节点启动。

bin/start-hbase.sh

bin/stop-hbase.sh

3.2-5

任务2:HBase伪分布式安装

1、在hbase主目录下,修改hbase-env.sh文件,把false改为true。保存退出。

vim conf/hbase-env.sh

3.2-6

2、修改conf目录下的hbase-site.xml文件,修改两条,增加一条。保存退出。

vim conf/hbase-site.xml

3.2-7

3、到此hbase的伪分布式就安装完成,接下来要检查是否成功。把ZK、Hadoop以及hbase的节点启动起来,进入到ZK的客户端,可以看到hbase已注册到ZK。

zkCli.sh

ls /

3.2-8

3.3 HBase分布式讲解

任务目的

了解分布式搭建方法

任务清单

任务1:HBase分布式讲解

任务步骤

任务1:HBase分布式讲解

1、在hbase-env.sh文件中导入JDK安装路径,hbase安装路径以及Hadoop安装路径,并设置使用外部ZK。

shell 复制代码
export JAVA_HOME=/root/software/jdk1.8.0_221
export HADOOP_HOME=/root/software/hadoop-2.7.7
export HBASE_CLASSPATH=/root/software/hbase-1.4.10
export HBASE_MANAGES=true

2、把HADOOPHOME/etc/hadoop/hdfs−site.xml文件拷贝到HBASE_HOME/conf目录下。

shell 复制代码
cp /root/software/hadoop-2.7.7/etc/hadoop/hdfs-site.xml /root/software/hbase-1.4.10/conf

3、修改hbase-site.xml文件,加入以下配置。

xml 复制代码
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://master:60000</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/root/software/zookeeper-3.4.14/</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>

4、修改conf目录下的regionservers文件,把从节点的主机名写入该文件。

shell 复制代码
master
slave1
slave2

5、把配置好的hbase文件分发给其他从节点机器。从节点上的机器也要配置hbase的环境变量,并要使变量生效。

shell 复制代码
scp -r hbase-1.4.10 slave1:/root/software
scp -r hbase-1.4.10 slave2:/root/software

6、如果分布式环境是基于伪分布式环境搭建,则需要删除ZK中已经注册的hbase,并重启ZK。新环境安装的分布式就可以启动集群了。主节点上启动了一个HMaster和一个HRegionserver,从节点上启动了一个HRegionserver。

3.4 表的存储结构

任务目的

理解表的逻辑视图

掌握表的数据结构

任务清单

任务1:表的逻辑视图

任务2:数据结构

任务步骤

任务1:表的逻辑视图

-ROOT-表和.META.表

hbase除了有存储海量数据的用户表以外,还有两张特殊的table,-ROOT-表和.META.表。

-ROOT-表:记录了.META.表的Region信息,-ROOT-只有一个region。

.META.表:记录了用户表的Region信息,.META.可以有多个regoin。

示意图如下:

3.4-1

user table

3.4-2

rowkey

​ 与关系型数据数据库中的主键一样,row key是用来表示唯一一行记录的主键。访问hbase table中的行,有三种方式:

通过单个row key访问;

通过row key的range(正则);

全表扫描;

任务2:数据结构

rowkey设计

一条数据的唯一标识就是 rowkey,那么这条数据存储于哪个分区,取决于 rowkey 处于哪一个预分区的区间内,设计 rowkey 的主要目的 ,就是让数据均匀的分布于所有的 region 中。 rowkey 常用的设计方案遵循的原则如下:

长度原则

散列原则

唯一原则

columns family和versions

Columns Family :列簇,HBASE表中的每个列,都归属于某个列族。列名都以列族(簇)作为前缀。

versions:默认是 1 这个参数的意思是数据保留 1 个 版本。

cell和timestamp

cell:由{row key,columnFamily,version} 唯一确定的最小存储单元。

timestamp:时间戳,hbase中通过rowkey和columns确定为一个存储单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是64位整型。

namespace

namespace 类似于关系数据库系统中数据库表的逻辑分组。结构如下:

3.4-3

相关推荐
东方巴黎~Sunsiny15 分钟前
当kafka消费的数据滞后1000条时,打印告警信息
分布式·kafka·linq
看山还是山,看水还是。15 分钟前
Oracle的字符串函数
运维·数据库·安全·oracle
东方巴黎~Sunsiny37 分钟前
⚙️ 如何调整重试策略以适应不同的业务需求?
java·数据库·kafka
sj116373940338 分钟前
Kafka新节点加入集群操作指南
分布式·kafka
东方巴黎~Sunsiny39 分钟前
kafka消费数据太慢了,给优化下
分布式·kafka·linq
daopuyun43 分钟前
全面介绍软件安全测试分类,安全测试方法、安全防护技术、安全测试流程
网络·数据库·安全·安全测试
綦枫Maple1 小时前
Jmeter基础篇(23)TPS和QPS的异同
数据库·jmeter·oracle
川石课堂软件测试1 小时前
性能测试|JMeter接口与性能测试项目
javascript·数据库·python·jmeter·单元测试
oneslide1 小时前
达梦数据库迁移j脚本
数据库
☆七年2 小时前
新版IJidea 如何打开数据库窗口(2024.2.4 版)(连接数据库)
数据库