HBase基础

1、hbase

google:
gfs –> hdfs
mapreduce –> mapreduce
bigtable –> hbase

Apache HBase™是Hadoop数据库,是一个分布式,可扩展的大数据存储

当您需要对大数据进行随机,实时读/写访问时,请使用Apache HBase™。该项目的目标是托管非常大的表 - 数十亿行X百万列 - 在商品硬件集群上。Apache HBase是一个开源的,分布式的,版本化的非关系数据库nosql,模仿Google的Bigtable: Chang等人的结构化数据分布式存储系统。正如Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供类似Bigtable的功能

2、hbase集群角色

hdfs: NameNode DataNode
yarn: ResourceManager NodeManager
zookeeper: QuorumPeerMain
hbase: HMaster RegionServer

主从结构
HMaster:
1)对RegionServer监控
2)处理一些元数据的变更
3)对RegionServer进行故障转移
4)空闲时对数据进行负载均衡
5)对region进行管理
6)发布位置到客户端借助于zookeeper

RegionServer:
1)存储hbase实际的数据
2)刷新缓存数据到hdfs
3)处理Region
4)可以进行压缩
5)对Hlog进行维护
6)对region分片

3、hbase集群安装部署

1)需要安装好zookeeper集群

2)需要安装好hadoop集群
hdfs
yarn

3)解压hbase压缩包
tar -zxvf hbase-1.3.0-bin.tar.gz

4)修改配置hbase-env.sh
export JAVA_HOME=/root/hd/jdk1.8.0_192
export HBASE_MANAGES_ZK=false

5)配置hbase-site.xml
cd /root/hd/hbase-1.3.0
vi hbase-site.xml

<configuration>
<!-- 设置namenode所在位置 通过rootdir设置 也就是设置hdfs中存放的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hsiehchou121:9000/hbase</value>
</property>
<!-- 是否开启集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<!-- zookeeper集群的位置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hsiehchou121:2181,hsiehchou122:2181,hsiehchou123:2181,hsiehchou124:2181</value>
</property>
<!-- hbase的元数据信息存储在zookeeper的位置 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/root/hd/zookeeper-3.4.10/zkData</value>
</property>
</configuration>

指定从节点regionservers
vi regionservers

hsiehchou122
hsiehchou123
hsiehchou124

6)解决依赖问题
HBase依赖于Hadoop,换成2.8.4的hadoop依赖包
hadoop-annotations-2.8.4.jar
hadoop-auth-2.8.4.jar
hadoop-common-2.8.4.jar
hadoop-hdfs-2.8.4.jar
hadoop-hdfs-client-2.8.4.jar
hadoop-mapreduce-client-app-2.8.4.jar
hadoop-mapreduce-client-common-2.8.4.jar
hadoop-mapreduce-client-core-2.8.4.jar
hadoop-mapreduce-client-hs-2.8.4.jar
hadoop-mapreduce-client-hs-plugins-2.8.4.jar
hadoop-mapreduce-client-jobclient-2.8.4.jar
hadoop-mapreduce-client-jobclient-2.8.4-tests.jar
hadoop-mapreduce-client-shuffle-2.8.4.jar
hadoop-yarn-api-2.8.4.jar
hadoop-yarn-applications-distributedshell-2.8.4.jar
hadoop-yarn-applications-unmanaged-am-launcher-2.8.4.jar
hadoop-yarn-client-2.8.4.jar
hadoop-yarn-common-2.8.4.jar
hadoop-yarn-server-applicationhistoryservice-2.8.4.jar
hadoop-yarn-server-common-2.8.4.jar
hadoop-yarn-server-nodemanager-2.8.4.jar
hadoop-yarn-server-resourcemanager-2.8.4.jar
hadoop-yarn-server-web-proxy-2.8.4.jar

zookeeper-3.4.10.jar

7)软连接core-site.xml hdfs-site.xml
ln -s /root/hd/hadoop-2.8.4/etc/hadoop/hdfs-site.xml
ln -s /root/hd/hadoop-2.8.4/etc/hadoop/core-site.xml

8)发送到其他机器
scp -r hbase-1.3.0 hsiehchou122:/root/hd
scp -r hbase-1.3.0 hsiehchou123:/root/hd
scp -r hbase-1.3.0 hsiehchou124:/root/hd

fiind /root/hd/hadoop-2.8.4/ -name hadoop-a*

9)访问ui界面
http://192.168.116.121:16010/master-status

启动hbase
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver

关闭hbase
bin/hbase-daemon.sh stop master
bin/hbase-daemon.sh stop regionserver

4、hbase设计架构

Rowkey行键 类似 id
列式存储
hbase操作

1)查看表操作
list

2)显示当前服务器状态
status ‘hsiehchou121’
1 active master, 0 backup masters, 3 servers, 0 dead, 0.5000 ave
rage load
1 active master: 1个存活的master
0 backup masters: 0个备份master
3 servers: 3个regionserver
0 dead: 没有挂掉的
0.5000 average load:平均加载

3)显示当前用户
whoami

4)创建表
create ‘表名’,’列族’
create ‘user’,’info1’

5)添加数据
put ‘表名’,’rowkey’,’列族:列’,’值’
put ‘user’,’1001’,’info1:name’,’xie’
put ‘user’,’1001’,’info1:age’,’19’

删除需要ctrl+<-

6)全表扫描
scan ‘表名’
scan ‘user’

ROW COLUMN+CELL
1001 column=info1:age, timestamp=1552579563486, value=19
1001 column=info1:name, timestamp=1552579531260, value=xie

7)hbase没有修改,只有覆盖
put ‘user’,’1001’,’info1:name’,’mi’
只要对应上表名、rowkey、列族、列即可

8)查看表结构
describe ‘user’

9)变更表结构信息
alter ‘user’,{NAME => ‘info1’,VERSIONS=>’8’}

10)查看指定的数据信息
指定具体的rowkey
get ‘user’,’1001’
指定具体的列
get ‘user’,’1001’,’info1:name’

11)清空表
truncate ‘user1’

12)删除表
需要先指定不可用
disable ‘表名’
drop ‘表名’
disable ‘user1’
drop ‘user1’

13)扫描指定范围
指定从某一rowkey扫描
scan ‘user’,{STARTROW => ‘1002’}

包含头不包含尾(1001保留,1002不扫描)
scan ‘user’,{STARTROW => ‘1001’, STOPROW => ‘1002’}

14)统计rowkey的个数
count ‘user’

15)退出hbase shell
quit

原文地址:https://www.cnblogs.com/hsiehchou/p/10544355.html