hadoop參數配置,主要是配置 core-site.xml,hdfs-site.xml,mapred-site.xml 三個配置文件,core-site.xml是全局配置,hdfs-site.xml和mapred-site.xml分別是hdfs和mapred的局部配置,core-default.xml,hdfs-default.xml,mapred-default.xml 是集群的默認配置,HDP2.4 安裝包中 hadoop 版本為2.7,分別可從下面的地址獲取到默認的參數說明:
- core-default: http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/core-default.xml
- hsdf-default: http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
- mapred-site: http://hadoop.apache.org/docs/r2.7.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
目錄:
- core-site常用參數
- hsdf-site常用參數
core-site常用參數:
- ha.zookeeper.quorum: ZooKeeper集群的地址和端口。注意,數量一定是奇數,且不少於三個節點,如(hdp3:2181,hdp2:2181,r:2181)
- fs.trash.interval: 這個是開啟hdfs文件刪除自動轉移到垃圾箱的選項,值為垃圾箱文件清除時間,單位是分鍾,默認:360
- io.file.buffer.size: SequenceFiles在讀寫中可以使用的緩存大小,默認設置:131072
- net.topology.script.file.name: 機架感知腳本位置
- ipc.client.connect.max.retrie: 建立與服務器連接的重試次數,默認為50
hsdf-site常用參數: 文檔中的默認值是指基於 hdp2.4安裝后的默認值
- dfs.blocksize: 每個文件塊的大小,我們用128M
- dfs.replication: hdfs數據塊的復制份數,默認3
- dfs.heartbeat.interval: DN的心跳檢測時間間隔,默認3秒
- dfs.permissions.enabled: dfs權限是否打開, 建議設為false,否則可能存在數據因為權限問題訪問不了的情況
- dfs.permissions.superusergroup: 設置hdfs超級權限的組,默認是hdfs
- dfs.cluster.administrators: hdfs超級管理員,默認:hdfs
- dfs.datanode.data.dir: NN保存元數據和事務日志的本地目錄,可用逗號分隔的目錄列表用於指定多份數據的冗余備份.
- dfs.datanode.data.dir.perm: dn所使用的本地文件夾的路徑權限,默認755
- dfs.datanode.du.reserved: 表示在datanode對磁盤寫時候,保留多少非dfs的磁盤空間,從而避免dfs將所在的磁盤寫滿,默認為0
- dfs.datanode.failed.volumes.tolerated: dn允許磁盤損壞的個數,默認為0, (dn啟動時候會使用dfs.data.dir下配置的文件夾,若是有一些不可以用且個數>上面配置的那個 值,啟動失敗)
- dfs.datanode.balance.bandwidthPerSec: balancer時,hdfs移動數據的速度,默認值為1M/S的速度。一般情況下設置為10M
- dfs.datanode.max.transfer.threads: 數據傳輸最大線程,默認:16384
- dfs.datanode.address: DN的服務監聽端口,端口為0的話會隨機監聽端口,通過心跳通知NN,默認:50010
- dfs.datanode.http.address: dn WebUI, 默認:50075
- dfs.datanode.https.address: DN的HTTPS服務器和端口, 默認:50475
- dfs.datanode.ipc.address: DN的IPC監聽端口,寫0的話監聽在隨機端口通過心跳傳輸給NN,默認:8010
- dfs.namenode.checkpoint.dir: standy NN節點存儲 checkpoint 文件目錄,默認:/hadoop/hdfs/namesecondary
- dfs.namenode.stale.datanode.interval: 標記一個dn為“down機”時間間隔,即:如果 nn沒有接到一個dn心跳超過這個時間間隔,dn將標記為“過期”,過期的間隔不能太小 (默認: 3000)
- dfs.journalnode.http-address: JournalNode web UI監聽。 如果端口是0,那么服務器將啟動將自定義端口, 默認:8480
- dfs.support.append: 是否允許文件追加, (hbase 的 wal 就是追加方式吧)
- dfs.blockreport.intervalMsec: 控制DN定期將當前該結點上所有的BLOCK信息報告給NN的時間間隔,默認21600000ms = 1小時
- dfs.blockreport.initialDelay: 初始值為0
- 說明:dn啟動后第一次報告自己的block信息的時間是在(0,$(dfs.blockreport.initialDelay ))之間的一個隨機數 initTime,然后從initTime(不同datanode上的這個隨即肯定是不一樣的)開始每隔dfs.blockreport.intervalMsec 時間,該datanode會向namenode報告自己的所有block的信息,如果沒有initTime,多有datanode都從啟動的那一刻開始發,這樣會造成大量數據發往nn,造成堵塞
- dfs.replication.min 最小復制份數,默認為1
- dfs.replication.max 最大復制份數,默認為512
- dfs.namenode.safemode.threshold-pct 指定應有多少比例的數據塊滿足最小副本數要求,默認0.999f
- 說明: (NN在啟動的時候首先進入安全模式,如果DN丟失的block達到此參數設置的比例,則系統會一直處於安全模式狀態即只讀狀態。如果設為1則HDFS永遠是處於SafeMode)