1. 程式人生 > >Hadoop效能優化點小結

Hadoop效能優化點小結

最近一段時間看了許多Hadoop效能優化相關的資料,於是花了點時間整理了一下,希望給正在苦於Hadoop叢集效能問題的博友們一點建議吧。

1、Hadoop在儲存有輸入資料的節點上執行map任務,可以獲得最佳效能,稱為“資料本地化優化“,所以一般會設定最大分片的大小應該與塊大小相同,如果分片跨越2個塊的大小,必然要經過網路傳輸到不同的節點上讀取資料。

2、適當的時候使用Combine函式。Combine的階段是在map階段到reduce階段之間進行的,在某些Job中,設定Combine可以減少Shuffle過程中資料的傳輸量,並且不會影響到最終的結果。

3、有的時候我們想要匯入一部分資料到HDFS,這時候可以不用自己重新寫一個應用程式,可以通過Flume或者Sqoop等工具匯入。

4、Hadoop中有一個有用的distcp分散式複製程式,可以用於Hadoop檔案系統間的檔案資料拷貝,也可以用於將外部資料拷貝到Hadoop中,distcp的典型應用場景是在2個HDFS叢集之間傳輸資料。

5、向HDFS複製資料後,需要考慮叢集的負載均衡性,這時候可以利用均衡器(balancer)等工具。

6、Hadoop存檔工具使用,減少namenode上儲存每個塊的元資料所耗費的記憶體,因為大量的小檔案會耗盡namenode上大量的記憶體。

7、為了效能上的考慮,可以使用原生的native類庫來實現壓縮和解壓縮,例如,使用原生gzip類。

8、對於大檔案來說,不要使用不支援切分整個檔案的壓縮格式,因為會失去資料的本地性。,使用支援切分的壓縮格式,例如bzip2。

9、在Hadoop序列化中,對整數進行編碼的時候,有2種選擇,一個是定長格式,1個是變長格式,定長格式適合對整個值域空間中分佈比較均勻的資料進行編碼。但是大部分的數值變數的分散式不均勻的,這樣可以使用變長格式,可以節省空間。

10、NullWritable是Writable的特殊型別,如果不需要使用鍵或值的序列化地址的時候,可以將鍵或值宣告為NUllWritable。

11、目前儘管多數的MR程式使用的是Writable型別的鍵和值,但是這不是MapReduce API所強制使用的。其實可以使用任何型別,只要能有一種機制實現每個型別與二進位制型別表示的來回轉換就可以了。

12、MapReduce應用程式是一個分散式的程式,所以最好使用單元測試來確保函式的執行符合預期,一般是先通過小型資料集的測試。

13、可以使用MRUnit測試庫,進行map,reduce功能函式的測試。

14、MapReduce相關作業的執行狀態資訊可以通過Web UI來檢視。

15、在超過數億條記錄的資料集中,有的時候我們可以扔掉不正確的記錄,當然我們可以通過自定義計數器來捕獲不合理的資料。

16、Mapper需要執行多長時間,如果只執行幾秒鐘,則看看能否用更少的Mapper來執行,時間長度取決於使用的輸入格式。

17、為了達到最佳效能,叢集中reducer數量應該略少於reducer中的任務槽數。

18、使用自定義的Writable物件或自定義的comparator。

19、使用HPROF分析工具來實現任務。HPROF是JDK自帶的分析工具。

20、在map輸出寫到磁碟的過程中對其進行壓縮可以使得寫磁碟的速度更快,並且可以節約磁碟空間,減少傳給reducer的資料量。

21、在map端要避免多次溢寫操作,在Shuffle過程中儘量多提供記憶體空間,減少頻繁的IO操作。

22、有的時候可以選擇關閉推測執行,在一個繁忙的叢集中,推測執行會減少整體的吞吐量,冗餘任務的執行必然會佔據一部分的資源。

23、當有大量的超短執行時間的任務執行的時候,可以考慮JVM的重用。

24、計數器是MapReduce中的高階屬性,他可以作為作業統計資訊的有效手段之一。通常可用於記錄某一特定事件的發出次數。

25、在Hadoop中可以利用DistributedCache分散式快取來提高作業執行的效率。

參考資料:<<Hadoop權威指南>>.Tom.White

相關推薦

Hadoop效能優化小結

最近一段時間看了許多Hadoop效能優化相關的資料,於是花了點時間整理了一下,希望給正在苦於Hadoop叢集效能問題的博友們一點建議吧。 1、Hadoop在儲存有輸入資料的節點上執行map任務,可以獲

淺談網頁基本效能優化規則小結

這篇文章主要介紹了淺談網頁基本效能優化規則小結的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 針對瀏覽器網頁的一些優化規則 頁面優化 靜態資源壓縮 藉助構建工具(webpack、gulp)適當壓縮圖片、指令碼及樣式等網頁靜態資源。 CSS雪碧圖、base64內

oracle 效能優化建議小結

原則一:注意WHERE子句中的連線順序:  ORACLE採用自下而上的順序解析WHERE子句,根據這個原理,表之間的連線必須寫在其他WHERE條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾.  尤其是“主鍵ID=?”這樣的條件。   原

Spark效能優化(一)

1.分配更多的資源    1.1.增加executor     1.2.增加每個executor的cpu core           增加executor的並行能力,一個cpu core執行一個t

webpack前段構建效能優化策略小結

const webpack = require('webpack');   const path = require('path');   const isDebug = process.env.NODE_ENV === 'development';   const outputPath = isDebug

【個人小結】一次資料庫效能優化問題

  需求場景:存在表t_result_changelog,表記錄了caseNo的相關資料,有些caseNo已經被刪除,但表中的資料沒有對應清理。 難點分析:判斷表中哪些資料已經被刪除,需要在對應版本的caseInfo_version中查詢   初次嘗試: 選擇

