配置文件
hadoop的配置是由兩種重要類型的配置文件進行驅動的:
默認是只讀的配置:
core-default.xml, hdfs-default.xml, yarn-default.xml and mapred-default.xml。
特殊節點配置:
conf/core-site.xml, conf/hdfs-site.xml, conf/yarn-site.xml and conf/mapred-site.xml。
此外,你可以通過分布的bin/文件夾下的hadoop腳本conf/hadoop-env.sh和yarn-env.sh。通過設置設定值進行控制。
節點配置:
要配置Hadoop集群,你需要配置在Hadoop運行的環境中配置環境變量以及為Hadoop守護進程的配置參數。
Hadoop啟動進程是NameNode/DataNode and ResourceManager/NodeManager。
配置Hadoop運行環境
管理員可以使用的conf/hadoop-env.sh 和 conf/yarn-env.sh腳本做的Hadoop運行的進程環境中的特定節點的配置。至少你應該正確配置集群遠程節點上的JAVA_HOME 。
在大多數情況下,你也應該設置HADOOP_PID_DIR 和 HADOOP_SECURE_DN_PID_DIR。設置只有運行在Hadoop進程中的用戶才可以有寫的權限。否則有可能受到攻擊。
管理員可以使用下表所示的配置選項配置各個守護進程:
進程值
|
環境變量
|
NameNode
|
HADOOP_NAMENODE_OPTS
|
DataNode
|
HADOOP_DATANODE_OPTS
|
Secondary NameNode
|
HADOOP_SECONDARYNAMENODE_OPTS
|
ResourceManager
|
YARN_RESOURCEMANAGER_OPTS
|
NodeManager
|
YARN_NODEMANAGER_OPTS
|
WebAppProxy
|
YARN_PROXYSERVER_OPTS
|
Map Reduce Job History Server
|
HADOOP_JOB_HISTORYSERVER_OPTS
|
例如,要配置的Namenode使用parallelGC,下面的語句應該在的hadoop-env.sh加入:
其他有用的配置參數,你可以自定義包括:
HADOOP_LOG_DIR / YARN_LOG_DIR -hadoop的守護進程的日志文件的存儲目錄。他們如果目錄不存在,會自動創建。
HADOOP_HEAPSIZE / YARN_HEAPSIZE-堆大小的上限設置。以MB為單位例如:如果varibale設置為1000堆將被設置為1000MB。這是用來配置堆大小的守護進程。默認情況下,該值是1000,如果你想單獨配置值為每個守護進程設置就可以使用。
-
守護進程環境變量ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZENodeManagerYARN_NODEMANAGER_HEAPSIZEWebAppProxyYARN_PROXYSERVER_HEAPSIZEMap Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE
在非安全模式下配置hadoop守護進程。
本節討論在給定的配置文件中指定重要的參數的問題:
- conf/core-site.xml
參數值注釋fs.defaultFSNameNode URIhdfs://host:port/io.file.buffer.size131072SequenceFiles文件中.讀寫緩存size設定
- conf/hdfs-site.xml:配置 NameNode:
-
參數值Notesdfs.namenode.name.dir在本地文件系統所在的NameNode的存儲空間和持續化處理日志如果這是一個以逗號分隔的目錄列表,然后將名稱表被復制的所有目錄,以備不時之需。dfs.namenode.hosts /dfs.namenode.hosts.excludeDatanodes
permitted/excluded列表如有必要,可以使用這些文件來控制允許數據節點的列表dfs.blocksize268435456大型的文件系統HDFS塊大小為256MBdfs.namenode.handler.count100設置更多的namenode線程,處理從datanode發出的大量RPC請求 - Configurations for DataNode:
ParameterValueNotesdfs.datanode.data.dir逗號分隔的一個DataNode上,它應該保存它的塊的本地文件系統的路徑列表如果這是一個以逗號分隔的目錄列表,那么數據將被存儲在所有命名的目錄,通常在不同的設備。
-
- conf/yarn-site.xml
- 配置ResourceManager 和 NodeManager:
參數值備注yarn.acl.enabletrue /false啟用ACL的?默認為false。yarn.admin.aclAdmin ACL訪問控制列表,在群集上設置管理員。 ACL是為逗號分隔usersspacecomma分隔組。默認為*特殊值這意味着任何人。只是空間的特殊值意味着沒有人進入。yarn.log-aggregation-enablefalse配置來啟用或禁用日志聚合
- 配置 ResourceManager:
參數值備注yarn.resourcemanager.address客戶端對ResourceManager主機通過 host:port 提交作業host:portyarn.resourcemanager.scheduler.addressApplicationMasters 通過ResourceManager 主機訪問host:port 跟蹤調度程序獲資源host:portyarn.resourcemanager.resource-tracker.addressNodeManagers通過ResourceManager主機訪問 host:porthost:portyarn.resourcemanager.admin.address管理命令通過ResourceManager 主機訪問host:porthost:portyarn.resourcemanager.webapp.addressResourceManager web頁面host:port.host:portyarn.resourcemanager.scheduler.classResourceManager 調度類(Scheduler class)CapacityScheduler(推薦),FairScheduler(也推薦),orFifoScheduleryarn.scheduler.minimum-allocation-mb每個容器內存最低限額分配到的資源管理器要求I以MB為單位yarn.scheduler.maximum-allocation-mb資源管理器分配給每個容器的內存最大限制以MB為單位yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-pathNodeManagers 的permitted/excluded列表如有必要,可使用這些文件來控制允許NodeManagers列表。
- 配置 NodeManager:
參數值備注yarn.nodemanager.resource.memory-mbgivenNodeManager即資源的可用物理內存,以MB為單位定義在節點管理器總的可用資源,以提供給運行容器yarn.nodemanager.vmem-pmem-ratio最大比率為一些任務的虛擬內存使用量可能會超過物理內存率每個任務的虛擬內存的使用可以通過這個比例超過了物理內存的限制。虛擬內存的使用上的節點管理器任務的總量可以通過這個比率超過其物理內存的使用。yarn.nodemanager.local-dirs數據寫入本地文件系統路徑的列表用逗號分隔多條存儲路徑可以提高磁盤的讀寫速度yarn.nodemanager.log-dirs本地文件系統日志路徑的列表逗號分隔。多條存儲路徑可以提高磁盤的讀寫速度yarn.nodemanager.log.retain-seconds10800如果日志聚合被禁用。默認的時間(以秒為單位)保留在節點管理器只適用日志文件,yarn.nodemanager.remote-app-log-dir/logsHDFS目錄下的應用程序日志移動應用上完成。需要設置相應的權限。僅適用日志聚合功能。yarn.nodemanager.remote-app-log-dir-suffixlogs后綴追加到遠程日志目錄。日志將被匯總到 ${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} 僅適用日志聚合功能。yarn.nodemanager.aux-servicesmapreduce_shuffleShuffle service 需要加以設置的Map Reduce的應用程序服務。
- 配置歷史記錄服務器(需要被移到別處):
參數值備注yarn.log-aggregation.retain-seconds-1如何長期保持聚集日志刪除之前。 -1禁用。請注意,設置這個太小了,你將名稱節點的垃圾郵件yarn.log-aggregation.retain-check-interval-seconds-1檢查匯總的日志保留的時間。如果設置為0或負值,則該值被計算為十分之一的聚合日志保留時間。請注意,設置這個太小了,你將稱為名稱節點的垃圾郵件。
- 配置ResourceManager 和 NodeManager:
- conf/mapred-site.xml
- 配置 MapReduce 應用程序:
參數值備注mapreduce.framework.nameyarn執行框架設置為 Hadoop YARN.mapreduce.map.memory.mb1536對maps更大的資源限制的.mapreduce.map.java.opts-Xmx1024Mmaps 中對jvm child設置更大的堆大小mapreduce.reduce.memory.mb3072設置 reduces對於較大的資源限制mapreduce.reduce.java.opts-Xmx2560Mreduces對 child jvms Larger heap-size 設置mapreduce.task.io.sort.mb512更高的內存限制,而對數據進行排序的效率。mapreduce.task.io.sort.factor100在文件排序中更多的流合並為一次mapreduce.reduce.shuffle.parallelcopies50通過reduces從非常多的map中讀取較多的平行副本
- 配置MapReduce的JobHistory服務器:
ParameterValueNotesmapreduce.jobhistory.addressMapReduce JobHistory Server host:port默認端口號 10020.mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UIhost:port默認端口號 19888.mapreduce.jobhistory.intermediate-done-dir/mr-history/tmp在歷史文件被寫入由MapReduce作業mapreduce.jobhistory.done-dir/mr-history/done目錄中的歷史文件是由MR JobHistory Server管理。
- 配置 MapReduce 應用程序: