hadoop的企業優化

来源:https://www.cnblogs.com/dongxiucai/archive/2018/10/09/9759826.html
-Advertisement-
Play Games

前言: Mapreduce程式的效率的瓶頸在於兩點: MapReduce優化方法 數據輸入: (1)合併小文件:在執行任務前將小文件進行合併 (2)採用CombineTextInputformat來作為輸入,解決輸入端大量小文件的場景。將多個小文件從邏輯上規划到一個切片中,這樣,多個小文件就可以交給 ...


前言:

  Mapreduce程式的效率的瓶頸在於兩點:

電腦性能:
  CPU、記憶體、磁碟健康、網路
I/O操作:
  數據傾斜
  map和reduce數量設置不合理
  map的運行時間太長,導致reduc的等待過久
  小文件過多
  大量的補課分塊的超大文件
  spill(溢寫)次數過多
  merge(合併)次數過多

MapReduce優化方法

  數據輸入:

    (1)合併小文件:在執行任務前將小文件進行合併

    (2)採用CombineTextInputformat來作為輸入,解決輸入端大量小文件的場景。將多個小文件從邏輯上規划到一個切片中,這樣,多個小文件就可以交給一個 maptask。     

      CombineTextInputFormat.setMaxInputSplitSize(job, 4194304);// 4m

      CombineTextInputFormat.setMinInputSplitSize(job, 2097152);// 2m

      job.setInputFormatClass(CombineTextInputFormat.class

  Map階段:

    (1)減少溢寫(spill)操作:通過調整 io.sort.mb 及 sort.spill.percent 參數值,增大觸發spill 的記憶體上限,減少 spill 次數,從而減少磁碟 IO。

    (2)減少合併(merge)操作:通過調整 io.sort.factor 參數,增大 merge 的文件數目,減少 merge 的次數,從而縮短 mr 處理時間。

    (3)在不影響業務邏輯的前提下,先進行combine處理,減少I/O。

  Reduce階段:

    (1)合理設置map和reduce的數量

    (2)設置map、reduce共存:調整 slowstart.completedmaps 參數,使 map 運行到一定程度後,reduce 也開始運行,減少reduce 的等待時間。

    (3)規避使用reduce

    (4)合理使用reduce端的buffer

  I/O傳輸:

    (1)採用數據壓縮的方法,減少網路IO時間

    (2)使用sequenceFile二進位文件

  數據傾斜問題:

    (1)抽樣和範圍分區

    (2)自定義分區

    (3)Combine

    (4)採用Map join,儘量避免reduce join

  JVM重用:

    對於大量的小文件job,開啟JVM重用會減少45%運行時間。 

    具體設置:mapreduce.job.jvm.numtasks 值在 10-20 之間。

    

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 入門概述 是什麼 Redis:REmote DIctionary Server(遠程字典伺服器) Redis:REmote DIctionary Server(遠程字典伺服器) 是完全開源免費的,用C語言編寫的,遵守BSD協議,是一個高性能的(Key/Value)分散式記憶體資料庫,基於記憶體運行並支持 ...
  • 作者:網易有數鄭棟。 一、為什麼企業需要一套完善的用戶行為埋點和分析平臺 產品初創期間,需要分析天使用戶的行為來改進產品,甚至從用戶行為中得到新的思路或發現來調整產品方向;產品成長過程,通過對用戶行為的多角度(多維)分析、對用戶群體的劃分以及相應行為特征的分析和比較,來指導產品設計、運營活動,並對市 ...
  • 一、資料庫相關理論 1、系統資料庫 information_schema: 虛擬庫,不占用磁碟空間,存儲的是資料庫啟動後的一些參數,如用戶表信息、列信息、許可權信息、字元信息等performance_schema: MySQL 5.5開始新增一個資料庫:主要用於收集資料庫伺服器性能參數,記錄處理查詢請 ...
  • Redis Sentinel是Redis的高可用方案。是Redis 2.8中正式引入的。 在之前的主從複製方案中,如果主節點出現問題,需要手動將一個從節點升級為主節點,然後將其它從節點指向新的主節點,並且需要修改應用方主節點的地址。整個過程都需要人工干預。 下麵通過日誌具體看看Sentinel的切換 ...
  • 基本知識點: 1.似乎mongo3.6之前不允許插入帶點(.)或美元符號($)的鍵,但是當我使用mongoimport工具導入包含點的JSON文件時,它工作正常。 2.在使用spring-data-mongodb處理mongodb的增刪改查時會通過一個MappingMongoConverter(Do ...
  • 數據表的建立和刪除: (瞭解) CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… ) DROP TABLE 數據表名稱 (永久性刪除一個數據表) SQL插入數據語法: sql=“INSERT INTO 數據表 (欄位1,欄位2,欄位3 …) VALUES ( ...
  • 在本文中,我們將分享在為事務性數據構建高度可伸縮的多租戶分析服務時所吸取的教訓。我們將從大局和業務需求開始。然後描述具有用於數據準備、發佈和查詢引擎的批處理和互動式模塊的體繫結構,並註意相關的Spark技術。然後我們將深入Prism查詢引擎的內部,重點介紹所使用的Spark SQL、DataFram ...
  • 本章屬於總結章節,從矩陣的基礎知識講起,介紹了協方差、橢圓對稱矩陣、Dyads、Directional variance(方向差)等知識並從而擴展到了概率論知識例如貝葉斯公式,Bayes Rule for density matrices等,並用簡潔有力的語言總結了主成分分析的執行思想。 資源 下載 ...
一周排行
    -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# ...