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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...