Hadoop MapReduce 3.3.4 講解~

在這里插## 標題入圖片描述

> 						大家好,我是程序員小羊!

?博客主頁: https://blog.csdn.net/m0_63815035?type=blog

💗《博客內容》:.NET、Java.測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識
📢博客專欄: https://blog.csdn.net/m0_63815035/category_11954877.html
📢歡迎點贊 👍 收藏 ?留言 📝
📢本文為學習筆記資料,如有侵權,請聯系我刪除,疏漏之處還請指正🙉
📢大廈之成,非一木之材也;大海之闊,非一流之歸也?

在這里插入圖片描述

在這里插入圖片描述

目錄

  • 前言
  • 設計思想
      • 1. MapReduce的基本概念
      • 2. MapReduce的核心組件
      • 3. MapReduce的工作流程
      • 4. MapReduce的數據處理模型
      • 5. Shuffle機制詳解
      • 6. MapReduce的優化策略
      • 7. MapReduce的應用場景
      • 8. MapReduce與YARN的關系

前言

Hadoop是一個開源的分布式計算框架,主要用于處理和存儲大規模數據集。它的設計初衷是解決海量數據的存儲和計算問題,具有高容錯性、高擴展性和低成本等特點。下面詳細講解Hadoop的核心知識點:

設計思想

在這里插入圖片描述
在這里插入圖片描述

1. MapReduce的基本概念

  • 定義:一種分布式計算模型,用于處理海量數據的并行計算
  • 核心思想:將復雜的計算任務分解為Map(映射)和Reduce(歸約)兩個階段
  • 優勢
    • 自動實現并行處理
    • 提供容錯機制
    • 處理PB級別的海量數據
    • 適用于各種分布式計算場景

2. MapReduce的核心組件

  • JobTracker:負責整個作業的調度和監控(Hadoop 1.x中,Hadoop 2.x中被YARN的ResourceManager替代)
  • TaskTracker:運行在每個節點上,負責執行具體任務(Hadoop 1.x中,Hadoop 2.x中被YARN的NodeManager替代)
  • Map Task:執行Map階段的任務
  • Reduce Task:執行Reduce階段的任務
  • InputSplit:輸入數據的邏輯分片,每個分片由一個Map Task處理
  • Combiner:可選的本地Reduce操作,用于減少Map輸出的數據量
  • Partitioner:決定Map輸出的鍵值對分配到哪個Reduce Task

3. MapReduce的工作流程

  1. 輸入分片(InputSplit)

    • 將輸入數據分割成多個InputSplit(通常與HDFS塊大小一致)
    • 每個InputSplit由一個Map Task處理
  2. Map階段

    • 讀取InputSplit中的數據,解析成鍵值對(K1, V1)
    • 對每個鍵值對執行map函數,生成中間鍵值對(K2, V2)
    • 示例:計算單詞頻率時,將(“文檔1”, “hello world”)轉換為(“hello”, 1)、(“world”, 1)
  3. Shuffle階段(核心)

    • 分區(Partitioning):根據Partitioner將Map輸出分到不同的分區
    • 排序(Sorting):對每個分區內的鍵值對按鍵排序
    • 合并(Combining):可選操作,對排序后的結果進行本地合并,減少數據傳輸
    • 歸并(Merging):將多個Map Task的輸出合并成一個有序的數據集
  4. Reduce階段

    • 讀取Shuffle后的有序數據
    • 對相同鍵的value集合執行reduce函數,生成最終鍵值對(K3, V3)
    • 示例:將多個(“hello”, 1)合并為(“hello”, 5)
  5. 輸出(Output)

    • 將Reduce的輸出寫入到指定的存儲系統(通常是HDFS)

4. MapReduce的數據處理模型

  • 鍵值對:MapReduce的所有數據處理都基于鍵值對(Key-Value Pair)

  • 數據類型:所有的Key和Value都必須實現Writable接口,常用類型包括:

    • Text:用于字符串
    • IntWritable:用于整數
    • LongWritable:用于長整數
    • DoubleWritable:用于浮點數
  • 函數定義

    • Map函數:map(K1, V1) → list(K2, V2)
    • Reduce函數:reduce(K2, list(V2)) → list(K3, V3)

5. Shuffle機制詳解

