hadoop shuffle過程的優化

2021-09-25 00:23:16 字數 1239 閱讀 2334

shuffle 過程的優化(mapreduce 的優化)

combiner 合併優化

在 map 階段提前進行了一次合併,一般來講等同於提前執行了 reduce 操作

好處:可以降低 reduce 的壓力

為什麼說在 map 階段提前執行 reduce 方法可以降低 reduce 的壓力?
在 map階段的進行合併是並行的(分布式的)。

combiner 合併可以解決資料傾斜問題:
什麼是資料傾斜:簡單來將,就是資料分配不均勻

換個通俗易懂的解釋,就是一幫人幹活,累的累死,閒的閒死

可以選擇性的把大量的相同 key 資料先進行乙個合併

然後再交給 reduce 來處理,這樣做的好處很多

即減輕了 map 端向 reduce 端傳送的資料量 (減輕了網路頻寬)

也減輕了 map 端和 reduce 端中間的 shuffle 階段的資料拉取數量 (本地化磁碟 io 速率)

注意:不是所有處理資料時都可以使用合併,只有當處理的資料的 value 相同時,才可以使用 combiner 合併進行優化

compress 壓縮優化:大大減少磁碟 io 以及網路 io

mapreduce 有很多地方都可以壓縮

輸入的就是乙個壓縮檔案

map shuffle 中合併成乙個大檔案,對該檔案進行壓縮,reduce 過來取資料就是壓縮之後的數

檢查本地庫支援哪些壓縮:

bin/hadoop checknative
配置方式:

方式一:main方法中configuration

方式二:在配置檔案中

全域性修改,所有mapreduce都生效

方式三:執行的時候通過自定義配置

bin/yarn jar ***.jar -dxx=yy -daa=bb mianclass input_path output_path

檢查是否配置成功

方式一:8088ui介面 -》history -》configuration-》檢視對應配置引數

方式二:檢視計數器,linux 中的結果輸出資訊

計數器:

在 map 或者 reduce 中使用計數器

context.getcounter(temperature.total).increment(1);

詳解Hadoop Shuffle過程

1.在客戶端啟動乙個作業。2.向jobtracker請求乙個job id。3.將執行作業所需要的資源檔案複製到hdfs上,包括mapreduce程式打包的jar檔案 配置檔案和客戶端計算所得的輸入劃分資訊。這些檔案都存放在jobtracker專門為該作業建立的資料夾中。資料夾名為該作業的job id...

大資料入門 2 Hadoop shuffle

過程 map shuffle reduce 19 07 13 19 55 31 info mapreduce.job map 0 reduce 0 19 07 13 19 55 42 info mapreduce.job map 50 reduce 0 19 07 13 19 55 43 info ...

統一過程,敏捷過程,微軟過程 收集

一 rational 統一過程 六個最佳實踐 1 迭代式開發 2 需求管理 3 使用基於構件的體系結構 4 視覺化建模 uml 5 驗證軟體質量 6 控制軟體變更 二 敏捷過程 ap 流派有 極限程式設計,scrum,動態系統開發,特徵驅動開發等 四條基本價值觀 1 個體和互動勝過過程和工具 2 可...