Hbase的配置和分布式部署

Table of Contents

概述

实现原理、运行机制

1. Hbase和传统数据库的区别和联系:

2. region寻址定位(三级寻址)

3. 运行机制

3.1 master服务器

3.2 region服务器

一、下载和配置

1. 下载

2. 配置

二、hbase命令行基本操作


概述

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库,Hbase表是稀疏、多维度、排序的映射表。它是一个开源项目,是横向扩展的。该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式的文件系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。Hbase单表可容纳数十亿行、上百万列。

说明:三台机器的主机名分别为:bigdata.centos01、bigdata.centos02、bigdata.centos03,其中centos01上面部署活动的master和regionserver,centos02上面部署后备的master以及regionserver,centos03上部署regionserver。Hbase安装配置是基于单namenode节点服务配置。

Hbase需要依赖HDFS已经zookeeper,在安装前要确保Hadoop和zookeeper已经安装。如果没有安装Hadoop和zookeeper,请参阅:Hadoop集群搭建 zookeeper的配置和分布式部署 。

实现原理、运行机制

1. Hbase和传统数据库的区别和联系:

  • 数据类型方面:传统关系型数据库用的是非常经典的数据模型,Hbase每个值都是未经解释的字符串
  • 数据操作方面:关系型数据库定义了非常多的数据操作
  • 存储模型方面:关系型数据库是基于行的,Hbase是基于列的
  • 数据索引方面:关系型数据库可以针对各个不同的列,构建复杂的索引
  • 数据维护方面:关系型数据库做更新操作,旧的值会被新的值覆盖掉;Hbase会保留,过了时间后台自动清除
  • 可伸缩性方面:Hbase基于HDFS可以实现很好的水平扩展

2. region寻址定位(三级寻址)

第一层zookeeper文件记录-Root-表位置信息
第二层-Root表-记录了.META表的Region位置信息。-Root-表只有一个Region,通过-Root-表就可以访问.META表数据
第三层.META表记录了数据表的Region信息,.META表可以有多个Region,保存了Hbase中所有用户数据表Region位置信息

3. 运行机制

3.1 master服务器

  • 管理用户对Table表的增、删、改、查操作
  • 负责不同region服务器的负载均衡
  • 负载调整分裂、合并后region的分布
  • 重新分配故障或失效的region服务器

3.2 region服务器

用户存取数据都是和region服务器交互,每个region服务器都有一个Hlog文件(即多个region共用一个Hlog文件),Hbase的存储是以列簇为单位的,每个列簇会单独构成一个store,store写数据先写到MemStore里面,当memstore满了之后再写入StoreFile,StoreFile底层是借助HDFS以HFile文件来存储的。

  • 用户写数据过程

首先会把数据写入到MemStore,同时为了保证数据的安全和可恢复性,会写HLog日志,只有HLog日志完整的写入磁盘以后,才允许返回客户端

  • 用户读数据过程

由于最新的数据在MemStore中,首先会访问MemStore,如果MemStore找不到数据,再去StoreFile找

  • 缓存刷新与region分裂

系统会周期性的把MemStore的数据写到磁盘的StoreFile文件中,然后清空缓存,并在Hlog写入标记。每次刷新都会生成一个新的StoreFile文件,故而一个store会有多个StoreFile文件,StoreFile文件达到一定数量之后会进行合并生成更大的StoreFile文件。当StoreFile文件合并越来越大之后,达到一个阈值后,会引发分裂操作,一个Region会分裂成两个Region,这就是Region分裂发生的地方

一、下载和配置

1. 下载

# 由于下载的Hadoop是cdh5.3.9,故而hbase也下载的是cdh5.3.9
wget http://archive.cloudera.com/cdh5/cdh/5/hbase-0.98.6-cdh5.3.9.tar.gz

2. 配置

  • 修改conf/hbase-env.sh
# 配置java
export JAVA_HOME=/opt/modules/jdk8

# 不使用自带的zookeeper,默认是true
export HBASE_MANAGES_ZK=false
  • 修改conf/hbase-site.xml
<!--配置hdfs的namenode节点-->
<property>
	<name>hbase.rootdir</name>
	<value>hdfs://bigdata.centos01:9000/hbase</value>
</property>

<!--配置是否是分布式-->
<property>
	<name>hbase.cluster.distributed</name>
	<value>true</value>
</property>

<!--配置zookeeper节点-->
<property>
	<name>hbase.zookeeper.quorum</name>
	<value>bigdata.centos01,bigdata.centos02,bigdata.centos03</value>
</property>
  • 修改conf/regionservers
# regionserver子节点
bigdata.centos01
bigdata.centos02
bigdata.centos03
  • 新建修改conf/backup-masters文件,配置备用的master
# 选取centos02的master作为备用
bigdata.centos02
  • 配置完之后将hbase同步到其他的两台机器
scp -r hbase-0.98.6-cdh5.3.9 <hostname>:<path>
  • 集群服务启动
# 单个进程启动
# bin/hbase-daemon.sh start master
# bin/hbase-daemon.sh start regionserver

# 集群master和regionserver进程启动(需配置ssh无秘钥登录)
bin/start-hbase.sh
  • 访问hbase的web监控界面
http://bigdata.centos01:60010

访问界面如下:

二、hbase命令行基本操作

  • 进入命令行操作
bin/hbase shell
  • 建表:create '表名', '列簇'

  • 查看表:list

  • 插入数据:put '表名', '行', '列簇:列名', '值'

  • 查表:scan '表名'

  • 删除表:drop '表名'(删除之前需要禁用disable)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值