記錄一下Hadoop的配置和說明,用到新的配置項會補充進來,不按期更新。以配置文件名劃分java
以hadoop 1.x配置爲例node
core-site.xmllinux
name | value | Description |
fs.default.name | hdfs://hadoopmaster:9000 | 定義HadoopMaster的URI和端口 |
fs.checkpoint.dir | /opt/data/hadoop1/hdfs/namesecondary1 | 定義hadoop的name備份的路徑,官方文檔說是讀取這個,寫入dfs.name.dir |
fs.checkpoint.period | 1800 | 定義name備份的備份間隔時間,秒爲單位,只對snn生效,默認一小時 |
fs.checkpoint.size | 33554432 | 以日誌大小間隔作備份間隔,只對snn生效,默認64M |
io.compression.codecs | Hadoop所使用的編解碼器,gzip和bzip2爲自帶,lzo需安裝hadoopgpl或者kevinweil,逗號分隔,snappy也須要單獨安裝 | |
io.compression.codec.lzo.class | com.hadoop.compression.lzo.LzoCodec | LZO所使用的壓縮編碼器 |
topology.script.file.name | /hadoop/bin/RackAware.py | 機架感知腳本位置 |
topology.script.number.args | 1000 | 機架感知腳本管理的主機數,IP地址 |
fs.trash.interval | 10800 | HDFS垃圾箱設置,能夠恢復誤刪除,分鐘數,0爲禁用,添加該項無需重啓hadoop |
hadoop.http.filter.initializers | ||
hadoop.http.authentication.type | simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# | 驗證方式,默認爲簡單,也可本身定義class,需配置全部節點 |
hadoop.http.authentication. token.validity (排版調整,實際配置不要回車) |
36000 | 驗證令牌的有效時間,需配置全部節點 |
hadoop.http.authentication. signature.secret (排版調整,實際配置不要回車) |
默承認不寫參數 | 默認不寫在hadoop啓動時自動生成私密簽名,需配置全部節點 |
hadoop.http.authentication.cookie.domain | domian.tld | http驗證所使用的cookie的域名,IP地址訪問則該項無效,必須給全部節點都配置域名才能夠。 |
hadoop.http.authentication. simple.anonymous.allowed (排版調整,實際配置不要回車) |
true | false | 簡單驗證專用,默認容許匿名訪問,true |
HTTP/localhost@$LOCALHOST | Kerberos驗證專用,參加認證的實體機必須使用HTTP做爲K的Name | |
hadoop.http.authentication. kerberos.keytab (排版調整,實際配置不要回車) |
/home/xianglei/hadoop.keytab | Kerberos驗證專用,密鑰文件存放位置 |
hadoop.security.authorization | true|false | Hadoop服務層級驗證安全驗證,需配合hadoop-policy.xml使用,配置好之後用dfsadmin,mradmin -refreshServiceAcl刷新生效 |
io.file.buffer.size | 131072 | 用做序列化文件處理時讀寫buffer的大小 |
hadoop.security.authentication | simple | kerberos | hadoop自己的權限驗證,非http訪問,simple或者kerberos |
hadoop.logfile.size | 1000000000 | 設置日誌文件大小,超過則滾動新日誌 |
hadoop.logfile.count | 20 | 最大日誌數 |
io.bytes.per.checksum | 1024 | 每校驗碼所校驗的字節數,不要大於io.file.buffer.size |
io.skip.checksum.errors | true | false | 處理序列化文件時跳過校驗碼錯誤,不拋異常。默認false |
io.serializations | 序列化的編解碼器 | |
io.seqfile.compress.blocksize | 1024000 | 塊壓縮的序列化文件的最小塊大小,字節 |
webinterface.private.actions | true | false | 設爲true,則JT和NN的tracker網頁會出現殺任務刪文件等操做鏈接,默認是false |
結合Apache手冊和公司裏用的實際配置編寫,實際根據硬件配置的不一樣,參數大小需作調整,目前參數基於namenode 96G內存,datanode 32G內存。有些har,s3,local這樣的fs的implement由於不太會用到,因此沒寫。 網絡
水平有限,參數描述理解或翻譯有誤見諒。
續上篇整理一下hdfs相關的配置項
hdfs-site.xml
name | value | Description |
dfs.default.chunk.view.size | 32768 | namenode的http訪問頁面中針對每一個文件的內容顯示大小,一般無需設置。 |
dfs.datanode.du.reserved | 1073741824 | 每塊磁盤所保留的空間大小,須要設置一些,主要是給非hdfs文件使用,默認是不保留,0字節 |
dfs.name.dir | /opt/data1/hdfs/name, /opt/data2/hdfs/name, /nfs/data/hdfs/name |
NN所使用的元數據保存,通常建議在nfs上保留一份,做爲1.0的HA方案使用,也能夠在一臺服務器的多塊硬盤上使用 |
dfs.web.ugi | nobody,nobody | NN,JT等所使用的web tracker頁面服務器所使用的用戶和組 |
dfs.permissions | true | false | dfs權限是否打開,我通常設置false,經過開發工具培訓別人界面操做避免誤操做,設置爲true有時候會遇到數據由於權限訪問不了。 |
dfs.permissions.supergroup | supergroup | 設置hdfs超級權限的組,默認是supergroup,啓動hadoop所使用的用戶一般是superuser。 |
dfs.data.dir | /opt/data1/hdfs/data, /opt/data2/hdfs/data, /opt/data3/hdfs/data, ... |
真正的datanode數據保存路徑,能夠寫多塊硬盤,逗號分隔 |
dfs.datanode.data.dir.perm | 755 | datanode所使用的本地文件夾的路徑權限,默認755 |
dfs.replication | 3 | hdfs數據塊的複製份數,默認3,理論上份數越多跑數速度越快,可是須要的存儲空間也更多。有錢人能夠調5或者6 |
dfs.replication.max | 512 | 有時dn臨時故障恢復後會致使數據超過默認備份數。複製份數的最多數,一般沒什麼用,不用寫配置文件裏。 |
dfs.replication.min | 1 | 最小份數,做用同上。 |
dfs.block.size | 134217728 | 每一個文件塊的大小,咱們用128M,默認是64M。這個計算須要128*1024^2,我碰上過有人直接寫128000000,十分浪漫。 |
dfs.df.interval | 60000 | 磁盤用量統計自動刷新時間,單位是毫秒。 |
dfs.client.block.write.retries | 3 | 數據塊寫入的最多重試次數,在這次數以前不會捕獲失敗。 |
dfs.heartbeat.interval | 3 | DN的心跳檢測時間間隔。秒 |
dfs.namenode.handler.count | 10 | NN啓動後展開的線程數。 |
dfs.balance.bandwidthPerSec | 1048576 | 作balance時所使用的每秒最大帶寬,使用字節做爲單位,而不是bit |
dfs.hosts | /opt/hadoop/conf/hosts.allow | 一個主機名列表文件,這裏的主機是容許鏈接NN的,必須寫絕對路徑,文件內容爲空則認爲全均可以。 |
dfs.hosts.exclude | /opt/hadoop/conf/hosts.deny | 基本原理同上,只不過這裏放的是禁止訪問NN的主機名稱列表。這在從集羣中摘除DN會比較有用。 |
dfs.max.objects | 0 | dfs最大併發對象數,HDFS中的文件,目錄塊都會被認爲是一個對象。0表示不限制 |
dfs.replication.interval | 3 | NN計算複製塊的內部間隔時間,一般不需寫入配置文件。默認就好 |
dfs.support.append | true | false | 新的hadoop支持了文件的APPEND操做,這個就是控制是否容許文件APPEND的,可是默認是false,理由是追加還有bug。 |
dfs.datanode.failed.volumes.tolerated | 0 | 可以致使DN掛掉的壞硬盤最大數,默認0就是隻要有1個硬盤壞了,DN就會shutdown。 |
dfs.secondary.http.address | 0.0.0.0:50090 | SNN的tracker頁面監聽地址和端口 |
dfs.datanode.address | 0.0.0.0:50010 | DN的服務監聽端口,端口爲0的話會隨機監聽端口,經過心跳通知NN |
dfs.datanode.http.address | 0.0.0.0:50075 | DN的tracker頁面監聽地址和端口 |
dfs.datanode.ipc.address | 0.0.0.0:50020 | DN的IPC監聽端口,寫0的話監聽在隨機端口經過心跳傳輸給NN |
dfs.datanode.handler.count | 3 | DN啓動的服務線程數 |
dfs.http.address | 0.0.0.0:50070 | NN的tracker頁面監聽地址和端口 |
dfs.https.enable | true | false | NN的tracker是否監聽在HTTPS協議,默認false |
dfs.datanode.https.address | 0.0.0.0:50475 | DN的HTTPS的tracker頁面監聽地址和端口 |
dfs.https.address | 0.0.0.0:50470 | NN的HTTPS的tracker頁面監聽地址和端口 |
dfs.datanode.max.xcievers | 2048 | 至關於linux下的打開文件最大數量,文檔中無此參數,當出現DataXceiver報錯的時候,須要調大。默認256 |
主要配置裏會用到的大概就是這些了,還有一些https certfile和一些internal時間配置的,不經常使用的就不寫了。
續上篇
mapred-site.xml
name | value | Description |
hadoop.job.history.location | |
job歷史文件保存路徑,無可配置參數,也不用寫在配置文件裏,默認在logs的history文件夾下。 |
hadoop.job.history.user.location | |
用戶歷史文件存放位置 |
io.sort.factor | 30 | 這裏處理流合併時的文件排序數,我理解爲排序時打開的文件數 |
io.sort.mb | 600 | 排序所使用的內存數量,單位兆,默認1,我記得是不能超過mapred.child.java.opt設置,不然會OOM |
mapred.job.tracker | hadoopmaster:9001 | 鏈接jobtrack服務器的配置項,默認不寫是local,map數1,reduce數1 |
mapred.job.tracker.http.address | 0.0.0.0:50030 | jobtracker的tracker頁面服務監聽地址 |
mapred.job.tracker.handler.count | 15 | jobtracker服務的線程數 |
mapred.task.tracker.report.address | 127.0.0.1:0 | tasktracker監聽的服務器,無需配置,且官方不建議自行修改 |
mapred.local.dir | /data1/hdfs/mapred/local, /data2/hdfs/mapred/local, ... |
mapred作本地計算所使用的文件夾,能夠配置多塊硬盤,逗號分隔 |
mapred.system.dir | /data1/hdfs/mapred/system, /data2/hdfs/mapred/system, ... |
mapred存放控制文件所使用的文件夾,可配置多塊硬盤,逗號分隔。 |
mapred.temp.dir | /data1/hdfs/mapred/temp, /data2/hdfs/mapred/temp, ... |
mapred共享的臨時文件夾路徑,解釋同上。 |
mapred.local.dir.minspacestart | 1073741824 | 本地運算文件夾剩餘空間低於該值則不在本地作計算。字節配置,默認0 |
mapred.local.dir.minspacekill | 1073741824 | 本地計算文件夾剩餘空間低於該值則再也不申請新的任務,字節數,默認0 |
mapred.tasktracker.expiry.interval | 60000 | TT在這個時間內沒有發送心跳,則認爲TT已經掛了。單位毫秒 |
mapred.map.tasks | 2 | 默認每一個job所使用的map數,意思是假設設置dfs塊大小爲64M,須要排序一個60M的文件,也會開啓2個map線程,當jobtracker設置爲本地是不起做用。 |
mapred.reduce.tasks | 1 | 解釋同上 |
mapred.jobtracker.restart.recover | true | false | 重啓時開啓任務恢復,默認false |
mapred.jobtracker.taskScheduler | org.apache.hadoop.mapred. CapacityTaskScheduler org.apache.hadoop.mapred. JobQueueTaskScheduler org.apache.hadoop.mapred. FairScheduler |
重要的東西,開啓任務管理器,不設置的話,hadoop默認是FIFO調度器,其餘可使用公平和計算能力調度器 |
mapred.reduce.parallel.copies | 10 | reduce在shuffle階段使用的並行複製數,默認5 |
mapred.child.java.opts | 每一個TT子進程所使用的虛擬機內存大小 | |
tasktracker.http.threads | 50 | TT用來跟蹤task任務的http server的線程數 |
mapred.task.tracker.http.address | 0.0.0.0:50060 | TT默認監聽的httpIP和端口,默承認以不寫。端口寫0則隨機使用。 |
mapred.output.compress | true | false | 任務結果採用壓縮輸出,默認false,建議false |
mapred.output.compression.codec | org.apache.hadoop.io. compress.DefaultCodec |
輸出結果所使用的編解碼器,也能夠用gz或者bzip2或者lzo或者snappy等 |
mapred.compress.map.output | true | false | map輸出結果在進行網絡交換前是否以壓縮格式輸出,默認false,建議true,能夠減少帶寬佔用,代價是會慢一些。 |
mapred.map.output.compression.codec | com.hadoop.compression. lzo.LzoCodec |
map階段壓縮輸出所使用的編解碼器 |
map.sort.class | org.apache.hadoop.util. QuickSort |
map輸出排序所使用的算法,默認快排。 |
mapred.hosts | conf/mhost.allow | 容許鏈接JT的TT服務器列表,空值所有容許 |
mapred.hosts.exclude | conf/mhost.deny | 禁止鏈接JT的TT列表,節點摘除是頗有做用。 |
mapred.queue.names | ETL,rush,default | 配合調度器使用的隊列名列表,逗號分隔 |
mapred.tasktracker.map. tasks.maximum |
12 | 每服務器容許啓動的最大map槽位數。 |
mapred.tasktracker.reduce. tasks.maximum |
6 | 每服務器容許啓動的最大reduce槽位數 |
撿一些比較重要的,用的多的配置,官網建議的專家配置項基本沒寫上,改壞了就很差玩了。