HBase模式案例日誌數據和時間序列數據

感謝平臺分享-http://bjbsair.com/2020-04-10/tech-info/53339.html

本文爲你介紹了 HBase 模式案例之一:日誌數據和時間序列數據

假設正在收集以下數據元素。

  • 主機名(Hostname)
  • 時間戳(timestamp)
  • 日誌事件(Log event)
  • 值/消息(Value/message)

我們可以將它們存儲在名爲 LOG_DATA 的 HBase 表中,但 rowkey 會是什麼呢?從這些屬性中,rowkey 將是主機名,時間戳和日誌事件的一些組合,但具體是什麼?

行密鑰(Rowkey)主導位置中的時間戳(Timestamp)

rowkey [timestamp][hostname][log-event] 受單調遞增的行鍵/時間戳數據(Monotonically Increasing Row Keys/Timeseries Data)中描述的單調增長 rowkey 問題的影響。

通過在時間戳上執行 mod 操作,在關於 "bucketing" 時間戳的 dist-lists 中經常提到另一種模式。如果時間掃描很重要,這可能是一個有用的方法。必須注意 bucket 的數量,因爲這需要相同數量的掃描來返回結果。

HBase模式案例:日誌數據和時間序列數據

構造:

HBase模式案例:日誌數據和時間序列數據

如上所述,要選擇特定時間範圍(timerange)的數據,需要爲每個存儲 bucket 執行 Scan。例如,100個存儲 bucket 將在密鑰空間中提供廣泛的分佈,但它需要 100 次 Scan 才能獲得單個時間戳的數據,因此存在權衡。

行密鑰(Rowkey)主導位置中的主機(Host)

如果有大量的主機在整個密鑰空間中進行寫入和讀取操作,則 rowkey [hostname][log-event][timestamp] 是一個候選項。如果按主機名掃描是優先事項,則此方法非常有用。

時間戳或反向時間戳

如果最重要的訪問路徑是拉取最近的事件,則將時間戳存儲爲反向時間戳(例如,timestamp = Long.MAX_VALUE – timestamp)將創建能夠對 [hostname][log-event] 執行 Scan 以獲取最近捕獲的事件的屬性。

這兩種方法都不是錯的,它只取決於什麼是最適合的情況。

反向掃描 API

HBASE-4811 實現了一個 API,它以反向掃描表格或範圍內的表格,從而減少了對正向或反向掃描進行模式優化的需求。此功能在 HBase 0.98 和更高版本中可用。

可變長度或固定長度的行鍵

記住,在 HBase 的每一列上加蓋行密碼是非常重要的。如果主機名爲 a,並且事件類型是 e1,那麼結果 rowkey 會很小。但是,如果攝入的主機名是myserver1.mycompany.com 和事件類型是 com.package1.subpackage2.subsubpackage3.ImportantService,會怎麼樣?

在 rowkey 中使用一些替換可能是有意義的。至少有兩種方法:哈希和數字。在 Rowkey Lead Position 示例中的主機名中,它可能如下所示:

帶有哈希的複合 Rowkey:

  • [主機名的MD5哈希] = 16個字節([MD5 hash of hostname] = 16 bytes)
  • [事件類型的MD5哈希] = 16個字節([MD5 hash of event-type] = 16 bytes)
  • [時間戳] = 8個字節([timestamp] = 8 bytes)

具有數值替換的複合 Rowkey:

對於這種方法,除了 LOG_DATA(稱爲LOG_TYPES)之外,還需要另一個查找表。LOG_TYPES 的 rowkey 是:

  • [type],(例如,指示主機名與事件類型的字節)。
  • [bytes],原始主機名或事件類型的可變長度字節。

此 rowkey 的列可能是一個具有指定編號的長整數,可通過使用 HBase 計數器獲得。

所以得到的複合 rowkey 將是:

  • [代替主機名長] = 8個字節([substituted long for hostname] = 8 bytes)
  • [長時間取代事件類型] = 8個字節([substituted long for event type] = 8 bytes)
  • [時間戳] = 8個字節([timestamp] = 8 bytes)

在 Hash 或 Numeric 替換方法中,主機名和事件類型的原始值可以存儲爲列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章