轉載:https://zhuanlan.zhihu.com/p/52704422
Hadoop:Hadoop生態圈(或者泛生態圈)基本上都是為了處理超過單機尺度的數據處理而誕生的。不是一個工具,也不是一種技術,是一種技術的合稱
HDFS:分布式文件系統。傳統的文件系統是單機的,不能橫跨不同的機器。比如你說我要獲取/hdfs/tmp/file1的數據,你引用的是一個文件路徑,但是實際的數據存放在很多不同的機器上。你作為用戶,不需要知道這些,就好比在單機上你不關心文件分散在什么磁道什么扇區一樣。HDFS為你管理這些數據。
Map Reduce:分布式計算。一台機器讀取成T上P的數據,也許需要好幾天甚至好幾周。對於很多公司來說,單機處理是不可忍受的。如果要用很多台機器處理,我就面臨了如何分配工作,如果一台機器掛了如何重新啟動相應的任務,機器之間如何互相通信交換數據以完成復雜的計算等等。這就是MapReduce / Tez / Spark的功能。
Spark:之前的Map Reduce類似於匯編語言,那么現在的spark就類似於python了,功能和Map Reduce類似,但是對於開發人員更加的友好,更方便使用。
Hive:你希望有個更高層更抽象的語言層來描述算法和數據處理流程。於是就有了Hive。Hive用SQL描述MapReduce。它把腳本和SQL語言翻譯成MapReduce程序,丟給計算引擎去計算,而你就從繁瑣的MapReduce程序中解脫出來,用更簡單更直觀的語言去寫程序了。
SparkSQL和Hive on Spark:自從數據分析人員開始用Hive分析數據之后,它們發現,Hive在MapReduce上跑,很慢! 它們的設計理念是,MapReduce慢,但是如果我用新一代通用計算引擎Tez或者Spark來跑SQL,那我就能跑的更快。
Yarn:有了這么多亂七八糟的工具,都在同一個集群上運轉,大家需要互相尊重有序工作。所以另外一個重要組件是,調度系統。
上面的介紹,基本就是一個數據倉庫的構架了。底層HDFS,上面跑MapReduce/Tez/Spark,再上面跑Hive。