hadoop屬性的配置調優記錄
1.配置網頁檢視hadoop叢集狀態
在瀏覽器輸入http://ip地址:8088/cluster,即可用網頁檢視hadoop叢集狀態,配置好之後檢視某個作業時會報錯,這是因為沒有設定域名重定向,我的電腦是Win7作業系統,設定域名重定向的方法是:在本地計算機的C:\Windows\System32\drivers\etc目錄下找到hosts檔案,記事本開啟hosts檔案,在hosts檔案的最後,新增IP地址和IP地址指向的域名,中間用tab鍵隔開,例如: 172.19.0.123 master
2.配置JobHistory
jobhistory很有用處,當啟動hadoop叢集時,將jobhistory也啟動,方便隨時檢視作業執行的歷史記錄。
修改配置檔案,在mapred-site.xml檔案中加入以下內容:
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property>
使用命令mr-jobhistory-daemon.sh start historyserver 啟動服務,可以開啟網址
http://172.19.0.189:19888/jobhistory/即為配置成功
3.Uber模式啟動
Uber模式開啟後,允許JVM重用,可以節約一定的資源,但是是否能啟動Uber模式還是由hadoop進行一系列的判斷後決定,這裡配置為true僅僅是允許啟動,是否能夠啟動還有多個判斷條件,全都滿足才能夠啟動。
在yarn-site.xml檔案中配置
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
4.記憶體分配
在mapred-site.xml檔案中配置,map任務的記憶體分配,為單個map任務分配2048MB記憶體
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
在mapred-site.xml檔案中配置,在啟動虛擬機器時,該屬性的值將傳遞給虛擬機器,-Xmx2048m 表示map任務中的 Java 程式可以使用的最大堆記憶體數,一旦超過這個大小,JVM 會丟擲 Out of Memory 異常
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx2048m</value>
</property>
5.超時設定
在mapred-site.xml檔案中配置,若map任務或reduce任務在8000分鐘內沒有輸出或返回內容,NM會認為該任務已經死亡,NM會向AM報告,AM會殺死該任務並在其他節點上嘗試重新執行
<property>
<name>mapreduce.task.timeout</name>
<value>8000000</value>
<final>true</final>
</property>
6.virtualmemory
map任務執行時會報錯:Current usage: 107.3 MB of1 GB physical memory used; 2.9 GB of 2.1 GB virtual memory used. Killingcontainer.
在yarn-site.xml中配置
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>true</value>
</property>
7.yarn資源管理中記憶體分配的相關配置
RM相關記憶體配置
yarn.scheduler.minimum-allocation-mb
單個任務可申請的最少實體記憶體量,預設是1024(MB),如果一個任務申請的實體記憶體量少於該值,則該對應的值改為這個數。
yarn.scheduler.maximum-allocation-mb
單個任務可申請的最多實體記憶體量,預設是8192(MB)。
NM相關記憶體配置
yarn.nodemanager.resource.memory-mb
表示該節點上YARN可使用的實體記憶體總量,預設是8192(MB),注意,如果節點記憶體資源不夠8GB,則需要調減小這個值,而YARN不會自動檢測節點的實體記憶體總量。
yarn.nodemanager.vmem-pmem-ratio
任務每使用1MB實體記憶體,最大可使用的虛擬記憶體,預設是2.1。
yarn.nodemanager.pmem-check-enabled
是否啟動一個執行緒檢查每個任務使用的實體記憶體,如果任務使用超出分配值,則直接將其殺掉,預設是true。
yarn.nodemanager.vmem-check-enabled
是否啟動一個執行緒檢查每個任務使用的虛擬記憶體,如果任務使用超出分配值,則直接將其殺掉,預設是true。
AM相關配置
<property><name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name><value>2048</value>
</property>
指定map和reduce task的記憶體大小,該值應該在RM的最大最小container之間。
AM的其他引數設定:
mapreduce.map.java.opts
mapreduce.reduce.java.opts
這兩個引數是為需要執行在JVM的程式準備,通過這兩個引數可以向JVM中傳遞引數,與記憶體有關的是-Xmx, -Xms等選項,數值的大小應該要再AM中的map.mb和reduce.mb之間。
RM、NM、AM記憶體設定相關關係
NM(yarn.nodemanager.resource.memory-mb,該屬性決定yarn在該節點能使用的最大記憶體)
RM(yarn.scheduler.minimum-allocation-mb、yarn.scheduler.maximum-allocation-mb,該屬性決定每個container在節點上所能使用的最大記憶體,因此不能超過NM中的記憶體配置的大小)
AM(mapreduce.map.memory.mb、mapreduce.reduce.memory.mb,該屬性決定每個任務所能使用的記憶體大小,因此不能超過RM中配置的container記憶體大小)