2013年11月22-23日,作為國內唯一專注于hadoop技術與應用分享的大規模行業盛會,2013 Hadoop中國技術峰會(China Hadoop Summit 2013)于北京福朋喜來登集團酒店隆重舉行。來自國內外各行業領域的近千名CIO、CTO、架構師、IT經理、咨詢顧問、工程師、Hadoop技術愛好者,以及從事Hadoop研究與推廣的IT廠商和技術專家將共襄盛舉。
在SQL&NoSQL專場,來自小米的資深工程師劉紹輝做了《從關系型Mysql到Nosql HBase的遷移實踐》演講。詳細介紹了HBase,以及HBase在小米的使用,小米開發的重要特性和未來的開發計劃。
首先,劉紹輝在介紹HBase,他談到,小米從去年開始調研測試,目前已經十幾個業務接入到了HBase上,包括米聊消息的全存儲、MiCloud上短信通話記錄的同步、小米Push服務、以及一些離線的數據分析業務。
劉紹輝談到,典型的HBase集群包含了3到5個控制節點,5到n個的數據節點。控制節點和數據節點的主要區別在磁盤上,控制節點對磁盤的容量要求并不是很高,主要是要求磁盤要穩定。
▲典型的HBase集群
劉紹輝繼續介紹到,整個系統的自動化部署是小米自己開發的minos工具,直接在命令行操作,可以很簡單的創建集群、修改配置文件、升級集群、刪除集群等功能。同時,minos也集成了一個監控的功能。目前,這款工具已經在github上開源,小米內部使用的版本和開源版本基本上是一致的(https://github.com/xiaomi/Minos)。
介紹到最佳實踐,劉紹輝說,“我們在原生的HBase Client基礎上封裝了一層小米的HBase Client。這主要是實現了四件事,一是保證線程的安全,二是在HBase Client中可以自動添加性能指標,三是跨表、跨集群操作對用戶來說是一致的,四是可以做到動態的更新客戶端配置。”
對于一些數據比較重要的業務,我們使用了雙主復制,并實現了主備集群的自動切換。當我們確認需要切換集群的時候只要簡單的修改一個配置,新的讀寫請求就會被切換到備集群上。
▲最佳實踐
另外,在其他方面也有了一些優化,如平滑升級,使用基于move region腳本減少不可用時間;Full GC,每天低峰期觸發Full GC;Compaction,提升寫的性能;四是Shortcircuit Read;安全,Kerberos認證。
在最后談到未來的開發計劃,劉紹輝介紹到,我們希望能做到同步復制,跨行跨表的原子性,全局二級索引,以及做一些Compaction優化, Failover相關的優化,多租戶共享集群與共有云,HMaster重構。在與社區共同發展方面,劉紹輝繼續談到,我們也會參與HBase修改反饋回社區,以及會緊跟社區最新進展,積極參與社區方案設計和討論。