Shuffle是MapReduce的核心,連接Map和Reduce階段,負責數據的傳輸和處理:

  1. Map端的Shuffle

    • 環形緩沖區:Map輸出先寫入內存緩沖區(默認100MB)
    • 溢出寫(Spill):當緩沖區達到閾值(默認80%),將數據寫入磁盤
    • 合并溢出文件:將多個溢出文件合并成一個有序文件
  2. Reduce端的Shuffle

    • 拉取數據(Fetch):Reduce Task從各個Map Task拉取屬于自己的分區數據
    • 合并數據(Merge):將拉取的多個數據片段合并成一個大的有序數據集
    • 分組(Grouping):將相同Key的Value合并成一個列表

6. MapReduce的優化策略

  • 數據本地化:盡量將計算任務分配到數據所在的節點,減少網絡傳輸
  • Combiner使用:在Map端進行本地聚合,減少Shuffle階段的數據量
  • 合理設置Map和Reduce數量:根據數據大小和集群規模調整
  • 壓縮:對Map輸出和中間數據進行壓縮,減少IO操作
  • JVM重用:在TaskTracker上重用JVM,減少啟動開銷
  • 調整緩沖區大小:根據內存情況調整Map階段的緩沖區大小

7. MapReduce的應用場景

  • 日志分析:統計訪問量、用戶行為分析等
  • 數據挖掘:關聯規則挖掘、聚類分析等
  • 機器學習:訓練大規模數據集的模型
  • 搜索引擎:網頁排序、關鍵詞統計等
  • 數據轉換:數據格式轉換、數據清洗等

8. MapReduce與YARN的關系

在Hadoop 2.x中,MapReduce運行在YARN框架上:

  • ResourceManager負責集群資源管理
  • ApplicationMaster負責MapReduce作業的生命周期管理
  • NodeManager負責單個節點的資源管理和任務執行
  • Container為Map和Reduce任務提供計算資源
今天這篇文章就到這里了,大廈之成,非一木之材也;大海之闊,非一流之歸也。感謝大家觀看本文

在這里插入圖片描述

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

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

相關文章

1、【數學】【硬幣悖論】旋轉硬幣問題

問題描述: 兩個相同的硬幣,半徑都是 rrr。一個硬幣(稱為“動硬幣”)沿著另一個固定不動的硬幣(“靜硬幣”)的外邊緣無滑動地滾動一圈,回到起始位置。問:動硬幣自身旋轉了幾圈&#x…

【盤古100Pro+開發板實驗例程】FPGA學習 | PCIE 通信測試實驗例程

本原創文章由深圳市小眼睛科技有限公司創作,版權歸本公司所有,如需轉載,需授權并注明出處(www.meyesemi.com) 1. 實驗簡介 實驗目的: 完成 PCIE 通信測試。 實驗環境: Window11 PDS2022.2-SP6.4 硬件環…

基于高階累積量的調制識別

基于高階累積量的調制識別是一種利用信號的高階統計特性來識別不同調制方式的方法。 1. 基本原理 高階累積量(Higher-Order Cumulants)是信號處理中的一個重要工具,能夠捕捉信號的非高斯特性。與高階矩相比,高階累積量對高斯噪聲具…

Java常用數據結構入門

Java常用數據結構入門 前言 數據結構是程序設計中的基礎,掌握常用數據結構能幫助你更高效地解決問題。本文面向Java初學者,介紹Java中常用的數據結構及其基本使用方法。 1. 數組 (Array) 數組是最基礎的數據結構,可以存儲固定大小的同類型…

Android GPU測試

