Hadoop家族
整個Hadoop家族由以下幾個子項目組成:
Hadoop Common:
Hadoop體系最底層的一個模塊,為Hadoop各子項目提供各 種工具,如:配置文件和日志操作等。
HDFS:
是Hadoop應用程序中主要的分布式儲存系統, HDFS集群包含了一個NameNode(主節點),這個節點負責管理所有文件系統的元數據及存儲了真實數據的DataNode(數據節點,可以有很多)。HDFS針對海量數據所設計,所以相比傳統文件系統在大批量小文件上的優化,HDFS優化的則是對小批量大型文件的訪問和存儲。
MapReduce:
是一個軟件框架,用以輕松編寫處理海量(TB級)數據的並行應用程序,以可靠和容錯的方式連接大型集群中上萬個節點(商用硬件)。
Hive:
Apache Hive是Hadoop的一個數據倉庫系統,促進了數據的綜述(將結構化的數據文件映射為一張數據庫表)、即席查詢以及存儲在Hadoop兼容系統中的大型數據集分析。Hive提供完整的SQL查詢功能——HiveQL語言,同時當使用這個語言表達一個邏輯變得低效和繁瑣時,HiveQL還允許傳統的Map/Reduce程序員使用自己定制的Mapper和Reducer。hive類似CloudBase,基於hadoop分布式計算平台上的提供data warehouse的sql功能的一套軟件。使得存儲在hadoop里面的海量數據 的匯總,即席查詢簡單化。
Pig:
Apache Pig是一個用於大型數據集分析的平台,它包含了一個用於數據分析應用的高級語言以及評估這些應用的基礎設施。Pig應用的閃光特性在於它們的結構經得起大量的並行,也就是說讓它們支撐起非常大的數據集。Pig的基礎設施層包含了產生Map-Reduce任務的編譯器。Pig的語言層當前包含了一個原生語言——Pig Latin,開發的初衷是易於編程和保證可擴展性。
Pig是SQL-like語言,是在MapReduce上構建的一種高級查詢語言,把一些運算編譯進MapReduce模型的Map和Reduce中,並且用戶可以定義自己的功能。Yahoo網格運算部門開發的又一個克隆Google的項目Sawzall。
HBase:
Apache HBase是Hadoop數據庫,一個分布式、可擴展的大數據存儲。它提供了大數據集上隨機和實時的讀/寫訪問,並針對了商用服務器集群上的大型表格做出優化——上百億行,上千萬列。其核心是Google Bigtable論文的開源實現,分布式列式存儲。就像Bigtable利用GFS(Google File System)提供的分布式數據存儲一樣,它是Apache Hadoop在HDFS基礎上提供的一個類Bigatable。
ZooKeeper:
Zookeeper是Google的Chubby一個開源的實現。它是一個針對大型分布式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分布式同步、組服務等。ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
Avro:
Avro是doug cutting主持的RPC項目,有點類似Google的protobuf和Facebook的thrift。avro用來做以后hadoop的RPC,使hadoop的RPC模塊通信速度更快、數據結構更緊湊。
Sqoop:
Sqoop是一個用來將Hadoop和關系型數據庫中的數據相互轉移的工具,可以將一個關系型數據庫中數據導入Hadoop的HDFS中,也可以將HDFS中數據導入關系型數據庫中。
Mahout:
Apache Mahout是個可擴展的機器學習和數據挖掘庫,當前Mahout支持主要的4個用例:
推薦挖掘:搜集用戶動作並以此給用戶推薦可能喜歡的事物。
聚集:收集文件並進行相關文件分組。
分類:從現有的分類文檔中學習,尋找文檔中的相似特征,並為無標簽的文檔進行正確的歸類。
頻繁項集挖掘:將一組項分組,並識別哪些個別項會經常一起出現。
Cassandra:
Apache Cassandra是一個高性能、可線性擴展、高有效性數據庫,可以運行在商用硬件或雲基礎設施上打造完美的任務關鍵性數據平台。在橫跨數據中心的復制中,Cassandra同類最佳,為用戶提供更低的延時以及更可靠的災難備份。通過log-structured update、反規范化和物化視圖的強支持以及強大的內置緩存,Cassandra的數據模型提供了方便的二級索引(column indexe)。
Chukwa:
Apache Chukwa是個開源的數據收集系統,用以監視大型分布系統。建立於HDFS和Map/Reduce框架之上,繼承了Hadoop的可擴展性和穩定性。Chukwa同樣包含了一個靈活和強大的工具包,用以顯示、監視和分析結果,以保證數據的使用達到最佳效果。
Ambari:
Apache Ambari是一個基於web的工具,用於配置、管理和監視Apache Hadoop集群,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari同樣還提供了集群狀況儀表盤,比如heatmaps和查看MapReduce、Pig、Hive應用程序的能力,以友好的用戶界面對它們的性能特性進行診斷。
HCatalog
Apache HCatalog是Hadoop建立數據的映射表和存儲管理服務,它包括:
提供一個共享模式和數據類型機制。
提供一個抽象表,這樣用戶就不需要關注數據存儲的方式和地址。
為類似Pig、MapReduce及Hive這些數據處理工具提供互操作性。
Chukwa:
Chukwa是基於Hadoop的大集群監控系統,由yahoo貢獻。
Cloudera Manager功能
cloudera manager有四大功能:
(1)管理:對集群進行管理,如添加、刪除節點等操作。
(2)監控:監控集群的健康情況,對設置的各種指標和系統運行情況進行全面監控。
(3)診斷:對集群出現的問題進行診斷,對出現的問題給出建議解決方案。
(4)集成:對hadoop的多組件進行整合。
示例,管理4集群:
管理的服務包括:
Cloudera Manager架構
cloudera manager的核心是管理服務器,該服務器承載管理控制台的Web服務器和應用程序邏輯,並負責安裝軟件,配置,啟動和停止服務,以及管理上的服務運行群集。
Cloudera Manager Server由以下幾個部分組成:
Agent:安裝在每台主機上。該代理負責啟動和停止的過程,拆包配置,觸發裝置和監控主機。
Management Service:由一組執行各種監控,警報和報告功能角色的服務。
Database:存儲配置和監視信息。通常情況下,多個邏輯數據庫在一個或多個數據庫服務器上運行。例如,Cloudera的管理服務器和監控角色使用不同的邏輯數據庫。
Cloudera Repository:軟件由Cloudera 管理分布存儲庫。
Clients:是用於與服務器進行交互的接口:
Admin Console - 基於Web的用戶界面與管理員管理集群和Cloudera管理。
API - 與開發人員創建自定義的Cloudera Manager應用程序的API。