Hadoop集群(HDFS集群、YARN集群、MapReduce?計算框架)

一、 簡介

Hadoop主要在分布式環境下集群機器,獲取海量數據的處理能力,實現分布式集群下的大數據存儲和計算。

其中三大核心組件:?HDFS存儲分布式文件存儲、YARN分布式資源管理、MapReduce分布式計算。

二、工作原理

2.1 HDFS集群

Web訪問地址:http://hadoop1:9870

HDFS由NameNode(主節點)、SecondaryNameNode(輔助節點)、DataNode(從節點)構成,

其中NameNode負責管理整個HDFS集群,SecondaryNameNode輔助NameNode管理元數據,DataNode負責存儲實際的數據塊(一個block塊默認大小128MB)和對數據塊的讀、寫操作。

?

2.1.1 block數據塊

  • 基本存儲單位(一般64M)
  • 一個大文件會被拆分成多個block塊,然后存儲到不通機器上
  • 每塊會備份到其他機器上,保證數據安全性,防止數據丟失(默認備份3份)。

2.1.2 NameNode

  • 管理文件系統命名空間和客戶端對文件訪問
  • 保存文件具體信息(文件信息、文件拆分block塊信息、以及block和DataNode的信息)
  • 接收用戶請求

2.1.3 DataNode

  • 保存具體的block數據
  • 負責數據的讀寫操作和復制操作
  • 向NameNode報告當前存儲或者修改的數據信息
  • DataNode之間進行相互通信,復制數據塊

2.1.4 Secondary NameNode

  • 定時與NameNode進行同步(合并fsimage和edits文件)
  • 當NameNode失效時,需要手工將其設置成主機

2.1.5 文件寫入步驟

? ? 1. Client(客戶端)請求namenode保存文件。
? ? 2. NameNode接收到客戶端請求后, 會校驗客戶端針對該文件是否有寫的權利,文件是否存在,校驗通過后告知客戶端可以上傳。
? ? 3. 接收到可以上傳的指令后, 客戶端會按照128MB(默認)對文件進行切塊。
? ? 4. Client(客戶端)再次請求namenode, 第1個Block塊的上傳位置。
? ? 5. namenode會根據副本機制, 負載均衡, 機架感知原理及網絡拓撲圖, 返回給客戶端存儲該Block塊的DataNode列表。
? ? ? ? 例如: node1, node2, node3;
? ? 6. Client(客戶端)會先連接就近的datanode機器, 然后依次和其他的datanode進行連接, 形成傳輸管道(Pipeline);
? ? 7. 采用數據報包(DataPacket)的形式傳輸數據, 每個包的大小不超過64KB, 并建立反向應答機制(ACK機制);
? ? 8. 具體的上傳動作: node1 -> node2 -> node3, ?ACK反向應答機制: node3 => node2 => node1。
? ? 9. 重復上述的步驟, 直至第1個Block塊上傳完畢。
? ?10. 第一個Bloc上傳完畢客戶端(Client)重新請求第二個Block的上傳位置, 重復上述動作, 直至所有的Block塊傳輸完畢。

至此, HDFS寫數據流程結束。

?

2.1.6 文件讀取步驟

?1. Client(客戶端)請求namenode, 讀取文件。
?2. NameNode校驗該客戶端是否有讀權限, 及該文件是否存在, 校驗成功后, 會返回給客戶端該文件的塊信息。
? ? ? ? 例如:
? ? ? ? ? ? block1: node1, node2, node5
? ? ? ? ? ? block2: node3, node6, node8
? ? ? ? ? ? block3: node2, node5, node6 ? ? 這些地址都是鮮活的;
? ? ? ? ? ? ......
? ? 3. Client(客戶端)會連接上述的機器(節點), 并行的從中讀取塊的數據。
? ? 4. Client(客戶端)讀取完畢后, 會循環NameNode獲取剩下所有的(或者部分的塊信息), 并行讀取, 直至所有數據讀取完畢。
? ? 5. Client(客戶端)根據Block塊編號, 把多個Block塊數據合并成最終文件即可。

?

