1. 程式人生 > >hadoop屬性的配置調優記錄

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記憶體大小