【IT168資料庫大會 現場報導】2013年4月18-20日,第四屆中國資料庫技術大會(DTCC 2013)在北京福朋喜來登酒店拉開序幕。在為期三天的會議中,大會將圍繞大數據應用、數據架構、數據管理(數據治理)、傳統資料庫軟體等技術領域展開深入探討,並將邀請一批國內頂尖的技術專家來進行分享。本屆大會將在保留資料庫軟體應用實踐這一傳統主題的基礎上,向大數據、數據結構、數據治理與分析、商業智能等領域進行拓展,以滿足於廣大從業人士和行業用戶的迫切需要。
▲2013中國資料庫大會專題報導
自2010年以來,國內領先的IT專業網站IT168聯合旗下ITPUB、ChinaUnix技術社區已經連續舉辦了三屆資料庫技術大會,每屆大會超過千人規模,雲集了國內技術水平最高的數據架構師、DBA、資料庫開發工程師、研發總監、IT經理等,是目前國內最受歡迎的資料庫技術盛會。
▲阿里數據平臺開發工程師,HBase社區Committer:天梧(沈春輝)
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。
特點:海量數據(TB以上)、很高的隨機寫能力、在海量數據中實現高效的讀取、很好的伸縮能力、強一致性、能夠同時處理結構化和非結構化的數據、動態列、不需要複雜的查詢需求包括:SQL、事物、Join、多維索引等。
HBase的版本發展:
2007.4 第一個版本(HVASE-287 Mike Cafarella)
2010.10 0.89(Facebook的生產版本 based on)
2011.4 0.90.2(阿里HBASE的第一個版本 based on)
2012.1 0.92(Adds 安全,協處理器,HFile V2,分布式log-Splitting)
2012.5 0.94(Performance Release),目前是主流版本。
2013.4 0.95(0.96的預發版,Adds protobuf,Table Snapshot,PrefixTreeCompression等等)
Coming 0.96
HBase在阿里的發展:
2011.3月開始研究
2011.5月上線第一個應用
截止目前:以基於0.94的阿里HBase版本為主、穩定性達到在線應用的城池標準之上、近百個業務,特點多樣化。
國內外應用發展HBase的公司:
Cloudera、Hortonworks、Salesforce等
faceboook、Yahoo、eBay、Twitter、Pinterest、Line等
Intel、IBM等
阿里巴巴、華為、小米、360等。
實踐與改進--Bucket Cache(Allocate Block)
1、將整個邏輯上的存儲塊切割成一個個的Bucket。2、每一個Bucket都有相同的固定的容量,e.g.2MB as default;3、每一個bucket都擁有一個size tag,cache這個size以內的Block。4、對於完全空閒的Bucket,它的size tag可以被重新指定。5、每一個bucket與物理存儲的位置有固定的映射關係,根據Block在Bucket中的偏移,則就可以計算出其在物理存儲中的偏移。
實踐與改進--優化Java的GC麻煩
1、Concurrent mode failure
原因:old區要分配內存了,但是old區空間不夠,而此時CMS正在運行中
解決:降低YGC頻率,降低CMS GC觸發時機(降低 CMSInitiatingOccupancyFraction的值)
2、Promotion Failed(發生很多)
原因:old區要分配內存了,但是找不到空間分配,卻還沒達到CMS的觸發值。
heap碎片+YGC晉升對象(Block,Memstore Chunk)過大
解決:聚合小數據:開啟msalab(注意Region數目)
HBase自己管理(重用)內存對象:Bucket Cache(HBASE-7404)(使用Byte buffer作為IOEngine的存儲介質)、Chunk Pool(HBASE-8163)。
YGC停頓過長
原因1:Young區活對象數目過多,old區髒頁數目過多
原因2:MemStore中的Keyvalueset,開啟WAL壓縮後的字典map
解決:1、降低young區大小。2、減小-XX:Maxcache/ChunkPool,減少晉升對象,減少拷貝時間。
實踐與改進--更高的服務可用性
服務單點
▲更多優化
HBase是Google Bigtable的開源實現,類似Google Bigtable利用GFS作為其文件存儲系統,HBase利用Hadoop HDFS作為其文件存儲系統;Google運行MapReduce來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable利用 Chubby作為協同服務,HBase利用Zookeeper作為對應。
hbase是bigtable的開源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的資料庫系統。
它介於nosql和RDBMS之間,僅能通過主鍵(row key)和主鍵的range來檢索數據,僅支持單行事務(可通過hive支持來實現多表join等複雜操作)。主要用來存儲非結構化和半結構化的鬆散數據。
與hadoop一樣,Hbase目標主要依靠橫向擴展,通過不斷增加廉價的商用伺服器,來增加計算和存儲能力。
企業面臨以下問題時,可以考慮選擇HBase。如數據量急劇增加,需要TB級甚至PB級的在線服務;數據量增長速度快,對水平擴展能力有需求,前期少量投入,隨著數據量的不斷增加,後期可以不斷追加;只是簡單的kv讀寫,要求響應延時低;要求強一致性;每秒上萬的寫入,並且需要批量讀取,大量的隨機讀取,需要大吞吐量;應用程式不斷變更,導致schema多變;最後一個則是整個平臺是一個Java平臺,需要良好的Java接口等等。而HBase無疑很好地滿足了這些特點。