2.1.7 數據備份

  1. NameNode負責管理block塊的復制,它周期性地接收集群中所有DataNode的心跳數據包和Blockreport。心跳包表示DataNode正常工作,Blockreport描述了該DataNode上所有的block組成的列表。
  2. HDFS采用一種稱為rack-aware的策略來決定備份數據的存放。通過一個稱為Rack Awareness的過程,NameNode決定每個DataNode所屬rack id。缺省情況下,一個block塊會有三個備份,一個在NameNode指定的DataNode上,一個在指定DataNode非同一rack的DataNode上,一個在指定DataNode同一rack的DataNode上。這種策略綜合考慮了同一rack失效、以及不同rack之間數據復制性能問題。
  3. 為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讀取最近的副本。如果在同一個rack上有一個副本,那么就讀該副本。如果一個HDFS集群跨越多個數據中心,那么將首先嘗試讀本地數據中心的副本。

2.1.8 HDFS工作原理

1、NameNode初始化時會產生一個edits文件和一個fsimage文件。
2、隨著edits文件不斷增大,當達到設定的閥值時(1個小時或寫入100萬次),SecondaryNameNode把edits文件和fsImage文件復制到本地,同時NameNode會產生一個新的edits文件替換掉舊的edits文件,這樣以保證數據不會出現冗余。
3、SecondaryNameNode拿到這兩個文件后,會在內存中進行合并成一個fsImage.ckpt的文件(這個過程稱為checkpoint),合并完成后,再將fsImage.ckpt文件推送給NameNode。
4、NameNode文件拿到fsImage.ckpt文件后,會將舊的fsimage文件替換掉(并不會立刻替換,而是達到一定閾值后被替換掉),并且改名成fsimage文件。

通過以上幾步則完成了edits和fsimage文件的合并,依此不斷循環,從而到達保證元數據的正確性。在緊急情況下, SecondaryNameNode可以用來恢復namenode的元數據。

?

2.2 YARN集群

Web訪問地址:http://hadoop1:8088

YARN是一個資源調度平臺,負責為運算程序提供服務器運算資源,相當于一個分布式的操作平臺,而Mapreduce等運算程序相當于運行在操作系統之上的應運程序。

YARN組成由ResourceManager、AppMaster進程、NodeManager組成

2.2.1 ResourceManager(主節點)

ResourceManager是master上的進程,負責整個分布式系統的資源管理和調度。會處理來自client端的請求(包括提交作業/殺死作業);啟動/監控Application Master;監控NodeManager的情況,比如可能掛掉的NodeManager。

2.2.2 NodeManager(從節點)

負責接收并執行ResourceManager分配的計算任務。相對應的,NodeManager時處在slave節點上的進程,他只負責當前slave節點的資源管理和調度,以及task的運行。他會定期向ResourceManager回報資源/Container的情況(heartbeat);接受來自ResourceManager對于Container的啟停命令。

2.2.3 AppMaster進程

每一個提交到集群的作業都會有一個與之對應的Application Master來負責應用程序的管理。他負責進行數據切分;為當前應用程序向ResourceManager去申請資源(也就是Container),并分配給具體的任務;與NodeManager通信,用來啟停具體的任務,任務運行在Container中;而任務的監控和容錯也是由Application Master來負責的。

? ? ? ? 1個計算任務=1個AppMaster進程

? ? ? ? 由該AppMaster進程來監控和管理該計算任務

2.2.4 Container

它包含了Application Master向ResourceManager申請的計算資源,比如說CPU/內存的大小,以及任務運行所需的環境變量和隊任務運行情況的描述。

?

2.3??MapReduce工作原理

MapReduce是一種分布式計算框架。MR的執行流程:

? 1. MR任務分為MapTask任務?ReduceTask任務兩部分, 其中MapTask任務負責:分; ReduceTask任務負責:合。

  • ?1個切片(默認128MB) = 1個MapTask任務 = 1個分好區, 排好序, 規好約的磁盤文件;

