Hadoop配置項整理

 

記錄一下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

org.apache.hadoop.io.compress.DefaultCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec
(排版調整,實際配置不要回車)web

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

org.apache.hadoop.security.
AuthenticationFilterInitializer
(排版調整,實際配置不要回車)算法

須要jobtracker,tasktracker
namenode,datanode等http訪問端口用戶驗證使用,需配置全部節點apache

 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

 hadoop.http.authentication.
kerberos.principal
(排版調整,實際配置不要回車)安全

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

org.apache.hadoop.io.
serializer.WritableSerialization服務器

(排版須要。實際配置不要回車)cookie

序列化的編解碼器
 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

-Xmx2048m

-Djava.library.path=
/opt/hadoopgpl/native/
Linux-amd64-64

每一個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槽位數

 

撿一些比較重要的,用的多的配置,官網建議的專家配置項基本沒寫上,改壞了就很差玩了。

相關文章
相關標籤/搜索