本篇源自Hadoop官網,先將中文翻譯如下。
目標
本文章主要是描述如何安裝和配置幾個節點的Hadoop clusters,甚至於數以千計的節點數。為了了解詳細的安裝步驟,需要先了解如何安裝在單台機器上。
本文檔不包含高級的設置點,比如:安全性或者高可用性。
准備
- 需要安裝Java環境
- 從Apache網站下載一個穩定的Hadoop安裝鏡像
安裝
搭建一個Hadoop集群需要將軟件安裝到集群中的所有機器中,或者一個適合當前操作系統集成的系統。這樣做的目標就是區分不同的硬件安裝不同的功能。
典型的安裝是在一個集群中一個機器作為NameNode節點,其它機器作為ResourceManager.當然,這台機器的角色就是Masters.其它的服務(比如Web App Proxy Server 和MapReduce Job History server)一般運行在別的硬件或者共享的信息架構上,依賴於系統的負載。
在集群中剩下的機器就是DataNode和NodeManager.他們的角色是slaves.
非安全模式下的Hadoop配置
Hadoop的Java配置項被分為兩部分重要的配置文件:
- 只讀的默認配置文件:core_default.xml,hdfs-default.xm,yarn-default.xml 和mapred-default.xml.
- 特殊定義的配置文件:etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml,etc/hadoop/yarn-site.xml和etc/hadoop/mapred-site.xml.
另外,需要有權限設置Hadoop scripts腳本在分布式集群中的各個目錄文件 bin/directory,需要設置的文件為 etc/hadoop-env.sh 和 etc/hadoop/yarn-env.sh.
為了能夠保證Hadoop守護進程很好的運行,需要配置hadoop集群所需要的環境。
HDFS守護進程是NameNode,SecondaryNameNode和DataNode,YARN守護進程是ResourceManager,NodeManager和WebAppProxy,如果MapReduce被使用,那么MapReduce 的任務 History Server將會被運行,如果是大集群的安裝,他們將被運行在不同的主機上。
Hadoop守護進程環境配置
管理員需要利用etc/hadoop/hadoop-env.sh 和可選的 etc/hadoop/mapred-env.sh 和etc/hadoop/yarn-env.sh 腳本去配置Hadoop各個守護進程的環境。
之少,需要配置的是JAVA_HOME確保在每一個遠程節點上都是正確的。
管理員需要配置一下的獨自守護進程利用下面的表格:
守護進程 | 參數名稱 |
---|---|
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:
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"
來看一下 etc/hadoop/hadoop-env.sh的其它一些例子。
其它的一些有用的可配置參數,可以自定義如下:
- HADOOP_PID_DIR 這個是守護進程ID文件存放的目錄路徑
- HADOOP_LOG_DIR 這個是守護進程日志存儲的目錄路徑,日志會被自動創建如果沒有的話
- HADOOP_HEAPSIZE/YARN_HEAPSIZE 最大的堆使用的內存值,單位為:MB,如果這個參數被設置成1000,那就意味着堆將使用1000MB的內存值,這個參數主要用於守護進程內存值的大小設置。默認值是1000,可以為每個守護進程分配不同大小的值。
在很多場景中,必須設置這個HADOOP_PID_DIR和HADOOP_LOG_DIR這兩個目錄,以方便用戶可以輸出日志在運行守護進程的時候。
守護進程 | 參數值 |
---|---|
ResourceManager | YARN_RESOURCEMANAGER_HEAPSIZE |
NodeManager | YARN_NODEMANAGER_HEAPSIZE |
WebAppProxy | YARN_PROXYSERVER_HEAPSIZE |
Map Reduce Job History Server | HADOOP_JOB_HISTORYSERVER_HEAPSIZE |
Hadoop守護環境配置
在Hadoop壞境中有一個非常重要的參數文件:
- etc/hadoop/core-site.xml
參數名稱 | 值 | 提示 |
---|---|---|
fs.defaultFS | NameNode URI | hdfs://host:port/ |
io.file.buffer.size | 131072 | Size of read/write buffer used in SequenceFiles. |
- etc/hadoop/hdfs-site.xml
- 配置守護進程NameNode:
參數名稱 | 值 | 提示 |
---|---|---|
dfs.namenode.name.dir | 文件路徑,用戶存儲NameNode進程的命名空間和事務日志 | 如果這里用逗號分割的列表,將會復制分發到各個目錄以做為冗余數據進行備份 |
dfs.hosts / dfs.hosts.exclude | DataNodes的節點列表(包含或排除) | 如果需要,用戶通過設置這個列表來控制DataNodes的數量。 |
dfs.blocksize | 268435456 | HDFS 快的大小為了存儲大文件系統. |
dfs.namenode.handler.count | 100 | 對於大量DataNodes的節點數開啟的多線程個數. |
- Configuration for DataNode:
參數名稱 | 值 | 提示 |
---|---|---|
dfs.datanode.data.dir | 存儲數據塊的本地目錄系統,一般以路徑列表存放 | 如果這里是以逗號分隔的目錄列表,那么這個數據將被存儲在所有的目錄下,一般是不同的磁盤驅動 |