? ? 2. 先對文件進行切片, 每個切片對應1個MapTask任務, 任務內部會逐行讀取數據, 交由MapTask任務來處理。
? ? 3. MapTask對數據進行分區,排序,規約處理后, 會將數據放到1個 環形緩沖區中(默認大小: 100MB, 溢寫比: 0.8), 達到80MB就會觸發溢寫線程。
? ? 4. 溢寫線程會將環形緩沖區中的結果寫到磁盤的小文件中, 當MapTask任務結束的時候, 會對所有的小文件(10個/次)合并, 形成1個大的磁盤文件。
? ? 5. ReduceTask任務會開啟拷貝線程, 從上述的各個結果文件中, 拉取屬于自己分區的數據, 進行分組、統計、聚合。
? ? 6. ReduceTask將處理后的結果, 寫到結果文件中;

  • 1個分區 = 1個ReduceTask任務 = 1個結果文件;

?

2.4? 三者之間的關系

?客戶端Client提交任務到資源管理器(ResourceManager),資源管理器接收到任務之后去NodeManager節點開啟任務(ApplicationMaster), ApplicationMaster向ResourceManager申請資源, 若有資源ApplicationMaster負責開啟任務即MapTask。開始干活了即分析任務,每個map獨立工作,各自負責檢索各自對應的DataNode,將結果記錄到HDFS, DataNode負責存儲,NameNode負責記錄,2nn負責備份部分數據。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63961.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

位運算符、標記位傳參

位運算符: 位運算符作用于操作數的位(bit)。 按位與(&)對應位都為1時結果為1 int a 5; // 0101 int b 3; // 0011 int result a & b; // 0001 按位或(|)對應位至少有一個為1時結…

施耐德變頻器ATV320系列技術優勢:創新與安全并重

在工業自動化領域,追求高效、安全與智能已成為不可阻擋的趨勢。施耐德變頻器ATV320系列憑借其強大的設計標準和全球認證,成為能夠幫助企業降低安裝成本,提高設備性能的創新解決方案。 【全球認證,品質保障】ATV320 系列秉持施耐德…

項目練習:element-ui的valid表單驗證功能用法

文章目錄 一、情景說明二、代碼實現 一、情景說明 一般表單提交的時候,都要對表單數據進行前段驗證。 比如登陸表單提交。 二、代碼實現 package.json "element-ui": "2.15.14",main.js 引用ElementUI import ElementUI from element-ui; i…

【es6復習筆記】Symbol 類型及其應用(9)

一、Symbol 簡介 Symbol 是 JavaScript 中的一種基本數據類型,它表示唯一的標識符。Symbol 的主要目的是防止屬性名沖突,尤其是在多個代碼庫或模塊中共享對象時。Symbol 值可以用作對象的屬性名,這樣可以確保屬性名是唯一的,不會…

Linux挖礦程序排查

一、背景 我們收到一個阿里云安全告警,內容是服務器可能存在挖礦程序。 二、殺死挖礦程序 2.1 找到可疑服務器進程 #1.輸入top命令,輸入shift P會按照cpu的使用率大小從大到小進行排序,cpu使用率高的就是可疑進程。 top #2.查看運行該進程…

zabbix監控山石系列Hillstone配置模版(適用于zabbix6及以上)

監控項: 觸發器: 監控數據:

PE文件結構

PE文件是Windows系統下可執行文件的總稱,英文全稱 Portable Executable 可移植的可執行文件,常見的有exe、dll、sys、com、ocx 對于學習反(木馬、免殺、病毒、外掛、內核),了解PE文件結構是非常有必要且非常非常重要的…

C語言-08復合類型-結構體

一、結構體 1.結構體struct struct關鍵字,允許自定義復合數據類型,將不同類型的值組合在一起,這種類型稱為結構體類型。 2.使用步驟 第一步:創建或聲明結構體 第二步:定義結構體變量 第三步:調用并操作結…

Web前端基礎知識(一)

前端是構建網頁的一部分,負責用戶在瀏覽器中看到和與之交互的內容。 網頁是在瀏覽器中呈現內容的文檔或頁面。 通常,網頁使用HTML、CSS、JavaScript(JS)組成。 HTML:定義了頁面的結構和內容。包括文本、圖像、鏈接等。 CSS:定義頁面的樣式…

網絡安全詞云圖與技術淺談

