GitHub項目Storm-HBase介紹
最近完成了一個GitHub項目:Storm-HBase,該項目是Twitter Storm和Apache HBase的結合,它使用HBase cluster作為Storm的Spout數(shù)據(jù)源,目前只是初步實現(xiàn),后續(xù)會進一步完善。
HBaseSpout根據(jù)時間戳范圍[start_timestamp, stop_timestamp],持續(xù)不間斷地從HBase cluster讀取流數(shù)據(jù):
- 如果start_timestamp = 0,HBaseSpout將默認從3分鐘前的數(shù)據(jù)開始讀取并發(fā)送到Storm cluster;否則從用戶指定的start_timestamp開始讀取數(shù)據(jù)。
- 如果stop_timestamp = 0, HBaseSpout將默認讀取到當前時間的數(shù)據(jù),并隨著時間流動持續(xù)地讀取新的數(shù)據(jù)并發(fā)送到Storm cluster;否則讀取到用戶指定的stop_timestamp后停止讀取。
以上有關[start_timestamp, stop_timestamp]的設計,是為了適應不同的運行模式:
- 最典型情況下,start_timestamp = 0 and stop_timestamp = 0,則從3分鐘前開始讀取發(fā)送數(shù)據(jù),然后會同步掃描HBase cluster中的新數(shù)據(jù),并發(fā)送給Storm cluster,適合用戶實時計算的情景。
- 出現(xiàn)問題的情況下,例如Storm cluster重啟,計算任務狀態(tài)被丟失,此時可能需要能夠Spout進行數(shù)據(jù)的回傳(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實現(xiàn)基于以下假設:
- HBase表的rowkey形式為[shardingkey, timestamp, ...];
- shardingkey占據(jù)第1個byte,表示表中數(shù)據(jù)的分區(qū)數(shù),一般是100以內,所以這里使用了short類型存儲;
- timestamp占據(jù)第2~5個byte,表示數(shù)據(jù)中的時間戳信息,這里timestamp是秒級的UNIX時間戳值,使用了int型存儲。
更多關于Storm-HBase的介紹及進展,請參加項目的GitHub鏈接:https://github.com/ypf412/storm-hbase
浙公網(wǎng)安備 33010602011771號