閱讀正文:node
◆ Hadoop Common:
爲其餘Hadoop模塊提供基礎設施
◆ Hadoop HDFS:
一個高可靠、高吞吐量的分佈式文件系統
◆ Hadoop MapReduce:
一個分佈式的離線並行計算框架
◆ Hadoop YARN:
一個新的MapReduce框架,任務調度與資源管理apache
◆Apache Lucene
開源的高性能全文檢索工具包
◆Apache Nutch
開源的Web搜索引擎
◆Google三大論文
MapReduce/GFS/BigTable
◆Apache Hadoop
大規模數據處理緩存
(HDFS即Hadoop Distributed File System分佈式文件系統:主要是分佈式存儲數據)安全
——————-服務器
HDFS服務功能網絡
◆NameNode(NN)是主節點,存儲文件的元數據如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限),以及每一個文件的塊列表和塊所在DataNode等。
◆DataNode(DN)在本地文件系統存儲文件塊數據,以及塊數據的校驗和。
◆Secondary NameNode(SNN) 用來監控HDFS狀態的輔助後臺程序,每隔一段時間獲 取HDFS元數據的快照。多線程
◆Namenode 是一箇中心服務器,單一節點(簡化系統的設計和實現),負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。
◆文件操做,NameNode 負責文件元數據的操做,DataNode負責處理文件內容的讀寫請求,跟 文件內容相關的數據流不通過NameNode,只會詢問它跟那個DataNode聯繫,不然 NameNode會成爲系統的瓶頸。
◆副本存放在哪些DataNode上由 NameNode來控制,根據全局狀況作出塊放置決定,讀取文件時NameNode儘可能讓用戶先讀取最近的副本,下降帶塊消耗和讀取延時;
◆Namenode 全權管理數據塊的複製,它週期性地從集羣中的每一個Datanode接收心跳信號和塊狀態報告(Blockreport)。接收到心跳信號意味着該Datanode節點工做正常。塊狀態報告包含了一個該Datanode上全部數據塊的列表。app
◆一個數據塊在DataNode以文件存儲在磁盤上,包括兩個文件,一個是數據自己,一個是元數據包括數據塊的長度,塊數據的校驗和,以及時間戳 ;
◆DataNode啓動後向NameNode註冊,經過後,週期性(1小時)的向NameNode上報全部的塊信息;
◆心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令如複製塊數據到另外一臺機器,或刪除某個數據塊。若是超過10分鐘沒有收到某個DataNode 的心跳,則認爲該節點不可用;
◆集羣運行中能夠安全加入和退出一些機器。框架
◆文件切分紅塊(默認大小128M),以塊爲單位,每一個塊有多個副本存儲在不一樣的機器上,副本數可在文件生成時指定(默認3,是在hdfs-site.xml中配置的);
◆NameNode 是主節點,存儲文件的元數據如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限),以及每一個文件的塊列表以及塊所在的DataNode等等;
◆DataNode 在本地文件系統存儲文件塊數據,以及塊數據的校驗和。
◆能夠建立、刪除、移動或重命名文件,當文件建立、寫入和關閉以後不能修改文件內容。
◆將計算過程分爲兩個階段:Map和Reduce
Map階段並行處理輸入數據 ;
Reduce階段對Map結果進行彙總 ;
◆ Shuffle連接Map和Reduce兩個階段(Shuffle通俗的理解就是從新洗牌,打亂原有順序)
Map Task將數據寫到本地磁盤 ;
Reduce Task從每一個Map Task上讀取一份數據 ;
◆ 僅適合離線批處理
具備很好的容錯性和擴展性 ;
適合簡單的批處理任務 ;
◆ 缺點明顯:
啓動開銷大,過多使用磁盤致使效率低下等;
map tasks的個數只要是看splitSize,一個文件根據splitSize分紅多少份就有多少個map tasks。
該slave節點上有多少個MapTask運行,取決於該slave節點分配到了多少塊(通常默認128M);
slave的cpu是幾核的會影響MapTask是單線程仍是多線程,及其運行效率;
若是它出現問題,掛掉,會將沒運行完的塊交給其它slave節點從新運算;
大數據學習交流羣:217770236 讓我咱們一塊兒學習大數據
【測試中若是遇到沒有輸出結果,只有輸出目錄的狀況;那麼極可能是犯了小錯誤;好比:Mapper中的輸入鍵值必須是LongWriteable和Text;outKey和outValue的類型不對,或者沒有初始化;Driver類中Job任務沒提交;還有就是讀取的文件中的數據在map中字段沒有正確對應;數據中有的字段是髒數據,須要處理;致使匹配不成功,從而輸出失敗。 】
(主要是負責硬件資源的合理調用)
◆ YARN 整體上仍然是Master/Slave 結構,在整個資源管理框架中,ResourceManager 爲Master,NodeManager 爲Slave。
◆ ResourceManager 負責對各個NodeManager 上的資源進行統一管理和調度;
◆ 當用戶提交一個應用程序時,須要提供一個用以跟蹤和管理這個程序的ApplicationMaster(主管進程),它負責向ResourceManager 申請資源,並要求NodeManger 啓動能夠佔用必定資源的任務。
◆ 因爲不一樣的ApplicationMaster 被分佈到不一樣的節點上,所以它們之間不會相互影響。
◆ 全局的資源管理器,整個集羣只有一個,負責集羣資源的統一管理和調度分配。
◆ 功能
- 處理客戶端請求
- 啓動/監控ApplicationMaster
- 監控NodeManager
- 資源分配與調度
◆ 整個集羣有多個,負責單節點資源管理和使用
◆ 功能:
- 單個節點上的資源管理和任務管理
- 處理來自ResourceManager的命令 (下文簡稱RM)
- 處理來自ApplicationMaster的命令
◆ NodeManager管理抽象容器,這些容器表明着可供一個特定應用程序使用的針對每一個節點的資源。
◆ 定時地向RM彙報本節點上的資源使用狀況和各個Container的運行狀態
管理一個在YARN 內運行的應用程序的每一個實例
◆ 功能
◆ 負責協調來自ResourceManager的資源,幵經過NodeManager監視容器的執行和資源使用(CPU、內存等的資源分配)。
◆ YARN中的資源抽象,封裝某個節點上多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,RM向AM返回的資源即是用Container表示的。
◆ YARN 會爲每一個任務分配一個Container,且該任務只能使用該Container中描述的資源。
◆ 功能
◆ 資源調度和資源隔離是YARN做爲一個資源管理系統,最重要和最基礎的兩個功能。資源調度由ResourceManager完成,而資源隔離由各個NM實現。
◆ ResourceManager將某個NodeManager上資源分配給任務(這就是所謂的「資源調度」)後,NodeManager需按照要求爲任務提供相應的資源,甚至保證這些資源應具備獨佔性,爲任務運行提供基礎的保證,這就是所謂的資源隔離。
◆ 當談及到資源時,咱們一般指內存,CPU和IO三種資源。Hadoop YARN同時支持內存和CPU兩種資源的調度。
◆ 內存資源的多少會會決定任務的生死,若是內存不夠,任務可能會運行失敗;相比之下,CPU資源則不一樣,它只會決定任務運行的快慢,不會對生死產生影響。
一、http://blog.csdn.net/mobanchengshuang/article/details/78786652