網絡安全詞云圖與技術淺談 一、網絡安全詞云圖生成 為了直觀地展示網絡安全領域的關鍵術語,我們可以通過詞云圖(Word Cloud)的形式來呈現。詞云圖是一種數據可視化工具,它通過字體大小和顏色的差異來突出顯示文本中出現頻率較高…

fpgafor循環語句使用

genvar i;//循環變量名稱 generate for(i0;i<4;ii1)begin:tx//自己定義名稱 //循環內容 end endgenerate12位的16進制乘以4就是48位位寬的2進制 因為 222*2(2^4)16

【python高級】342-TCP服務器開發流程

CS模式&#xff1a;客戶端-服務端模式 TCP客戶端開發流程介紹&#xff08;五步&#xff09;&#xff08;C端&#xff09; 1.創建客戶端套接字對象 2.和服務端套接字建立連接 3.發送數據 4.接收數據 5.關閉客戶端套接字 TCP服務端開發流程&#xff08;七步&#xff09;&#xf…

es 中 terms set 使用

在 Elasticsearch 中&#xff0c;terms_set 查詢通常用于在一個字段上進行多值匹配&#xff0c;并支持設置一個條件&#xff08;例如最小匹配數量&#xff09;&#xff0c;讓查詢結果更具靈活性。為了展示如何使用 terms_set 查詢&#xff0c;我們首先會創建一個索引&#xff0…

修改采購訂單BAPI學習研究-BAPI_PO_CHANGE

這里是修改采購訂單BAPI&#xff0c;修改訂單數量和交貨日期的簡單應用 文章目錄 修改數量代碼運行結果 修改交貨日期代碼運行結果 修改數量 代碼 *&---------------------------------------------------------------------* *& Report Z_BAPI_PO_CHANGE *&----…

WSL2高級配置之mirrored鏡像網絡

WSL2高級配置之mirrored鏡像網絡 引言版本要求更改配置 引言 WSL2默認的網絡模式為NAT。盡管WSL2原生提供了localhost轉發這種能夠方便地在Windows中訪問子系統服務的特性&#xff0c;但如果想反過來&#xff0c;則只能通過局域網或者想辦法橋接&#xff0c;這兩種方法都有些許…

《ROS2 機器人開發 從入門道實踐》 魚香ROS2——第4章內容

第4章 服務和參數——深入ROS2通信 4.2 用Python服務通信實現人臉檢測 4.2.1 自定義服務接口 1. 創建接口功能包 終端中輸入 ros2 pkg create chapt4_interfaces --dependencies sensor_msgs rosidl_default_generators --license Apache-2.0 ros2 pkg create 功能包名稱…

Linux系統編程深度解析:C語言實戰指南

文章一覽 前言一、gcc編譯系統1.1 文件名后綴1.2 C語言編譯過程1.3 gcc命令行選項 二、gdb程序調試工具2.1 啟動gdb和查看內部命令2.2 顯示源程序和數據2.2.1 顯示和搜索源程序2.2.2 查看運行時數據 2.3 改變和顯示目錄或路徑2.4 控制程序的執行2.4.1 設置斷點2.4.2 顯示斷點2.…

SQL優化原理與具體實例分析

一、引言 SQL&#xff08;Structured Query Language&#xff0c;結構化查詢語言&#xff09;是關系型數據庫的核心語言。在實際應用中&#xff0c;數據庫查詢性能往往成為系統性能瓶頸。因此&#xff0c;掌握SQL優化技巧對于提高數據庫查詢效率具有重要意義。本文將圍繞SQL優…

安卓藍牙掃描流程

目錄 系統廣播 流程圖 源碼跟蹤 系統廣播 掃描開啟廣播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_STARTED "android.bluetooth.adapter.action.DISCOVERY_STARTED";掃描關閉廣播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_FINISHED "android.b…

shell 編程(三)

條件測試命令 條件測試&#xff1a;判斷某需求是否滿足&#xff0c;需要有測試機制來實現 專用的測試表達式需要由測試命令輔助完成測試過程&#xff0c;評估布爾生命&#xff0c;以便用在條件性執行中 若真,則狀態碼變量$? 返回0 // echo $? 打印0 反之返回1 t…