2011-12-16 48 views
3

我評估傳感器數據採集系統具有以下要求的,HIVE/HDFS用於大規模實時存儲傳感器數據?

  1. 百萬端點100個字節的數據每分鐘(作爲一個時間序列)發送。
  2. 基本上數以百萬計的小型寫入存儲。

    This data is write-once, so basically it never gets updated. 
    
  3. 訪問需求
    一個。需要定期訪問用戶的完整數據(不太頻繁)
    b。用戶的部分數據需要定期訪問(更頻繁)。例如,我需要在最近一小時/一天/一週/一個月內收集傳感器數據以進行分析/報告。

已經開始尋找Hive/HDFS作爲選項。有人可以評論Hive在這種用例中的適用性嗎?我擔心儘管分佈式存儲需求會起作用,但它似乎比實時數據收集/存儲更適合於數據倉庫應用程序。

HBase/Cassandra在這種情況下更有意義嗎?

+0

你能說清楚你的終端如何對應你的用戶(如果有的話)?你期望有多少用戶,多少數據是「用戶的完整數據」? – DNA 2011-12-16 21:56:57

+0

端點不會*轉換爲用戶。而一年100字節/分鐘爲用戶收集的數據大約爲50MB。對於1M用戶,這是大約50TB的數據。 – user393144 2011-12-16 23:48:21

回答

4

實際上有不少人以Cassandra的時間序列方式收集傳感器數據。這非常合適。我建議你閱讀這個article on basic time series in Cassandra,瞭解你的數據模型是什麼樣的。

Cassandra的寫入非常便宜,所以即使是中等規模的羣集也可以輕鬆處理每分鐘100萬次寫入。

您的閱讀查詢都可以非常有效地得到解答。對於第二種類型的查詢,如果您正在爲單個傳感器讀取一段時間的數據,則最終將從單行讀取連續的片;這應該需要大約10ms完全冷讀。對於第一種類型的查詢,您只需要並行運行多個傳感器查詢。假設您將用戶的基本地圖存儲到傳感器ID中,您將使用一個查詢查找用戶的所有傳感器ID,然後您的第二個查詢將獲取所有這些傳感器的數據(儘管您可能會分解此查詢if傳感器數量很多)。

當您談論實時查詢時,Hive和HDFS實際上並不合理,因爲它們更適合長時間運行的批處理作業。

6

我認爲HBase可以成爲您的不錯選擇。事實上,HBase中已經有了一個開源/源代碼實現,它解決了您可能想要使用的類似問題。看看openTSB這是一個解決類似問題的開源實現。下面是從他們的Blurb的一條簡短的摘錄:

OpenTSDB是一個分佈式的,可擴展的時間序列數據庫(TSDB) 寫在HBase的頂部。 OpenTSDB的編寫是爲了解決一個常見的需求:大規模存儲,索引和提供從計算機系統 (網絡設備,操作系統,應用程序)收集的指標,並使得這些數據易於訪問和繪圖。由於HBase的 可擴展性,OpenTSDB允許您以高速率(每隔幾秒鐘)從數千臺主機和應用程序中收集成千上萬個指標 。 OpenTSDB不會刪除或下載數據,並且可以輕鬆存儲數十億個數據點。事實上,StumbleUpon使用 它可以在其主要產品 數據中心內追蹤成千上萬的時間序列並收集每天超過6億個數據點的 。