99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

HBase模式案例:日志數(shù)據(jù)和時(shí)間序列數(shù)據(jù)

2018-03-21 15:31 更新

HBase案例:日志數(shù)據(jù)和時(shí)間序列數(shù)據(jù)

本節(jié)為你介紹了 HBase 模式案例之一:日志數(shù)據(jù)和時(shí)間序列數(shù)據(jù)

假設(shè)正在收集以下數(shù)據(jù)元素。

  • 主機(jī)名(Hostname)
  • 時(shí)間戳(timestamp)
  • 日志事件(Log event)
  • 值/消息(Value/message)

我們可以將它們存儲(chǔ)在名為 LOG_DATA 的 HBase 表中,但 rowkey 會(huì)是什么呢?從這些屬性中,rowkey 將是主機(jī)名,時(shí)間戳和日志事件的一些組合,但具體是什么?

行密鑰(Rowkey)主導(dǎo)位置中的時(shí)間戳(Timestamp)

rowkey [timestamp][hostname][log-event] 受單調(diào)遞增的行鍵/時(shí)間戳數(shù)據(jù)(Monotonically Increasing Row Keys/Timeseries Data)中描述的單調(diào)增長(zhǎng) rowkey 問(wèn)題的影響。

通過(guò)在時(shí)間戳上執(zhí)行 mod 操作,在關(guān)于 "bucketing" 時(shí)間戳的 dist-lists 中經(jīng)常提到另一種模式。如果時(shí)間掃描很重要,這可能是一個(gè)有用的方法。必須注意 bucket 的數(shù)量,因?yàn)檫@需要相同數(shù)量的掃描來(lái)返回結(jié)果。

long bucket = timestamp % numBuckets;

構(gòu)造:

[bucket][timestamp][hostname][log-event]

如上所述,要選擇特定時(shí)間范圍(timerange)的數(shù)據(jù),需要為每個(gè)存儲(chǔ) bucket 執(zhí)行 Scan。例如,100個(gè)存儲(chǔ) bucket 將在密鑰空間中提供廣泛的分布,但它需要 100 次 Scan 才能獲得單個(gè)時(shí)間戳的數(shù)據(jù),因此存在權(quán)衡。

行密鑰(Rowkey)主導(dǎo)位置中的主機(jī)(Host)

如果有大量的主機(jī)在整個(gè)密鑰空間中進(jìn)行寫入和讀取操作,則 rowkey [hostname][log-event][timestamp] 是一個(gè)候選項(xiàng)。如果按主機(jī)名掃描是優(yōu)先事項(xiàng),則此方法非常有用。

時(shí)間戳或反向時(shí)間戳

如果最重要的訪問(wèn)路徑是拉取最近的事件,則將時(shí)間戳存儲(chǔ)為反向時(shí)間戳(例如,timestamp = Long.MAX_VALUE – timestamp)將創(chuàng)建能夠?qū)?[hostname][log-event] 執(zhí)行 Scan 以獲取最近捕獲的事件的屬性。

這兩種方法都不是錯(cuò)的,它只取決于什么是最適合的情況。

反向掃描 API

HBASE-4811 實(shí)現(xiàn)了一個(gè) API,它以反向掃描表格或范圍內(nèi)的表格,從而減少了對(duì)正向或反向掃描進(jìn)行模式優(yōu)化的需求。此功能在 HBase 0.98 和更高版本中可用。

可變長(zhǎng)度或固定長(zhǎng)度的行鍵

記住,在 HBase 的每一列上加蓋行密碼是非常重要的。如果主機(jī)名為 a,并且事件類型是 e1,那么結(jié)果 rowkey 會(huì)很小。但是,如果攝入的主機(jī)名是myserver1.mycompany.com 和事件類型是 com.package1.subpackage2.subsubpackage3.ImportantService,會(huì)怎么樣?

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

帶有哈希的復(fù)合 Rowkey:

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

具有數(shù)值替換的復(fù)合 Rowkey:

對(duì)于這種方法,除了 LOG_DATA(稱為L(zhǎng)OG_TYPES)之外,還需要另一個(gè)查找表。LOG_TYPES 的 rowkey 是:

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

此 rowkey 的列可能是一個(gè)具有指定編號(hào)的長(zhǎng)整數(shù),可通過(guò)使用 HBase 計(jì)數(shù)器獲得。

所以得到的復(fù)合 rowkey 將是:

  • [代替主機(jī)名長(zhǎng)] = 8個(gè)字節(jié)([substituted long for hostname] = 8 bytes)
  • [長(zhǎng)時(shí)間取代事件類型] = 8個(gè)字節(jié)([substituted long for event type] = 8 bytes)
  • [時(shí)間戳] = 8個(gè)字節(jié)([timestamp] = 8 bytes)

在 Hash 或 Numeric 替換方法中,主機(jī)名和事件類型的原始值可以存儲(chǔ)為列。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)