2017-04-14 71 views
1

當前我正在使用cassandra爲我的功能用例(向用戶顯示時間序列和合並數據)存儲數據。 Cassandra是它非常好,如果你正確地設計數據模型(查詢驅動)大數據 - Lambda架構和存儲原始數據

基本上,數據從RabbitMQ的攝入受風暴並保存到卡桑德拉

LAMBDA架構僅僅是一個大端設計模式數據架構師和技術獨立,層可以結合:

Cassandra是一個數據庫,可以用作服務層&批處理層:我用它也用於我的分析目的與火花(因爲數據已經很好格式化,像時間系列,在卡桑德拉)

據我所知,需要考慮的重大事情之一是在進行任何處理之前存儲您的原始數據。你需要這樣做,以恢復任何問題,基於人爲的(算法問題,PROD中的DROP TABLE,類似這可能發生的事情......)或將來使用或主要用於批量聚合

而在這裏,我我面臨的選擇:

目前我存儲在卡桑德拉,但我考慮切換存儲原始數據在HDFS的原因不同:原始數據是「死」,使用卡桑德拉令牌,使用資源(主要磁盤空間)在cassandra羣集中。

有人可以幫我選擇嗎?

回答

2

HDFS非常有意義。一些注意事項:

  • 數據序列化 - 使用ORC /鑲或AVRO如果格式數據的可變
  • 壓縮 - 始終壓縮
  • HDFS不喜歡太多的小文件 - 在數據流的情況下,有它彙集&寫入單個大容量文件定期間隔
  • 有一個好的分區方案,所以你可以得到你想要的HDFS數據,而不浪費資源
+0

工作謝謝你,我是考慮將我的原始數據分組在日期目錄中,例如/ day1/ 對於小文件問題,我計劃使用HDFS序列文件。 您是否認爲我的原始數據會保存一些磁盤空間切換到HDFS?無論如何,我要測試它,謝謝! – Eldinea

+0

永遠不要排序文件!非常龐大,讀取效率很高。看看ORC或Parquet。 – Venkat

0

對於二進制文件hdfs是更好的主意。卡桑德拉是o.k.用於存儲文件所在的位置等等,但純粹的文件需要非常好地模擬,所以大多數人只是放棄了cassandra並抱怨說它很糟糕。它仍然可以做到,如果你想這樣做,有一些例子,如: https://academy.datastax.com/resources/datastax-reference-application-killrvideo

這可能會幫助你開始。

另外問題是更多的材料quora甚至http://www.mail-archive.com/[email protected]/這個問題已經問了很多時間。