主要針對hadoop 2.x
Hadoop是什麼 ?
Hadoop是一個開源框架(平臺),能夠對大量數據進行分佈式處理。 Hadoop框架的核心是HDFS和MapReduce,YARN(Yet Another Resource Negotiator)。其中 HDFS 是分佈式文件系統,MapReduce 是分佈式數據處理模型和執行環境,YARN是分佈式執行框架。
下面是hadoop2.x的生態系統圖。
目前Hadoop項目主要包括四個模塊
Hadoop Common: 提供對其他模塊的支持
Hadoop Distributed File System (HDFS):高吞吐量的分佈式文件系統
Hadoop YARN: 任務調度和資源管理的一個框架
Hadoop MapReduce: 並行計算模型
一些有關的項目
- Flume、Scribe,Chukwa數據收集,收集非結構化數據的工具。
- Hiho、Sqoop 將關係數據庫中的數據和HDFS交互的工具
- Hive數據倉庫,pig分析數據的工具
- Oozie作業流調度引擎
- Hue,Hadoop自己的監控管理工具
- Avro 數據序列化工具
- mahout數據挖掘工具
- Hbase分佈式的面向列的開源數據庫
- Ambari 一款開源的hadoop監控工具
- Cassandra 一個可擴展的不存在單點故障的multi-master數據庫
- Chukwa: 用於管理大型分佈式系統的數據收集系統。
- Spark: 一個快速和通用計算的hadoop數據引擎,Spark 提供了一個簡單而富有表現力的編程模型,支持多種應用,包括ETL、機器學習、數據流處理、圖形計算。
- Tez : ….
- ZooKeeper:分佈式應用的高性能協調服務組件
HDFS(Hadoop分佈式文件系統)
HDFS(Distributed File System)是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬件故障,用於在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。
Client:切分文件;訪問HDFS;與NameNode交互,獲取文件位置信息;與DataNode交互,讀取和寫入數據。
NameNode:Master節點,在hadoop1.X中只有一個,管理HDFS的名稱空間和數據塊映射信息,配置副本策略,處理客戶端請求。
DataNode:Slave節點,存儲實際的數據,彙報存儲信息給NameNode。
Secondary NameNode:輔助NameNode,分擔其工作量;定期合併fsimage和fsedits,推送給NameNode;緊急情況下,可輔助恢復NameNode,但SecondaryNameNode並非NameNode的熱備。
HDFS具有如下特點:
1 良好的擴展性
2 高容錯性
3 適合PB級以上海量數據的存儲
HDFS的基本原理
1 將文件切分成等大的數據塊,存儲到多臺機器上
2 將數據切分、容錯、負載均衡等功能透明化
3 可將HDFS看成容量巨大、具有高容錯性的磁盤
HDFS的應用場景
1 海量數據的可靠性存儲
2 數據歸檔
HDFS的詳細信息可參考官網,這裏只是做一個簡單的印象介紹
http://hadoop.apache.org/
Yarn(資源管理系統)
Yarn是Hadoop2.0新增的系統,負責集羣的資源管理和調度,使得多種計算框架可以運行在一個集羣中。
Yarn具有如下特點:
良好的擴展性、高可用性
對多種數據類型的應用程序進行統一管理和資源調度
自帶了多種用戶調度器,適合共享集羣環境
MapReduce(分佈式計算框架/模型)
MapReduce具有如下特點:
良好的擴展性
高容錯性
適合PB級以上海量數據的離線處理
參考文章: