GitHub項目Storm-HBase介紹


最近完成了一個GitHub項目:Storm-HBase,該項目是Twitter StormApache HBase的結合,它使用HBase cluster作為Storm的Spout數據源,目前只是初步實現,后續會進一步完善。

HBaseSpout根據時間戳范圍[start_timestamp, stop_timestamp],持續不間斷地從HBase cluster讀取流數據:

  • 如果start_timestamp = 0,HBaseSpout將默認從3分鍾前的數據開始讀取並發送到Storm cluster;否則從用戶指定的start_timestamp開始讀取數據。
  • 如果stop_timestamp = 0, HBaseSpout將默認讀取到當前時間的數據,並隨着時間流動持續地讀取新的數據並發送到Storm cluster;否則讀取到用戶指定的stop_timestamp后停止讀取。

以上有關[start_timestamp, stop_timestamp]的設計,是為了適應不同的運行模式:

  • 最典型情況下,start_timestamp = 0 and stop_timestamp = 0,則從3分鍾前開始讀取發送數據,然后會同步掃描HBase cluster中的新數據,並發送給Storm cluster,適合用戶實時計算的情景。
  • 出現問題的情況下,例如Storm cluster重啟,計算任務狀態被丟失,此時可能需要能夠Spout進行數據的回傳(data rewind),通過指定[start_timestamp, stop_timestamp]可以滿足這一需求。

Storm-HBase力求盡可能做到通用化,因此提取了Storm和HBase的配置信息。有關Storm-HBase的配置選項,可以在GitHub工程的src/main/resources/storm.properties以及src/main/resources/hbase.properties文件中找到。如果你的HBase表的Schema結構與上述類似,那么只需要進行簡單的配置即可使用Storm-HBase。

目前的HBaseSpout實現基於以下假設:

  • HBase表的rowkey形式為[shardingkey, timestamp, ...];
  • shardingkey占據第1個byte,表示表中數據的分區數,一般是100以內,所以這里使用了short類型存儲;
  • timestamp占據第2~5個byte,表示數據中的時間戳信息,這里timestamp是秒級的UNIX時間戳值,使用了int型存儲。

更多關於Storm-HBase的介紹及進展,請參加項目的GitHub鏈接:https://github.com/ypf412/storm-hbase


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM