现在的位置: 首页 > 综合 > 正文

Hadoop 參數設定 – core-site.xml

2013年10月04日 ⁄ 综合 ⁄ 共 2419字 ⁄ 字号 评论关闭

Hadoop 相關的參數非常的多,要怎麼設定才能達到最好的效能是一件令人頭痛的事
本篇是 core-site.xml 的設定及說明

  • fs.default.name
    預設值 : file:///
    說明 : 設定 Hadoop namenode 的 hostname 及 port,預設是 Standalone mode,如果是 Pseudo-Distributed mode 要指定為 hdfs://localhost:9000,但是這個缺點是只有在本機才能操作,從其他機器不能連。建議可直接使用 Cluster mode,指定 hdfs://hostname:9000。但是 Hadoop 是依據 hostname 去做 ip binding,所以要注意 /etc/hosts 裡 hostname 不能對應到
    127.0.0.1,要對應實際的 ip。
    1 10.1.112.70       
    hostname

    如果發現不能從其他機器連線的話,在 namenode 上用 netstat 看 ip/port mapping 是否正確

    1 tcp       
    0      0 ::ffff:10.1.112.70:9000     :::*                        LISTEN      2691/java
    2 tcp       
    0      0 ::ffff:10.1.112.70:9000     ::ffff:10.1.112.70:49119    ESTABLISHED 2691/java          
    3 tcp       
    0      0 ::ffff:10.1.112.70:9000     ::ffff:10.1.112.70:49113    ESTABLISHED 2691/java

     

  • hadoop.tmp.dir
    預設值 : /tmp/hadoop-${user.name}
    說明 : Hadoop 存放暫存檔案的目錄,會根據 user account 在此目錄下開不同的子目錄。但是放在預設的 /tmp 下可能會有一個問題,一般在 Centos 會 enable tmpwatch,tmpwatch 會定期把 /tmp 下沒用到的檔案砍掉,如果不希望系統做這件事,可以 disable tmpwatch 或把 hadoop.tmp.dir 指到不同的目錄下

     

  • fs.checkpoint.dir
    預設值 : ${hadoop.tmp.dir}/dfs/namesecondary
    說明 : secondary namenode 存放暫存檔案的目錄,如果有多個目錄可用",“隔開。設定多個目錄的好處是 Hadoop 會把 temp image files 分別寫到指定的多個目錄,以避免其中一份資料壞掉。seconary namenode 相關的設定不一定需要,甚至在 Hadoop cluster 可以不需要起 secondary namenode。但重起 namenode 時也會做 file merge,當檔案很大時,重起的時間會非常的長。為了減少 downtime,建議在
    production site 都會啟動 secondary namenode。而且要起在跟 namenode 不同的機器,以保證當 namenode 硬碟壞掉的時候,還可以從 secondary namenode 上把資料備份回來。

     

  • fs.checkpoint.period
    預設值 : 3600(秒)
    說明 : 控制 secondary namenode 的 checkpoint 時間間隔。如果距離上次 checkpoint 的時間大於這個參數設定的值,就會觸發 checkpoint。secondary namenode 會把 namenode 的 fsimage 和 editlog 做 snapshot。如果存取 Hadoop 的次數頻繁或為了減少重起 namenode 的 downtime,可以把這個值設小一點。

     

  • fs.checkpoint.size
    預設值 : 67108864(byte)
    說明 : 如果 Hadoop 非常的忙碌,editlog 可能會在短時間內長的很大,fs.checkpoint.period 的設定不見得可以完全預測這個狀況,所以保險的做法會多設定這個值,以保證當檔案大到超過 fs.checkpoint.size 的值也會觸發 checkpoint。

     

  • io.file.buffer.size
    預設值 : 4096(byte)
    說明 : 這是讀寫 sequence file 的 buffer size, 可減少 I/O 次數。在大型的 Hadoop cluster,建議可設定為 65536 到 131072。

     

  • ipc.client.connection.maxidletime
    預設值 : 10000(毫秒)
    說明 : 設定 Hadoop client 連線時最大的閒置時間,預設是 10 秒。如果 Hadoop cluster 的網路連線不穩,可以把這個值設到 60000(60秒)。

     

  • ipc.server.tcpnodelay
    預設值 : false
    說明 : 在 Hadoop server 是否啟動 Nagle’s 演算法。設 true 會 disable 這個演算法,關掉會減少延遲,但是會增加小封包的傳輸。server site 不太需要這定這個值。

     

  • ipc.client.tcpnodelay
    預設值 : false
    說明 : 在 Hadoop client 是否啟動 Nagle’s 演算法。設 true 會 disable 這個演算法,關掉會減少延遲,但是會增加小封包的傳輸。client site 建議把這個值設 true。

     

  • hadoop.security.authorization
    預設值 : false
    說明 : 是不是要開啟 service-level 帳號驗證機制,開啟之後 Hadoop 在執行任何動作之前都會先確認是否有權限。詳細的權限設定會放在 hadoop-policy.xml 裡。例如要讓 fenriswolf 這個 account 及 mapreduce group 可以 submit M/R jobs,要設定 security.job.submission.protocol.acl
    1 <property>
    2      <name

    抱歉!评论已关闭.