問題導讀
1.說說你對集群配置的認識?
2.集群配置的配置項你了解多少?
3.下面內容讓你對集群的配置有了什么新的認識?![]()
目的
目的1:
這個文檔描述了如何安裝配置hadoop集群,從幾個節點到上千節點。為了學習hadoop,你可能先從單節點入手 (查看 Single Node Setup).這里有中文版hadoop2.7【單節點】單機、偽分布、分布式安裝指導
http://www.aboutyun.com/thread-12798-1-1.html
這個文檔不包括:hadoop在安全模式下配置和HA【高可用配置】,后面在更新
目的2:
我們看了很多集群配置文檔,你是否靜下心來,想集群配置到底是怎么一回事。
准備
1.安裝Java
2.下載hadoop包
##################################
包集合:
hadoop家族、strom、spark、Linux、flume等jar包、安裝包匯總下載(持續更新)
http://www.aboutyun.com/thread-8178-1-1.html
##################################
安裝
安裝hadoop集群包括:解壓包,配置hadoop,划分主節點和子節點。
集群中可以將namenode和ResourceManager分布在不同的機器上,這些稱之為master。其它服務例如:Web App Proxy Server 和 MapReduce Job History server,根據負載可以共享設施或則使用專用的機器。
集群其它機器作為 DataNode 和 NodeManager.這些是slaves
配置hadoop【非安全模式】
hadoop配置文件被分為兩類:
1.只讀默認配置,有下列配置文件
core-default.xml, hdfs-default.xml, yarn-default.xml and mapred-default.xml.
2.定制配置,有下列配置文件
etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.
另外你可以配置hadoop腳本,在hadoop的bin目錄下,通過 etc/hadoop/hadoop-env.sh 和 etc/hadoop/yarn-env.sh來指定值。
配置hadoop集群需要配置環境變量,Hadoop守護進程執行以及Hadoop守護進程的配置參數。如果沒有配置過集群,可能對這個了解不多,具體參考
hadoop(2.x)以hadoop2.2為例完全分布式最新高可靠安裝文檔
http://www.aboutyun.com/thread-7684-1-1.html
hdfs守護進程:
NameNode, SecondaryNameNode, 和 DataNode
YARN 守護進程:
ResourceManager, NodeManager, 和 WebAppProxy
如果運行MapReduce , MapReduce Job History Server也會運行。前提需要配置並開啟。對於比較大的集群安裝,他們分別運行在不同的客戶端。
配置守護進程環境變量
管理員使用 etc/hadoop/hadoop-env.sh , etc/hadoop/mapred-env.sh 和 etc/hadoop/yarn-env.sh 腳本來定制hadoop守護進程變量。
至少需要需要指定JAVA_HOME ,每個節點都必須指定。
管理員可以配置單獨的守護進程,使用下面的選項。
|
Daemon
|
Environment Variable
|
|
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 聲明如下:
|
1
|
export
HADOOP_NAMENODE_OPTS=
"-XX:+UseParallelGC"
|
查看 etc/hadoop/hadoop-env.sh 其它例子
其它可定義的有用參數包括
- HADOOP_PID_DIR - 存儲守護進程id的文件目錄.
- HADOOP_LOG_DIR - 存儲守護進程日志文件目錄. 日志文件自動創建如果不存在。
- HADOOP_HEAPSIZE / YARN_HEAPSIZE -heapsize內存最大配置.如果變量為1000, heap 是1000MB. 這是為守護進程配置heap. 默認值1000M.
在大多數情況下,應該指定HADOOP_PID_DIR 和 HADOOP_LOG_DIR,他們由用戶運行hadoop守護進程所寫,否則可能是潛在攻擊。
傳統配置HADOOP_PREFIX 在系統級環境變量配置,例如一個簡單的腳本 /etc/profile.d:
|
1
2
|
HADOOP_PREFIX=
/path/to/hadoop
export
HADOOP_PREFIX
|
|
Daemon
|
Environment Variable
|
|
ResourceManager
|
YARN_RESOURCEMANAGER_HEAPSIZE
|
|
NodeManager
|
YARN_NODEMANAGER_HEAPSIZE
|
|
WebAppProxy
|
YARN_PROXYSERVER_HEAPSIZE
|
|
Map Reduce Job History Server
|
HADOOP_JOB_HISTORYSERVER_HEAPSIZE
|
配置hadoop守護進程
本節涉及在給定的配置文件中指定的重要參數:
etc/hadoop/core-site.xml
|
Parameter
|
Value
|
Notes
|
|
fs.defaultFS
|
NameNode URI
|
|
|
io.file.buffer.size
|
131072
|
讀寫序列文件緩存大小
|
-
etc/hadoop/hdfs-site.xml
-
配置NameNode:
|
Parameter
|
Value
|
Notes
|
|
dfs.namenode.name.dir
|
本地文件系統存儲着命令空間和操作日志
|
如果含有多個目錄,是冗余的【多個目錄以逗號隔開】
|
|
dfs.hosts / dfs.hosts.exclude
|
列出排除DataNodes.
|
如何需要使用這一功能來控制datanode的訪問
|
|
dfs.blocksize
|
268435456
|
大文件系統HDFS blocksize 256MB
|
|
dfs.namenode.handler.count
|
100
|
更多 NameNode server 線程來處理來自datanode的 RPCs請求
|
- 配置 DataNode:
|
Parameter
|
Value
|
Notes
|
|
dfs.datanode.data.dir
|
存儲blocks的本地路徑列表,用逗號隔開
|
這是一個逗號分隔的目錄列表, 數據將被存儲在所有被命名的目錄中,通常在不同的設備上。
|
-
etc/hadoop/yarn-site.xml
-
配置ResourceManager 和 NodeManager:
|
Parameter
|
Value
|
Notes
|
|
yarn.acl.enable
|
true / false
|
是否啟用ACLs,默認為false不啟用
|
|
yarn.admin.acl
|
Admin ACL
|
admin.acl設置YARN的集群管理員,. 值為*表示任何人都可以. 僅指定的可以訪問
|
|
yarn.log-aggregation-enable
|
false
|
配置啟用或則禁用日志
|
- 配置ResourceManager:
|
Parameter
|
Value
|
Notes
|
|
yarn.resourcemanager.address
|
ResourceManager host:port 為客戶端提交job.
|
如果配置host:port , 會覆蓋在yarn.resourcemanager.hostname 設置的 hostname
|
|
yarn.resourcemanager.scheduler.address
|
ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。
|
如果配置
host:port , 會覆蓋在yarn.resourcemanager.hostname 設置的 hostname
|
|
yarn.resourcemanager.resource-tracker.address
|
ResourceManager 對NodeManager暴露的地址.。NodeManager通過該地址向RM匯報心跳,領取任務等。
|
如果配置host:port , 會覆蓋在yarn.resourcemanager.hostname 設置的 hostname
|
|
yarn.resourcemanager.admin.address
|
ResourceManager 對管理員暴露的訪問地址。管理員通過該地址向RM發送管理命令等
|
如果配置host:port , 會覆蓋在yarn.resourcemanager.hostname 設置的 hostname
|
|
yarn.resourcemanager.webapp.address
|
ResourceManager web-ui host:port(ResourceManager訪問端口)
|
如果配置host:port , 會覆蓋在yarn.resourcemanager.hostname 設置的 hostname
|
|
yarn.resourcemanager.hostname
|
ResourceManager 客戶端.
|
host Single hostname that can be set in place of setting all yarn.resourcemanager*address resources. Results in default ports for ResourceManager components.
|
|
yarn.resourcemanager.scheduler.class
|
ResourceManager 調度類 .
|
CapacityScheduler (recommended), FairScheduler (also recommended), or FifoScheduler
|
|
yarn.scheduler.minimum-allocation-mb
|
單個container可申請的最小內存資源量。比如設置為1024,則運行MapRedce作業時,每個Task最少可申請1024MB內存
|
In MBs
|
|
yarn.scheduler.maximum-allocation-mb
|
單個container可申請的最大內存資源量。比如設置為3072,則運行MapRedce作業時,每個Task最多可申請3072MB內存。
|
In MBs
|
|
yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path
|
NodeManager黑白名單。
|
NodeManager黑白名單。如果發現若干個NodeManager存在問題,比如故障率很高,任務運行失敗率高,則可以將之加入黑名單中。注意,這兩個配置參數可以動態生效。(調用一個refresh命令即可)
默認值:“”
|
- 配置 NodeManager:
|
Parameter
|
Value
|
Notes
|
|
yarn.nodemanager.resource.memory-mb
|
NodeManager總的可用物理內存。
|
定義了資源總量的nodemanager可用運行containers
|
|
yarn.nodemanager.vmem-pmem-ratio
|
每使用1MB物理內存,最多可用的虛擬內存數。
|
每個任務的虛擬內存的使用可能會超過其物理內存的限制,這個比例。通過對nodemanager任務使用的虛擬內存總量可能超過物理內存使用的比率。
|
|
yarn.nodemanager.local-dirs
|
中間結果存放位置
|
這個參數通常會配置多個目錄,分攤磁盤IO負載。
|
|
yarn.nodemanager.log-dirs
|
日志存放路徑
|
這個參數通常會配置多個目錄,分攤磁盤IO負載。
|
|
yarn.nodemanager.log.retain-seconds
|
10800
|
NodeManager上日志最多存放時間(不啟用日志聚集功能時有效)。
|
|
yarn.nodemanager.remote-app-log-dir
|
/logs
|
當應用程序運行結束后,日志被轉移到的HDFS目錄(啟用日志聚集功能時有效)。
|
|
yarn.nodemanager.remote-app-log-dir-suffix
|
logs
|
遠程日志目錄子目錄名稱(啟用日志聚集功能時有效)。
|
|
yarn.nodemanager.aux-services
|
mapreduce_shuffle
|
NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,才可運行MapReduce程序.
|
- 配置 History Server (Needs to be moved elsewhere):
|
Parameter
|
Value
|
Notes
|
|
yarn.log-aggregation.retain-seconds
|
-1
|
參數解釋:在HDFS上聚集的日志最多保存多長時間。
默認值:-1
|
|
yarn.log-aggregation.retain-check-interval-seconds
|
-1
|
參數解釋:多長時間檢查一次日志,並將滿足條件的刪除,如果是0或者負數,則為上一個值的1/10。
默認值:-1
|
-
etc/hadoop/mapred-site.xml
-
配置MapReduce Applications:
mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
說明:這兩個參數指定用於MapReduce的兩個任務(Map and Reduce task)的內存大小,其值應該在RM中的最大最小container之間。如果沒有配置則通過如下簡單公式獲得:
max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers))
一般的reduce應該是map的2倍。注:這兩個值可以在應用啟動時通過參數改變;
mapreduce.map.java.opts
mapreduce.reduce.java.opts
說明:這兩個參主要是為需要運行JVM程序(java、scala等)准備的,通過這兩個設置可以向JVM中傳遞參數的,與內存有關的是,-Xmx,-Xms等選項。此數值大小,應該在AM中的map.mb和reduce.mb之間。
|
Parameter
|
Value
|
Notes
|
|
mapreduce.framework.name
|
yarn
|
執行框架設置為Hadoop YARN.
|
|
mapreduce.map.memory.mb
|
1536
|
maps資源限制
|
|
mapreduce.map.java.opts
|
-Xmx1024M
|
maps的child jvms heap-size
|
|
mapreduce.reduce.memory.mb
|
3072
|
reduces資源限制
|
|
mapreduce.reduce.java.opts
|
-Xmx2560M
|
reduces的child jvms heap-size
|
|
mapreduce.task.io.sort.mb
|
512
|
任務內部排序緩沖區大小
|
|
mapreduce.task.io.sort.factor
|
100
|
排序文件的時候一次同時最多可並流的個數,這里設置100。
|
|
mapreduce.reduce.shuffle.parallelcopies
|
50
|
reuduce shuffle階段並行傳輸數據的數量。
|
- 配置MapReduce JobHistory Server:
|
Parameter
|
Value
|
Notes
|
|
mapreduce.jobhistory.address
|
MapReduce JobHistory Server地址【host:port】
|
默認端口號 10020.
|
|
mapreduce.jobhistory.webapp.address
|
MapReduce JobHistory Server Web UI地址【 host:port】
|
默認端口號 19888.
|
|
mapreduce.jobhistory.intermediate-done-dir
|
/mr-history/tmp
|
MapReduce作業產生的日志存放位置。
|
|
mapreduce.jobhistory.done-dir
|
/mr-history/done
|
MR JobHistory Server管理的日志的存放位置。
|
相關內容
hadoop入門手冊1:hadoop【2.7.1】【多節點】集群配置【必知配置知識1】
hadoop入門手冊2:hadoop【2.7.1】【多節點】集群配置【必知配置知識2】
hadoop入門手冊3:Hadoop【2.7.1】初級入門之命令指南
hadoop入門手冊4:Hadoop【2.7.1】初級入門之命令:文件系統shell1
hadoop入門手冊5:Hadoop【2.7.1】初級入門之命令:文件系統shell2
hadoop2.X使用手冊1:通過web端口查看主節點、slave1節點及集群運行狀態
http://www.aboutyun.com/thread-7712-1-1.html
