HBase教程
(注:安装服务器和需连接hbase的服务器的hosts文件的配置 192.168.6 Demo01)
Hbase简介
HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。是横向扩展的。可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。
HBase 和 HDFS
HDFS |
HBase |
HDFS是适于存储大容量文件的分布式文件系统。 |
HBase是建立在HDFS之上的数据库。 |
HDFS不支持快速单独记录查找。 |
HBase提供在较大的表快速查找 |
它提供了高延迟批量处理;没有批处理概念。 |
它提供了数十亿条记录低延迟访问单个行记录(随机存取)。 |
它提供的数据只能顺序访问。 |
HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。 |
HBase的存储机制
在一个HBase:
· 表是行的集合。
· 行是列族的集合。
· 列族是列的集合。
· 列是键值对的集合。
Rowide |
Column Family |
Column Family |
Column Family |
Column Family |
||||||||
|
col1 |
col2 |
col3 |
col1 |
col2 |
col3 |
col1 |
col2 |
col3 |
col1 |
col2 |
col3 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
HBase架构
HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。
主服务器:
· 分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务。
· 处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器。
· 通过判定负载均衡以维护集群的状态。
· 负责模式变化和其他元数据操作,如创建表和列。
区域:只不过是表被拆分,并分布在区域服务器。
区域服务器:
· 与客户端进行通信并处理数据相关的操作。
· 句柄读写的所有地区的请求。
· 由以下的区域大小的阈值决定的区域的大小。
存储包含内存存储和HFiles。memstore就像一个高速缓存。在这里开始进入了HBase存储。数据被传送并保存在Hfiles作为块并且memstore刷新。
Hbase安装
单机模式,模拟分布式模式,以及全分布式模式
全分布式模式安装
参考:http://blog.csdn.net/chabale/article/details/8808620
hbase-env.sh 修改JAVA_HOME变量
hbase-site.xml
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>>hbase.rootdir</name>
<value>hdfs://Demo01:9000/hbase</value>
</property>
<property>
<name>hbase.master</name>
<value>Demo01:60000</value>
</property>
<property>
<name>>hbase.zookeeper.quorum</name>
<value>Demo01</value>
</property>
<property>
<name>>hbase.zookeeper.property.dataDir</name>
<value>/home/slshop/data/zookeeper</value>
</property>
修改conf下的regionservers文件
启动
到hbase的bin目录运行./hbase shell
Hive整合Hbase
作用:使hive可以读取Hbase中的数据
HBase开发
Windows开发的hosts里面设置hbase连接的zookeeper服务器的别名和ip
HBase数据结构设计
Saas平台
1) 交易订单 saas_trade_order
列族:order data、merchant data、pay data
创建shell: create 'saas_trade_order','order data','merchant data','pay data'
列 :
所属列族 |
order data |
order_no |
订单号 |
trade_amt |
交易金额 |
ip |
Ip |
trade_status |
状态 0:创建,1:成功,2:失败,6:提交 |
log_date_time |
日志记录时间 |
所属列族 |
merchant data |
merch_no |
商户号 |
merchant_name |
商户名称 |
所属列族 |
pay data |
pay_time |
交易时间 |
pay_order_no |
支付订单号 |
trade_summary |
交易摘要 |
card_bank_name |
支付渠道 |
pay_type |
支付方式 |
trade_type |
交易类别 |
notify_url |
商户返回地址 |
2) 结算saas_sett_record
列族:sett data、merchant data、bank data
创建shell: create 'saas_sett_record','sett data','merchant data','bank data'
列 :
所属列族 |
sett data |
sett_order_no |
订单号 |
ip |
Ip |
sett_status |
结算状态 0:未处理 1:打款成功 2:打款失败 3:处理中 |
sett_type |
结算类型 0提现,1直连代付 2 申请代付 |
acc_status |
账务系统入账状态,0未入账,1已入账 |
sett_amt |
结算金额 |
suc_time |
成功时间 |
cr_time |
创建时间 |
所属列族 |
merchant data |
merchant_no |
商户号 |
merchant_name |
商户名称 |
merch_acc_date |
商户交易日期 |
merch_sett_no |
商户订单号 |
所属列族 |
bank data |
bank_code |
银行卡编码 |
bank_acc_no |
银行卡号 |
bank_acc_name |
银行卡户名 |
bank_name |
银行卡开户行名称 |