一、Basemark GPU 可選擇進行vulkan和opengl測試: 二、GFXBench 進行各種offscreen測試(包括曼哈頓離屏) 這是由GFXBench圖形性能測試套件提供的一個著名3D圖形渲染場景。 它模擬了一個復雜的未來都市環境(類似曼哈頓&#xff…

2025年6月最新SCI-灰熊脂肪增長優化算法Grizzly Bear Fat Increase-附Matlab免費代碼

引言 本期介紹一種受自然啟發的創新算法——灰熊脂肪增長優化算法Grizzly Bear Fat Increase optimizer,GBFIO。GBFIO算法模仿灰熊為準備過冬而積累身體脂肪的自然行為,借鑒了它們的狩獵、捕魚、吃草、蜂蜜等策略。于2025年6月發表在JCR 1區&#xff0c…

Pytorch實現一個簡單的貝葉斯卷積神經網絡模型

貝葉斯深度模型的主要特點和實現說明:模型結構:結合了常規卷積層(用于特征提取)和貝葉斯線性層(用于分類)貝葉斯層將權重視為隨機變量,而非傳統神經網絡中的確定值使用變分推斷來近似權重的后驗…

Dubbo 3.x源碼(32)—Dubbo Provider處理服務調用請求源碼

基于Dubbo 3.1,詳細介紹了Dubbo Provider處理服務調用請求源碼 上文我們學習了,Dubbo消息的編碼解的源碼。現在我們來學習一下Dubbo Provider處理服務調用請求源碼。 當前consumer發起了rpc請求,經過請求編碼之后到達provider端,…

每日一leetcode:移動零

目錄 解題過程: 描述: 分析條件: 解題思路: 通過這道題可以學到什么: 解題過程: 描述: 給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ,必須在不復制數組的情況下原地對數組進行操…

6-Django項目實戰-[dtoken]-用戶登錄模塊

1.創建應用 python manage.py startapp dtoken 2.注冊應用 settings.py中注冊 3.匹配路由4.編寫登錄功能視圖函數 import hashlib import json import timeimport jwt from django.conf import settings from django.http import JsonResponse from user.models import UserPro…

Axure日期日歷高保真動態交互原型

在數字化產品設計中,日期日歷組件作為高頻交互元素,其功能完整性與用戶體驗直接影響著用戶對產品的信任度。本次帶來的日期日歷高保真動態交互原型,依照Element UI、View UI等主流前端框架為參考,通過動態面板、中繼器、函數、交互…

【YOLOv4】

YOLOv4 論文地址::【https://arxiv.org/pdf/2004.10934】 YOLOv4 論文中文翻譯地址:【深度學習論文閱讀目標檢測篇(七)中文版:YOLOv4《Optimal Speed and Accuracy of Object Detection》-CSDN博客】 yol…

【秋招筆試】2025.08.03蝦皮秋招筆試-第一題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍在線刷題 bishipass.com 01. 蛋糕切分的最大收益 問題描述 K小姐經營著一家甜品店,今天她有一塊長度為 n n n 厘米的長條蛋糕需要切分。根據店里的規定,她必須將蛋糕切成至少 2 2

2.0 vue工程項目的創建

前提準備.需要電腦上已經安裝了nodejs 參考 7.nodejs和npm簡單使用_npmjs官網-CSDN博客 創建vue2工程 全局安裝 Vue CLI 在終端中運行以下命令來全局安裝 Vue CLI: npm install -g vue/cli npm install -g 表示全局安裝。vue/cli 是 Vue CLI 的包名。 安裝完成后…

視覺圖像處理中級篇 [2]—— 外觀檢查 / 傷痕模式的原理與優化設置方法

外觀缺陷檢測是工業生產中的關鍵環節,而傷痕模式作為圖像處理的核心算法,能精準識別工件表面的劃痕、污跡等缺陷。掌握其原理和優化方法,對提升檢測效率至關重要。一、利用傷痕模式進行外觀檢查雖然總稱為外觀檢查,但根據檢查對象…

ethtool,lspci,iperf工具常用命令總結

ethtool、lspci 和 iperf 是 Linux 系統中進行網絡硬件查看、配置和性能測試的核心命令行工具。下面是它們的常用命令分析和總結: 核心作用總結: lspci: 偵察兵 - 列出系統所有 PCI/PCIe 總線上的硬件設備信息,主要用于識別網卡型號、制造商、…

DAY10DAY11-新世紀DL(DeepLearning/深度學習)戰士:序

本文參考視頻[雙語字幕]吳恩達深度學習deeplearning.ai_嗶哩嗶哩_bilibili 參考文章0.0 目錄-深度學習第一課《神經網絡與深度學習》-Stanford吳恩達教授-CSDN博客 1深度學習概論 1.舉例介紹 lg房價預測:房價與面積之間的坐標關系如圖所示,由線性回歸…

flutter release調試插件

chucker_flutter (只有網絡請求的信息,親測可以用) flutter:3.24.3 使用版本 chucker_flutter: 1.8.2 chucker_flutter | Flutter package void main() async {// 可以控制顯示ChuckerFlutter.showNotification false;ChuckerF…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序的私域流量拉新策略研究

摘要:私域流量運營已成為企業數字化轉型的核心戰略,其本質是通過精細化用戶運營實現流量價值最大化。本文以“定位、拉新、養熟、成交、裂變、留存”全鏈路為框架,聚焦開源鏈動21模式、AI智能名片與S2B2C商城小程序的協同創新,揭示…

華為云云服務高級顧問葉正暉:華為對多模態大模型的思考與實踐

嘉賓介紹:葉正暉,華為云云服務高級顧問,全球化企業信息化專家,從業年限超過23年,在華為任職超過21年,涉及運營商、企業、消費者、云服務、安全與隱私等領域,精通云服務、安全合規、隱私保護等領…