1. 程式人生 > 其它 >HADOOP 優化(6):Hadoop綜合調優(1)

HADOOP 優化(6):Hadoop綜合調優(1)

10.1 Hadoop檔案優化方法

10.1.1 Hadoop小檔案弊端

HDFS上每個檔案都要在NameNode上建立對應的元資料,這個元資料的大小約為150byte,這樣當小檔案比較多的時候,就會產生很多的元資料檔案,一方面會大量佔用NameNode的記憶體空間,另一方面就是元資料檔案過多,使得定址索引速度變慢。

小檔案過多,在進行MR計算時,會生成過多切片,需要啟動過多的MapTask。每個MapTask處理的資料量小,導致MapTask的處理時間比啟動時間還小,白白消耗資源。

10.1.2 Hadoop小檔案解決方案

1)在資料採集的時候,就將小檔案或小批資料合成大檔案再上傳HDFS(資料來源頭)

2Hadoop Archive(儲存方向)

是一個高效的將小檔案放入HDFS塊中的檔案存檔工具,能夠將多個小檔案打包成一個HAR檔案,從而達到減少NameNode的記憶體使用

3CombineTextInputFormat(計算方向)

CombineTextInputFormat用於將多個小檔案在切片過程中生成一個單獨的切片或者少量的切片。

4)開啟uber模式,實現JVM重用(計算方向)

預設情況下,每個Task任務都需要啟動一個JVM來執行,如果Task任務計算的資料量很小,我們可以讓同一個Job的多個Task執行在一個JVM中,不必為每個Task都開啟一個JVM

1)未開啟uber

模式,在/input路徑上上傳多個小檔案並執行wordcount程式

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output2

2)觀察控制檯

2021-02-14 16:13:50,607 INFO mapreduce.Job: Job job_1613281510851_0002 running in uber mode : false

3)觀察http://hadoop103:8088/cluster

4)開啟uber模式,在

mapred-site.xml中新增如下配置

<!--  開啟uber模式,預設關閉 -->
<property>
      <name>mapreduce.job.ubertask.enable</name>
      <value>true</value>
</property>

<!-- uber模式中最大的mapTask數量,可向下修改  --> 
<property>
      <name>mapreduce.job.ubertask.maxmaps</name>
      <value>9</value>
</property>
<!-- uber模式中最大的reduce數量,可向下修改 -->
<property>
      <name>mapreduce.job.ubertask.maxreduces</name>
      <value>1</value>
</property>
<!-- uber模式中最大的輸入資料量,預設使用dfs.blocksize 的值,可向下修改 -->
<property>
      <name>mapreduce.job.ubertask.maxbytes</name>
      <value></value>
</property>

5)分發配置

[atguigu@hadoop102 hadoop]$ xsync mapred-site.xml

6)再次執行wordcount程式

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output2

7)觀察控制檯

2021-02-14 16:28:36,198 INFO mapreduce.Job: Job job_1613281510851_0003 running in uber mode : true

8)觀察http://hadoop103:8088/cluster

10.2測試MapReduce計算效能

使用Sort程式評測MapReduce

注:一個虛擬機器不超過150G磁碟儘量不要執行這段程式碼

(1)使用RandomWriter來產生隨機數,每個節點執行10Map任務,每個Map產生大約1G大小的二進位制隨機數

[atguigu@hadoop102 mapreduce]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar randomwriter random-data

(2)執行Sort程式

[atguigu@hadoop102 mapreduce]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar sort random-data sorted-data

(3)驗證資料是否真正排好序了

[atguigu@hadoop102 mapreduce]$

hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar testmapredsort -sortInput random-data -sortOutput sorted-data

本文來自部落格園,作者:秋華,轉載請註明原文連結:https://www.cnblogs.com/qiu-hua/p/15229373.html