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 |
銀行卡開戶行名稱 |