HDFS:
用於存放一切信息的分布式的文件系統。大數據系統由於其涉及到的數據量較大所以往往需要仰賴於一個數據倉庫系統,將所有的數據能夠分門別類地存儲起來,而HDFS就是這樣一個倉庫。需要注意一點,HDFS並不是我們通常實際用來查詢或者處理數據的數據倉庫組件,其更像是倉庫本身,是一個偏硬件,偏系統化的概念,用於將所有的信息都囊括進去。
MapReduce:
軟件框架,編寫程序。用於實際進行計算數據的編程模型,其特質強調分布式與並行。可以說,MapReduce是真正實現對大量數據進行操作和處理的工具。
ZooKeeper:
負責大數據系統中,統一管理調度整個倉庫運作的工程班。我們可以想象得到,一個復雜的系統想要能夠穩定運作下去,其必須需要一個相應的角色,專職負責統一調度整個系統的資源,發布任務,協調各個組件之間的運行。ZooKeeper就是這樣一個角色,可以這樣說,ZooKeeper的存在,使得分布式的系統在協調運作上得到的保證。
HBase:
非常適合用於大數據的實時查詢。存放數據的架子。當我們有了存儲和處理數據的倉庫以后,我們肯定不能將數據雜亂的堆積到倉庫中吧?HBase就是倉庫中的架子,我們在拿到數據后,會將數據放到相應的架子中,這樣以后當我們需要使用或者處理數據時,只需要去找到相應的架子就好了。所以HBase具備一些數據庫的功能,然而這里要強調一下,HBase是一個Nosql的數據庫。
Hive:
數據倉庫 可以用SQL查詢,可以運行Map/Reduce程序。用來計算趨勢或者網站日志,不應用於實時查詢,需要很長時間返回結果。查找數據的工具。從前面這個定義可以看出來,Hive其實和HBase在功能上有很多相似的地方,它們都可以查找數據,然而Hive本質上只是查找數據的功能,其不能更新數據(但是可以寫入)。而HBase中,常用的增刪改查都是支持的。
Pig:
處理數據的工具。Pig是基於MapReduce的,所以當直接使用MapReduce開發相應的數據處理比較困難的話,Pig就是我們會想要使用的工具了。這里要說一下,在經過多年的發展后,大數據各個組件其實都在擴展其各自功能,目前能夠用來簡便開發MapReduce的工具中,Pig已經不是首選了,然而在最初建立大數據體系時,Pig是非常重要的一個組成部分。
Mahout:
機器學習的功能組件庫。可以這樣說,大數據系統想要最大化地利用數據創造價值,往往需要機器學習相關的功能,這個時候,就是我們用到Mahout的時候了。
Flume:
收集記錄數據操作日志的工具。如此復雜的大數據系統,想要運作起來,肯定需要一個完備可靠的日志系統,用來記錄各個組件每時每刻運行的任務,運行狀況,使用的資源情況,任務分發的情況等,Flume正是為此而存在的.
Sqoop:
輸送數據進入倉庫的工具。想想看,當我們整個數據系統搭建起來后,我們肯定需要有一個工具,能夠把原始的數據,輸送到數據系統中吧?Sqoop的工作就是這樣的,其可以定時抽取目標數據庫中的相應數據,發送到我們的大數據系統中。
Ambari:
將上面所有組件打包起來的平台。想想看,上面那么多的組件,如果一個一個都要我們手動去部署安裝,甚至要調試和設置,這個效率之低令人不寒而栗。那么當我們清楚了我們會用到的這些組件后,能不能找到一個工具,當我們面對一個全新的環境中,可以把整個大數據系統快速打包部署下去,這正是Ambari平台的價值所在。此外,我們在實際運作的時候,針對維護人員,需要有一個工具能夠直觀的監控整個大數據系統的運作狀況,這也是如Ambari這樣的大數據平台的作用之一。