2015-04-16 84 views
-3

我是一位經驗豐富的LAMP開發人員,並且具有豐富的php,nginx,haproxy,redis,mongodb和aws服務經驗。每當有大量數據需求時,我就會使用aws web服務,最近開始閱讀大數據,希望能夠自己使用該技術,而不是使用託管服務進行大數據處理,流處理等。Apache項目和大數據世界

但是這與學習LAMP並不一樣,因爲用例的性質,很難爲新手找到好的資源。特別適合沒有參與過Java生態系統的人。 (據我的理解,Java軟件幾乎涵蓋了流行的大數據堆棧)。在討論大數據時,下面列出了幾乎所有的軟件彈出窗口,但很難理解每個項目的概念,每個項目主頁上的描述都非常模糊。

例如「卡桑德拉」,對地表它是一個很好的數據庫來存儲時間序列數據,但閱讀時更多的分析則其他堆棧上來,Hadoop的,豬,動物園管理員等

  • 卡桑德拉
  • 弗林克
  • 水槽
  • Hadoop的
  • HBase的
  • 蜂巢
  • 卡夫卡
  • 星火
  • 動物園管理員

所以,簡而言之,這是什麼這些軟件呢?在大數據背景下,這些項目中的一些共享相同的方面,爲什麼它們共存?有什麼優勢?什麼時候用什麼?

+1

請求書籍或離線資源在計算器中被視爲offtopic – Panther

回答

1

至於hadoop,你必須明白,根據上下文的不同,Hadoop可能意味着兩件事情。有點像「Linux」這個詞,如果你熟悉的話。

  • 只有核心:真正的「Hadoop」只是一個文件系統,用於分散存儲超大文件+通過Map/Reduce向這些文件請求框架。
  • 整個生態系統:這包括核心和所有其他工具,已被放到hadoop進行數據分析。 Flume,Hbase,Hive,Kafka,Spark,Zookeeper是屬於這個類別的術語。 Flink也可能是,我不確定。

卡桑德拉也可能屬於第二類,因爲"Hadoop integration was added way back in version 0.6 of Cassandra"

瞭解整個生態系統的更好,你必須understand how this is all structured

從底部到頂部:

  • 底層:在這裏,你有你的分佈式文件系統和Map/Reduce的要求框架。 HDFS是文件系統的名稱,您也會看到這個術語很多。在HDFS之上,您可以使用HBase,這是一個面向列的數據庫,位於HDFS¹之上。
  • 中間層,執行引擎:在中間我們有幾個不同的引擎,可以查詢hadoop文件系統的信息。實際上,有些人把Map/Reduce放在第二層,因爲Hadoop環境現在還包括Tez和Spark。我認爲,Tez通過使用圖表來縮短查詢速度,以實現map/reduce執行。而Spark是一款內存引擎。
  • 頂層,用戶抽象:在執行引擎之上,您擁有用戶API /抽象。這包括apache Hive(SQL like查詢)和Pig(在我眼中是SQL和編程語言的混合體)。但是也有更多專門的抽象,如MLlib,它是一個使用Spark作爲中間層的hadoop系統之上的機器學習庫。

除此之外,我們還爲整個生態系統提供管理工具。管理服務器,管理任務執行順序(作業調度)等。這就是Kafka和Zookeeper所屬的地方。

¹我目前不瞭解HBase與ORC文件或Parquet之間的關係。