shullfe機制詳解

来源:https://www.cnblogs.com/HelloBigTable/archive/2019/03/29/10618819.html
-Advertisement-
Play Games

一、shuffle機制概述 shuffle機制就是發生在MR程式中,Mapper之後,Reducer之前的一系列分區排序的操作。shuffle的作用是為了保證Reducer收到的數據都是按鍵排序的。 二、shuffle機制的流程 還是按照上個隨筆MR整體流程的需求來做參考: 1.Mapper中con ...


一、shuffle機制概述

  shuffle機制就是發生在MR程式中,Mapper之後,Reducer之前的一系列分區排序的操作。shuffle的作用是為了保證Reducer收到的數據都是按鍵排序的。

二、shuffle機制的流程

  還是按照上個隨筆MR整體流程的需求來做參考:

  1.Mapper中context的write方法將數據寫入環形緩衝區,當容量到達80%發生溢寫;

  2.按照一塊數據為128M,那麼應該會發生兩次溢寫,對溢寫出的數據進行分區;

  3.然後對完成分區的數據進行區內排序;

  4.如果數據量到達一定規模可以使用Combiner合併,這是一個區內合併;

  5.接著會將兩次一次的數據進行歸併操作,合二為一;

  6.將歸併後的數據寫入磁碟;

  7.maptask工作完成後,reducetask的記憶體會緩衝讀取磁碟中的數據文件;

  8.當記憶體不足時會將數據溢出到磁碟;

  9.對存入磁碟的數據進行歸併排序(輔助排序在這個階段);

  10.按照相同的key分組,然後一條一條讀入reducer。

  如圖:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Date命令 以下是一個例子: Linux:/usr/local/sbin # date +"%Y-%m-%d %H-%M-%S"2018-06-22 02-19-41 date在腳本中的幾個用法: date +%Y 以四位數字格式列印年份 date +%y 以二位數字格式列印年份 date +%m ...
  • Linux系統中如何掛載磁碟? 如何支持磁碟空間的動態擴容? LVM技術是做什麼的? 本篇文章手把手教你用兩種方式掛載磁碟, 歡迎交流^_^ ...
  • Nginx動態添加模塊 已經安裝好的Nginx動態添加模塊 說明: 已經安裝好的Nginx,需要添加一個未被編譯安裝的模塊,需要怎麼弄呢? 這裡已安裝第三方nginx-rtmp-module模塊為例 nginx的模塊是需要重新編譯nginx,而不是像apache一樣配置文件引用.so 具體操作步驟: ...
  • 一、vstapd配置 vsftpd 服務(a、匿名公開 b、系統本地賬戶驗證c、虛擬專用用戶驗證) iptables -F (清空防火牆) service iptables save (保存防火牆配置) yum install vsftpd systemctl restart vsftpd syst ...
  • FTP服務安裝與埠說明 FTP埠修改安裝部署windowswindows 2012文件服務 1. FTP服務介紹 1.1 什麼是FTP FTP(File Transfer Protocol)是文件傳送協議的英文縮寫,是用於Internet上的控制文件的雙向傳輸的協議。同時,它也是一個應用程式。用 ...
  • 下載redis_exporter插件 代理插件不一定非要安裝在redis端 解壓 啟動redis_exporter登陸redis redis預設埠是6379 查看redis_exporte是否開啟 修改prometheus配置文件 重啟prometheus grafana配置 配置promethe ...
  • Linux 發展史 Linux 是一種完全免費並對全世界開放源碼的操作系統,其火熱程度源於其理念--open、share、free,人們可以自由的安裝,並可以修改和完善軟體的源程式。這一切要歸功於Linux最初的設計者——Linus Torvalds,是他將Linux這個偉大的作品無償的獻給了世界, ...
  • 停止或者重新啟動Apache有兩種發送信號的方法 第一種方法: 直接使用linux的kill命令向運行中的進程發送信號。你也許你會註意到你的系統里運行著很多httpd進程。但你不應該直接對它們中的任何一個發送信號,而只要對已經在PidFile中記載下了自身PID的父進程發送信號。也就是說,你不必對父 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...