loading動畫的效能優化-摒棄Canvas,擁抱CSS3-實現選特效

click-colorful 專案中有個活動頁載入時有個loading動畫,效果如上圖,連續綻放小球,問題就是太卡,經常出現一堆小球抱團卡住,遂進行優化 注意:(僅在頁面載入時卡頓,載入完畢,點選的時候不卡頓) 檢視程式碼發現改動畫時借用的animejs 官網中的效果,通過can

網站效能優化注意

網站的效能的指標: 白屏時間 首屏時間 整頁時間 DNS時間 CPU佔用率 一、網路傳輸效能優化 重定向→拉取快取→DNS查詢→建立TCP連結→發起請求→接收響應→處理HTML元素→元素載入完成。 (1)設定瀏覽器快取

效能優化的祕密】Hadoop如何將TB級大檔案的上傳效能優化上百倍

往期文章1、 拜託!面試請不要再問我Spring Cloud底層原理2、 【雙11狂歡的背後】微服務註冊中心如何承載大型系統的千萬級訪問?3、 【效能優化之道】每秒上萬併發下的Spring Cloud引數優化實戰4、 微服務架構如何保障雙11狂歡下的99.99%

效能優化的祕密】Hadoop如何將TB級大檔案的上傳效能優化上百倍?

一、寫在前面 上一篇文章,我們聊了一下Hadoop中的NameNode裡的edits log寫機制。 主要分析了edits log寫入磁碟和網路的時候,是如何通過分段加鎖以及雙緩衝的機制,大幅度提升了多執行緒併發寫edits log的吞吐量,從而支援高併發的訪問。 如果沒看那

前端效能優化之路-資料存取小結

接著上一節講的,我們說到過,效能優化的一大痛點就是IO讀寫,這一次我們討論一下,資料讀寫的優化,資料儲存的位置,介質決定了讀取的速度。 主要指的是,應用記憶體(執行時記憶體),遠端記憶體(redis等),本地檔案系統(localstorage),遠端檔案系統(

Spark專案實戰-實際專案中常見的優化-使用foreachPartition優化寫資料庫效能

首先,我們看一下foreach的寫原理: 1、foreach的效能缺陷在哪裡? (1)首先對於每條資料都要單獨去呼叫一次function,task為每個資料都要去執行一次function函式。 如果100萬條資料(一個partition),呼叫100萬次,效能比較差

Regular進階: 幾效能優化的建議

本文由作者鄭海波授權網易雲社群釋出。 本文旨在用 20% 的精力解決使用Regular過程中 80% 的效能問題. 這裡大部分是關於髒檢查的效能優化,不瞭解的可以先看下《Regular髒檢查介紹》 首先,我們可以用一個簡化後的公式來描述Regular的單次髒檢查的複雜度 N·logN

vue效能優化小結

元件優化 一般來說,你不需要太關心vue的執行時效能,它在執行時非常快,但付出的代價是初始化時相對較慢。先看一下常見的vue寫法:在html裡放一個app元件,app元件裡又引用了其他的子元件,形成一棵以app為根節點的元件樹。 <div id="app"> <router-vie

CSS 寫作建議和效能優化小結

1.前言 還有幾天就到國慶中秋了,快要放假了,先祝大家節日快樂!之前寫過 JS 的寫作建議和技巧,那麼今天就來聊聊 CSS 吧! 說到 CSS,每一個網頁都離不開 CSS,但是對於 CSS,很多開發者的想法就是,CSS 只要能用來佈局,把效果圖排出來就可以了,其它的細節或

Tomcat 6 效能優化小結

(一)        目前市場上常用的開源Java Web容器有Tomcat、Resin和Jetty。其中Resin從V3.0後需要購買才能用於商業目的,而其他兩種則是純開源的。可以分別從他們的網站上下載最新的二進位制包和原始碼。 作為Web容器,需要承受較高的訪問量,能夠同時響應不同使用者的請求,能夠在

前端效能優化的那

前端效能優化可以分為:伺服器優化、網頁內容優化、cookie優化、CSS優化、JavaScript優化、圖片優化這六個方面 1. 伺服器優化措施 使用CDN內容分發網路-----就近獲取資源 新增expires或者cache-control報文頭(快取角度,參考:https://blog.

Hadoop鏈式MapReduce、多維排序、倒排索引、自連線演算法、二次排序、Join效能優化、處理員工資訊Join實戰、URL流量分析、TopN及其排序、求平均值和最大最小值、資料清洗ETL、分析氣

Hadoop Mapreduce 演算法彙總  第52課:Hadoop鏈式MapReduce程式設計實戰...1 第51課:Hadoop MapReduce多維排序解析與實戰...2 第50課:HadoopMapReduce倒排索引解析與實戰...3 第49課:Hado

系統架構的可用性與效能優化

一、需求緣起 明明架構要求高可用,為何系統中還會存在單點? 回答:單點master的設計,會大大簡化系統設計,何況有時候避免不了單點 在哪些場景中會存在單點?先來看一下一個典型網際網路高可用架構。 典型網際網路高可用架構: (1)客戶端層,這一層是瀏覽器或者A

關於效能優化的那事——BigRender首屏渲染優化

背景 一個龐大的頁面, 有時我們並不會滾動去看下面的內容, 這樣就造成了非首屏部分的渲染, 這些無用的渲染不僅包括圖片還包括其他DOM元素, 甚至一些js/css(某些js/css根據模組請求,比如ajax), 理論上每增加一個DOM, 都會增加渲染的時間, 並且影響著