天天看点

大数据生态之HBase学习

大数据生态之HBase

    • HBase
      • 1.介绍
      • 2.hbase和Hadoop的区别
      • 3.hbase的存储机制
    • HBase架构
    • HBase安装
      • 单机模式
      • 伪分布式
      • 完全分布式

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命令查看
[[email protected] 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

查看

大数据生态之HBase学习

同时查看Hadoop:http://192.168.159.150:50070

大数据生态之HBase学习
hbase shell
# 进入hbase shell
           
# 创建表
create "stu","lie"
# 查看表
list
# 查看结构(描述)
describe "stu"
# 插入数据
put "stu","1","lie:name","xiaoming"
# 查看数据是否插入成功
scan "stu"
# 退出
exit
           

继续阅读