HBase
1.介绍
是分布式面向列的数据库,构建在Hadoop之上,类似goole的big table技术,
对海量结构化数据的快速随机访问,提供实时读写
是Hadoop生态系统的一部分
2.hbase和Hadoop的区别
hdfs hbase
a.分布式文件系统,存储大量数据 数据库,构建于hdfs之上
b.不支持快速单个记录查找 支持大表的快速查找
c.提供高延迟的批处理 提供了单行记录低延迟的随机访问(10亿级别)
d.只提供数据按序访问 内部使用hash表提供的随机访问。在hdfs上存放索引文件,用于快速查找
3.hbase的存储机制
1).面向列族(一组列)的数据库,适用于海量数据的随机读写
2).table只定义了列族,表是按照行存储
3).术语
table :表,是行的集合
row :行是列族的集合
column :列族,是列的集合
column family :列,是KV键值对的集合
4).面向行和面向列的区别
行row 列column
a).适合于OLTP(在线事务处理) 适合于OLAP(在线分析处理)
b).针对行列较少的 适用于大表
5).hbase和RDBMS区别
hbase RDBMS
a.是无模式的,没有列的定义 有模式的,描述整个table结构
只定义列族,列是key
b.适合于宽表,水平可伸缩 适合于小表,难于扩展
c.没有事务支持 事务性的
d.不是规范化的 规范化的
e.结构化和半结构化 完全结构化
HBase架构
1.master-slave主从结构
2.table从竖直方向进行切割,分成若干个区域,由每个region server进行处理
3.master server(ms)
a.负责指派region给RS。通过zk获得task的帮助
b.处理跨RS的region的负载均衡问题。
c.从繁忙服务器到空闲服务器之间的数据转载。
d.通过裁定负载均衡判断集群的状态。
4.region
被切割的表,跨RS
5.region server(rs)
和client通信
处理数据操作
处理下面所有的region的读写请求
通过阀值决定region size
HBase安装
先配置ssh ,下载安装Java 、Hadoop。
1.下载HBase
2.配置环境变量和Java
# tar开
tar -zxvf hbase-2.2.0-bin.tar.gz -C /usr/local/src/
# 创建软连接
ln -s hbase-2.2.0/ hbase
# 配置 环境变量
vim /etc/profile.d/hbase.sh
export HBASE_HOME=/usr/local/src/hbase
export PATH=$PATH:$HBASE_HOME/bin
# 使配置文件生效 输出测试
source /etc/profile.d/hbase.sh
echo $HBASE_HOME
/usr/local/src/hbase
cd $HBASE_HOME/conf/
vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk
单机模式
所有的hbase进程和zk都运行在同一个JVM中
vim $HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>file:///root/hbase/root</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>file:///root/hbase/zk</value>
</property>
伪分布式
vim $HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://s1:9000/hbase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
完全分布式
vim $HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://s1:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>s1,s2,s3</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
# 配置region server 类似Hadoop中的slave配置文件
vim regionservers
s1
s2
s3
# jps命令查看
[root@s1 conf]# xcall jps
3154 NodeManager
2739 DataNode
2485 QuorumPeerMain
3767 HMaster
3994 Jps
2620 NameNode
3052 ResourceManager
3885 HRegionServer
2959 DFSZKFailoverController
-------- s2 --------
1569 NameNode
1496 QuorumPeerMain
1659 DataNode
2253 Jps
1759 DFSZKFailoverController
1839 NodeManager
2111 HRegionServer
-------- s3 --------
1872 HRegionServer
1426 QuorumPeerMain
1493 DataNode
2012 Jps
1598 NodeManager
主节点(s1):
HMaster
HRegionServer
s2:
HRegionServer
s3:
HRegionServer
启动成功!!!
浏览器输入:http://192.168.159.150:60010/master-status
查看
同时查看Hadoop:http://192.168.159.150:50070
hbase shell
# 进入hbase shell
# 创建表
create "stu","lie"
# 查看表
list
# 查看结构(描述)
describe "stu"
# 插入数据
put "stu","1","lie:name","xiaoming"
# 查看数据是否插入成功
scan "stu"
# 退出
exit