什么是HBase技術(shù)?HBase 是一個開源的、分布式、版本化、高可靠、高性能、面向列、可伸縮的NoSQL數(shù)據(jù)庫,它利用Hadoop分布式文件系統(tǒng)提供分布式數(shù)據(jù)存儲。
HBase訪問接口
Native Java API,最常規(guī)和高效的訪問方式,適合Hadoop MapReduce Job并行批處理HBase表數(shù)據(jù)
HBase Shell,HBase的命令行工具,最簡單的接口,適合HBase管理使用
Thrift Gateway,利用Thrift序列化技術(shù),支持C++,PHP,Python等多種語言,適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù)
REST Gateway,支持REST 風(fēng)格的Http API訪問HBase, 解除了語言限制
Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù),和Hive類似,本質(zhì)最終也是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計
Hive,當(dāng)前Hive的Release版本尚沒有加入對HBase的支持,但在下一個版本Hive 0.7.0中將會支持HBase,可以使用類似SQL語言來訪問HBase。
HBase運行模式
HBase的運行有三種模式:單機模式、偽分布式模式、分布式模式。
單機模式:在一臺計算機上安裝和使用HBase,不涉及數(shù)據(jù)的分布式存儲;
偽分布式模式:在一臺計算機上模擬一個小的集群;
分布式模式:使用多臺計算機實現(xiàn)物理意義上的分布式存儲。這里出于學(xué)習(xí)目的,我們只重點討論單機模式和偽分布式模式。
Hbase的應(yīng)用場景
對象存儲:我們知道不少的頭條類、新聞類的的新聞、網(wǎng)頁、圖片存儲在HBase之中,一些病毒公司的病毒庫也是存儲在HBase之中
時序數(shù)據(jù):HBase之上有OpenTSDB模塊,可以滿足時序類場景的需求
推薦畫像:特別是用戶的畫像,是一個比較大的稀疏矩陣,螞蟻的風(fēng)控就是構(gòu)建在HBase之上
時空數(shù)據(jù):主要是軌跡、氣象網(wǎng)格之類,滴滴打車的軌跡數(shù)據(jù)主要存在HBase之中,另外在技術(shù)所有大一點的數(shù)據(jù)量的車聯(lián)網(wǎng)企業(yè),數(shù)據(jù)都是存在HBase之中
OLAP:Kylin一個cube分析工具,底層的數(shù)據(jù)就是存儲在HBase之中,不少客戶自己基于離線計算構(gòu)建cube存儲在hbase之中,滿足在線報表查詢的需求
消息/訂單:在電信領(lǐng)域、銀行領(lǐng)域,不少的訂單查詢底層的存儲,另外不少通信、消息同步的應(yīng)用構(gòu)建在HBase之上
Feeds流:典型的應(yīng)用就是xx朋友圈類似的應(yīng)用
NewSQL:之上有Phoenix的插件,可以滿足二級索引、SQL的需求,對接傳統(tǒng)數(shù)據(jù)需要SQL非事務(wù)的需求
為什么采用HBase?
HBase 不同于一般的關(guān)系數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫.所謂非結(jié)構(gòu)化數(shù)據(jù)存儲就是說HBase是基于列的而不是基于行的模式,這樣方面讀寫你的大數(shù)據(jù)內(nèi)容。
HBase是介于Map Entry(key & value)和DB Row之間的一種數(shù)據(jù)存儲方式。就點有點類似于現(xiàn)在流行的Memcache,但不僅僅是簡單的一個key對應(yīng)一個 value,你很可能需要存儲多個屬性的數(shù)據(jù)結(jié)構(gòu),但沒有傳統(tǒng)數(shù)據(jù)庫表中那么多的關(guān)聯(lián)關(guān)系,這就是所謂的松散數(shù)據(jù)。
簡單來說,你在HBase中的表創(chuàng)建的可以看做是一張很大的表,而這個表的屬性可以根據(jù)需求去動態(tài)增加,在HBase中沒有表與表之間關(guān)聯(lián)查詢。你只需要 告訴你的數(shù)據(jù)存儲到Hbase的那個column families 就可以了,不需要指定它的具體類型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事務(wù)此類的功 能。
Apache HBase 和Google Bigtable 有非常相似的地方,一個數(shù)據(jù)行擁有一個可選擇的鍵和任意數(shù)量的列。表是疏松的存儲的,因此用戶可以給行定義各種不同的列,對于這樣的功能在大項目中非常實用,可以簡化設(shè)計和升級的成本。