Hadoop概述

      網友投稿 547 2025-04-01

      1. MapReduce 概述


      1.1 MapReduce 定義

      MapReduce 是一個分布式運算程序的編程框架,是用戶開發“基于 Hadoop 的數據分析

      應用”的核心框架。

      MapReduce 核心功能是將用戶編寫的業務邏輯代碼和自帶默認組件整合成一個完整的

      分布式運算程序,并發運行在一個 Hadoop 集群上。

      1.2 MapReduce 優缺點

      1.2.1 優點

      1)MapReduce 易于編程

      它簡單的實現一些接口,就可以完成一個分布式程序,這個分布式程序可以分布到大量

      廉價的 PC 機器上運行。也就是說你寫一個分布式程序,跟寫一個簡單的串行程序是一模一

      樣的。就是因為這個特點使得 MapReduce 編程變得非常流行。

      2)良好的擴展性

      當你的計算資源不能得到滿足的時候,你可以通過簡單的增加機器來擴展它的計算能力。

      3)高容錯性

      MapReduce 設計的初衷就是使程序能夠部署在廉價的 PC 機器上,這就要求它具有很高

      的容錯性。比如其中一臺機器掛了,它可以把上面的計算任務轉移到另外一個節點上運行,

      不至于這個任務運行失敗,而且這個過程不需要人工參與,而完全是由 Hadoop 內部完成的。

      4)適合 PB 級以上海量數據的離線處理

      可以實現上千臺服務器集群并發工作,提供數據處理能力。

      1.2.2 缺點

      1)不擅長實時計算

      MapReduce 無法像 MySQL 一樣,在毫秒或者秒級內返回結果。

      2)不擅長流式計算

      流式計算的輸入數據是動態的,而 MapReduce 的輸入數據集是靜態的,不能動態變化。

      這是因為 MapReduce 自身的設計特點決定了數據源必須是靜態的。

      3)不擅長 DAG(有向無環圖)計算

      多個應用程序存在依賴關系,后一個應用程序的輸入為前一個的輸出。在這種情況下,

      MapReduce 并不是不能做,而是使用后,每個 MapReduce 作業的輸出結果都會寫入到磁盤,

      會造成大量的磁盤 IO,導致性能非常的低下。

      1.3 MapReduce 核心思想

      (1)分布式的運算程序往往需要分成至少 2 個階段。

      (2)第一個階段的 MapTask 并發實例,完全并行運行,互不相干。

      (3)第二個階段的 ReduceTask 并發實例互不相干,但是他們的數據依賴于上一個階段

      的所有 MapTask 并發實例的輸出。

      (4)MapReduce 編程模型只能包含一個 Map 階段和一個 Reduce 階段,如果用戶的業

      務邏輯非常復雜,那就只能多個 MapReduce 程序,串行運行。

      總結:分析 WordCount 數據流走向深入理解 MapReduce 核心思想。

      1.4 MapReduce 進程

      一個完整的 MapReduce 程序在分布式運行時有三類實例進程:

      (1)MrAppMaster:負責整個程序的過程調度及狀態協調。

      (2)MapTask:負責 Map 階段的整個數據處理流程。

      (3)ReduceTask:負責 Reduce 階段的整個數據處理流程。

      1.5 官方 WordCount 源碼

      采用反編譯工具反編譯源碼,發現 WordCount 案例有 Map 類、Reduce 類和驅動類。且

      數據的類型是 Hadoop 自身封裝的序列化類型。

      1.6 常用數據序列化類型

      除了 Text 類型的其他類型都是在Java類型的后面加了 Writable

      1.7 MapReduce 編程規范

      用戶編寫的程序分成三個部分:Mapper、Reducer 和 Driver。

      1. Mapper 階段

      ( 1 ) 用戶自定義的Mapper要繼承自己的父類

      ( 2 ) Mapper的輸入數據是KV對(K:偏移量,V:對應的內容)的形式(KV的類型可自定義)

      ( 3 ) Mapper中的業務邏輯寫在map()方法中

      ( 4 ) Mapper的輸出數據是KV對的形式(KV的類型可自定義)

      ( 5 ) map() 方法(MapTask進程)對每一個調用一次

      2. Reducer 階段

      ( 1 ) 用戶自定義的Reducer要繼承自己的父類

      ( 2 ) Reducer的輸入數據類型對應Mapper的輸出數據類型,也是KV

      ( 3 ) Reducer的業務邏輯寫在reduce()方法中

      ( 4 ) ReduceTask進程對每一組相同k的組調用一次reduce()方法

      3. Driver 階段

      Hadoop概述

      相當于YARN集群的客戶端,用于提交我們整個程序到YARN集群,提交的是封裝了MapReduce程序相關運行參數的job對象

      Hadoop MapReduce

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:淺談 OKR 與 KPI:okr和kpi的定義和應用場景(淺談中國教育)
      下一篇:我剛剛做的文件沒有保存怎么恢復(剛做好的文件沒保存怎么找回
      相關文章
      亚洲一级片在线播放| 亚洲日韩av无码中文| 亚洲一区二区三区在线观看蜜桃| 亚洲AV无码久久精品成人 | 亚洲成a∨人片在无码2023| 亚洲中文字幕无码一去台湾| 亚洲精品自拍视频| 亚洲邪恶天堂影院在线观看| 亚洲国产老鸭窝一区二区三区| 久久综合九九亚洲一区| 亚洲AV综合色区无码一区 | 亚洲欧洲国产经精品香蕉网| 久久精品九九亚洲精品| 亚洲伊人tv综合网色| 亚洲男人都懂得羞羞网站| 亚洲国产一区二区a毛片| 亚洲久本草在线中文字幕| 亚洲人成在线播放网站岛国| 亚洲人成在线播放网站岛国| 2022年亚洲午夜一区二区福利| 亚洲色欲或者高潮影院| 亚洲国产精品午夜电影| 亚洲日本久久一区二区va| 久久亚洲精品国产精品婷婷| 亚洲乱亚洲乱妇无码| 全亚洲最新黄色特级网站 | 久久亚洲精品无码aⅴ大香| 久久精品国产亚洲av麻豆色欲| 亚洲精品视频观看| 亚洲一级免费视频| 亚洲七久久之综合七久久| 精品韩国亚洲av无码不卡区| 亚洲麻豆精品国偷自产在线91| 国产亚洲精品福利在线无卡一| 亚洲午夜国产精品无码老牛影视 | 亚洲第一成人在线| 亚洲精品亚洲人成在线| 日韩精品亚洲专区在线观看| 亚洲色图综合在线| 九月丁香婷婷亚洲综合色| 亚洲专区在线视频|