Hadoop-2.7.2分散式安裝手冊
目錄
1. 前言
當前版本的Hadoop已解決了hdfs、yarn和hbase等單點,並支援自動的主備切換。
本文的目的是為當前最新版本的Hadoop 2.7.2提供最為詳細的安裝說明,以幫助減少安裝過程中遇到的困難,並對一些錯誤原因進行說明,
2. 特性介紹
版本 |
發版本日期 |
新特性 |
2.7.2 |
2016/1/25 |
|
2.7.1 |
2015/7/6 |
|
2.7.0 |
2015/4/21 |
1) 不再支援JDK6,須JDK 7+ 2) 支援檔案擷取(truncate) 3) 支援為每種儲存型別設定配額 4) 支援檔案變長塊(之前一直為固定塊大小,預設為64M) 5) 支援Windows Azure Storage 6) YARN認證可插拔 7) 自動共享,全域性快取YARN本地化資源(測試階段) 8) 限制一個作業執行的Map/Reduce任務 9) 加快大量輸出檔案時大型作業的FileOutputCommitter速度 |
2.6.4 |
2016/2/11 |
|
2.6.3 |
2015/12/17 |
|
2.6.2 |
2015/10/28 |
|
2.6.1 |
2015/9/23 |
|
2.6.0 |
2014/11/18 |
1) YARN支援長時間執行的服務 2) YARN支援升級回滾 3) YARN支援應用執行在Docker容器中 |
2.5.2 |
2014/11/19 |
|
2.5.1 |
2014/9/12 |
|
2.5.0 |
2014/8/11 |
|
2.4.1 |
2014/6/30 |
|
2.4.0 |
2014/4/7 |
1) HDFS升級回滾 2) HDFS支援完整的https 3) YARN ResourceManager支援自動故障切換 |
2.2.0 |
2013/10/15 |
1) HDFS Federation 2) HDFS Snapshots |
2.1.0-beta |
2013/8/25 |
1) HDFS快照 2) 支援Windows |
2.0.3-alpha |
2013/2/14 |
1) 基於QJM的NameNode HA |
2.0.0-alpha |
2012/5/23 |
1) 人工切換的NameNode HA 2) HDFS Federation |
1.0.0 |
2011/12/27 |
|
0.23.11 |
2014/6/27 |
|
0.23.10 |
2013/12/11 |
|
0.22.0 |
2011/12/10 |
|
0.23.0 |
2011/11/17 |
|
0.20.205.0 |
2011/10/17 |
|
0.20.204.0 |
2011/9/5 |
|
0.20.203.0 |
2011/5/11 |
|
0.21.0 |
2010/8/23 |
|
0.20.2 |
2010/2/26 |
|
0.20.1 |
2009/9/14 |
|
0.19.2 |
2009/7/23 |
|
0.20.0 |
2009/4/22 |
|
0.19.1 |
2009/2/24 |
|
0.18.3 |
2009/1/29 |
|
0.19.0 |
2008/11/21 |
|
0.18.2 |
2008/11/3 |
|
0.18.1 |
2008/9/17 |
|
0.18.0 |
2008/8/22 |
|
0.17.2 |
2008/8/19 |
|
0.17.1 |
2008/6/23 |
|
0.17.0 |
2008/5/20 |
|
0.16.4 |
2008/5/5 |
|
0.16.3 |
2008/4/16 |
|
0.16.2 |
2008/4/2 |
|
0.16.1 |
2008/3/13 |
|
0.16.0 |
2008/2/7 |
|
0.15.3 |
2008/1/18 |
|
0.15.2 |
2008/1/2 |
|
0.15.1 |
2007/11/27 |
|
0.14.4 |
2007/11/26 |
|
0.15.0 |
2007/10/29 |
|
0.14.3 |
2007/10/19 |
|
0.14.1 |
2007/9/4 |
3. 部署
3.1. 機器列表
共5臺機器(zookeeper部署在這5臺機器上),部署如下表所示:
NameNode |
JournalNode |
DataNode |
ZooKeeper |
10.148.137.143 10.148.137.204 |
10.148.137.143 10.148.137.204 10.148.138.11 |
10.148.138.11 10.148.140.14 10.148.140.15 |
10.148.137.143 10.148.137.204 10.148.138.11 10.148.140.14 10.148.140.15 |
3.2. 主機名
機器IP |
對應的主機名 |
10.148.137.143 |
hadoop-137-143 |
10.148.137.204 |
hadoop-137-204 |
10.148.138.11 |
hadoop-138-11 |
10.148.140.14 |
hadoop-140-14 |
10.148.140.15 |
hadoop-140-15 |
注意主機名不能有下劃線,否則啟動時,SecondaryNameNode節點會報如下所示的錯誤(取自hadoop-hadoop-secondarynamenode-VM_39_166_sles10_64.out檔案):
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /data/hadoop/hadoop-2.7.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. Exception in thread "main" java.lang.IllegalArgumentException: The value of property bind.address must not be null at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88) at org.apache.hadoop.conf.Configuration.set(Configuration.java:971) at org.apache.hadoop.conf.Configuration.set(Configuration.java:953) at org.apache.hadoop.http.HttpServer2.initializeWebServer(HttpServer2.java:391) at org.apache.hadoop.http.HttpServer2.<init>(HttpServer2.java:344) at org.apache.hadoop.http.HttpServer2.<init>(HttpServer2.java:104) at org.apache.hadoop.http.HttpServer2$Builder.build(HttpServer2.java:292) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:264) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:192) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:651) |
3.2.1. 臨時修改主機名
命令hostname不但可以檢視主機名,還可以用它來修改主機名,格式為:hostname 新主機名。
在修改之前172.25.40.171對應的主機名為VM-40-171-sles10-64,而172.25.39.166對應的主機名為VM_39_166_sles10_64。兩者的主機名均帶有下劃線,因此需要修改。為求簡單,僅將原下劃線改成橫線:
hostname VM-40-171-sles10-64
hostname VM-39-166-sles10-64
經過上述修改後,還不夠,類似於修改環境變數,還需要通過修改系統配置檔案做永久修改。
3.2.2. 永久修改主機名
不同的Linux發行版本,對應的系統配置檔案可能不同,SuSE 10.1是/etc/HOSTNAME:
# cat /etc/HOSTNAME VM_39_166_sles10_64 |
將檔案中的“VM_39_166_sles10_64”,改成“VM-39-166-sles10-64”。有些Linux發行版本對應的可能是/etc/hostname檔案,有些可能是/etc/sysconfig/network檔案。
不但所在檔案不同,修改的方法可能也不一樣,比如有些是名字對形式,如/etc/sysconfig/network格式為:HOSTNAME=主機名。
修改之後,需要重啟網絡卡,以使修改生效,執行命令:/etc/rc.d/boot.localnet start(不同系統命令會有差異,這是SuSE上的方法),再次使用hostname檢視,會發現主機名變了。
直接重啟系統,也可以使修改生效。
注意修改主機名後,需要重新驗證ssh免密碼登入,方法為:ssh 使用者名稱@新的主機名。
可以通過以下多處檢視機器名:
1) hostname命令(也可以用來修改主機名,但當次僅當次會話有效)
2) cat /proc/sys/kernel/hostname
3) cat /etc/hostname或cat /etc/sysconfig/network(永久性的修改,需要重啟)
4) sysctl kernel.hostname(也可以用來修改主機名,但僅重啟之前有效)
3.3. 免密碼登入範圍
要求能通過免登入包括使用IP和主機名都能免密碼登入:
1) NameNode能免密碼登入所有的DataNode
2) 各NameNode能免密碼登入自己
3) 各NameNode間能免密碼互登入
4) DataNode能免密碼登入自己
5) DataNode不需要配置免密碼登入NameNode和其它DataNode。
注:免密碼登入不是必須的,如果不使用hadoop-daemons.sh等需要ssh、scp的指令碼。
4. 約定
4.1. 安裝目錄約定
為便於講解,本文約定Hadoop、JDK安裝目錄如下:
安裝目錄 |
版本 |
說明 |
|
JDK |
/data/jdk |
1.7.0 |
ln -s /data/jdk1.7.0_55 /data/jdk |
Hadoop |
/data/hadoop/hadoop |
2.7.2 |
ln -s /data/hadoop/hadoop-2.7.2 /data/hadoop/hadoop |
在實際安裝部署時,可以根據實際進行修改。
4.2.
服務埠約定
埠 |
作用 |
9000 |
fs.defaultFS,如:hdfs://172.25.40.171:9000 |
9001 |
dfs.namenode.rpc-address,DataNode會連線這個埠 |
50070 |
dfs.namenode.http-address |
50470 |
dfs.namenode.https-address |
50100 |
dfs.namenode.backup.address |
50105 |
dfs.namenode.backup.http-address |
50090 |
dfs.namenode.secondary.http-address,如:172.25.39.166:50090 |
50091 |
dfs.namenode.secondary.https-address,如:172.25.39.166:50091 |
50020 |
dfs.datanode.ipc.address |
50075 |
dfs.datanode.http.address |
50475 |
dfs.datanode.https.address |
50010 |
dfs.datanode.address,DataNode的資料傳輸埠 |
8480 |
dfs.journalnode.rpc-address |
8481 |
dfs.journalnode.https-address |
8032 |
yarn.resourcemanager.address |
8088 |
yarn.resourcemanager.webapp.address,YARN的http埠 |
8090 |
yarn.resourcemanager.webapp.https.address |
8030 |
yarn.resourcemanager.scheduler.address |
8031 |
yarn.resourcemanager.resource-tracker.address |
8033 |
yarn.resourcemanager.admin.address |
8042 |
yarn.nodemanager.webapp.address |
8040 |
yarn.nodemanager.localizer.address |
8188 |
yarn.timeline-service.webapp.address |
10020 |
mapreduce.jobhistory.address |
19888 |
mapreduce.jobhistory.webapp.address |
2888 |
ZooKeeper,如果是Leader,用來監聽Follower的連線 |
3888 |
ZooKeeper,用於Leader選舉 |
2181 |
ZooKeeper,用來監聽客戶端的連線 |
16010 |
hbase.master.info.port,HMaster的http埠 |
16000 |
hbase.master.port,HMaster的RPC埠 |
60030 |
hbase.regionserver.info.port,HRegionServer的http埠 |
60020 |
hbase.regionserver.port,HRegionServer的RPC埠 |
8080 |
hbase.rest.port,HBase REST server的埠 |
10000 |
hive.server2.thrift.port |
9083 |
hive.metastore.uris |
4.3. 各模組RPC和HTTP埠
模組 |
RPC埠 |
HTTP埠 |
HTTPS埠 |
HDFS JournalNode |
8485 |
8480 |
8481 |
HDFS NameNode |
8020 |
50070 |
|
HDFS DataNode |
50020 |
50075 |
|
HDFS SecondaryNameNode |
50090 |
50091 |
|
Yarn Resource Manager |
8032 |
8088 |
8090 |
Yarn Node Manager |
8040 |
8042 |
|
Yarn SharedCache |
8788 |
||
HMaster |
16010 |
||
HRegionServer |
16030 |
||
HBase thrift |
9090 |
9095 |
|
HBase rest |
8085 |
注:DataNode通過埠50010傳輸資料。
5. 工作詳單
為執行Hadoop(HDFS、YARN和MapReduce)需要完成的工作詳單:
Hadoop是Java語言開發的,所以需要。 |
|
NameNode控制SecondaryNameNode和DataNode使用了ssh和scp命令,需要無密碼執行。 |
|
這裡指的是HDFS、YARN和MapReduce,不包含HBase、Hive等的安裝。 |
6. JDK安裝
本文安裝的JDK 1.7.0版本。
6.1. 下載安裝包
JDK最新二進位制安裝包下載網址:
JDK1.7二進位制安裝包下載網址:
本文下載的是64位Linux版本的JDK1.7:jdk-7u55-linux-x64.gz。請不要安裝JDK1.8版本,JDK1.8和Hadoop 2.7.2不匹配,編譯Hadoop 2.7.2原始碼時會報很多錯誤。
6.2. 安裝步驟
JDK的安裝非常簡單,將jdk-7u55-linux-x64.gz上傳到Linux,然後解壓,接著配置好環境變數即可(本文jdk-7u55-linux-x64.gz被上傳在/data目錄下):
1) 進入/data目錄
2) 解壓安裝包:tar xzf jdk-7u55-linux-x64.gz,解壓後會在生成目錄/data/jdk1.7.0_55
3) 建立軟體連結:ln -s /data/jdk1.7.0_55 /data/jdk
4) 修改/etc/profile或使用者目錄下的profile,或同等檔案,配置如下所示環境變數:
export JAVA_HOME=/data/jdk export CLASSPATH=$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH |
完成這項操作之後,需要重新登入,或source一下profile檔案,以便環境變數生效,當然也可以手工執行一下,以即時生效。如果還不放心,可以執行下java或javac,看看命令是否可執行。如果在安裝JDK之前,已經可執行了,則表示不用安裝JDK。
以下針對的是ssh2,而不是ssh,也不包括OpenSSH。配置分兩部分:一是對登入機的配置,二是對被登入機的配置,其中登入機為客戶端,被登入機為服務端,也就是解決客戶端到服務端的無密碼登入問題。下述涉及到的命令,可以直接拷貝到Linux終端上執行,已全部驗證通過,操作環境為SuSE 10.1。
第一步,修改所有被登入機上的sshd配置檔案/etc/ssh2/sshd2_config:
1) (如果不以root使用者執行hadoop,則跳過這一步)將PermitRootLogin值設定為yes,也就是取掉前面的註釋號#
2) 將AllowedAuthentications值設定為publickey,password,也就是取掉前面的註釋號#
3) 重啟sshd服務:service ssh2 restart
第二步,在所有登入機上,執行以下步驟:
1) 進入到.ssh2目錄:cd ~/.ssh2
2) ssh-keygen2 -t dsa -P''
-P表示密碼,-P''就表示空密碼,也可以不用-P引數,但這樣就要敲三次回車鍵,用-P''就一次回車。
成功之後,會在使用者的主目錄下生成私鑰檔案id_dsa_2048_a,和公鑰檔案id_dsa_2048_a.pub。
3) 生成identification檔案:echo "IdKey id_dsa_2048_a" >> identification,請注意IdKey後面有一個空格,確保identification檔案內容如下:
# cat identification IdKey id_dsa_2048_a |
4) 將檔案id_dsa_2048_a.pub,上傳到所有被登入機的~/.ssh2目錄:scp id_dsa_2048_a.pub [email protected]:/root/.ssh2,這裡假設192.168.0.1為其中一個被登入機的IP。在執行scp之前,請確保192.168.0.1上有/root/.ssh2這個目錄,而/root/需要修改為root使用者的實際HOME目錄,通常環境變數$HOME為使用者主目錄,~也表示使用者主目錄,不帶任何引數的cd命令也會直接切換到使用者主目錄。
第三步,在所有被登入機上,執行以下步驟:
1) 進入到.ssh2目錄:cd ~/.ssh2
2) 生成authorization檔案:echo "Key id_dsa_2048_a.pub" >> authorization,請注意Key後面有一個空格,確保authorization檔案內容如下:
# cat authorization Key id_dsa_2048_a.pub |
完成上述工作之後,從登入機到被登入機的ssh登入就不需要密碼了。如果沒有配置好免密碼登入,在啟動時會遇到如下錯誤:
Starting namenodes on [172.25.40.171] 172.25.40.171: Host key not found from database. 172.25.40.171: Key fingerprint: 172.25.40.171: xofiz-zilip-tokar-rupyb-tufer-tahyc-sibah-kyvuf-palik-hazyt-duxux 172.25.40.171: You can get a public key's fingerprint by running 172.25.40.171: % ssh-keygen -F publickey.pub 172.25.40.171: on the keyfile. 172.25.40.171: warning: tcgetattr failed in ssh_rl_set_tty_modes_for_fd: fd 1: Invalid argument |
或下列這樣的錯誤:
Starting namenodes on [172.25.40.171] 172.25.40.171: hadoop's password: |
建議生成的私鑰和公鑰檔名都帶上自己的IP,否則會有些混亂。
按照中免密碼登入範圍的說明,配置好所有的免密碼登入。更多關於免密碼登入說明,請瀏覽技術部落格:
本部分僅包括HDFS、MapReduce和Yarn的安裝,不包括HBase、Hive等的安裝。
8.1. 下載安裝包
官方的安裝說明請瀏覽Cluster Setup:
8.2. 安裝和環境變數配置
1) 將Hadoop安裝包hadoop-2.7.2.tar.gz上傳到/data/hadoop目錄下
2) 進入/data/hadoop目錄
3) 在/data/hadoop目錄下,解壓安裝包hadoop-2.7.2.tar.gz:tar xzf hadoop-2.7.2.tar.gz
4) 建立軟體連結:ln -s /data/hadoop/hadoop-2.7.2 /data/hadoop/hadoop
5) 修改使用者主目錄下的檔案.profile(當然也可以是/etc/profile或其它同等效果的檔案),設定Hadoop環境變數:
export JAVA_HOME=/data/jdk export HADOOP_HOME=/data/hadoop/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$HADOOP_HOME/bin:$PATH |
需要重新登入以生效,或者在終端上執行:export HADOOP_HOME=/data/hadoop/hadoop也可以即時生效。
8.3. 修改hadoop-env.sh
修改所有節點上的$HADOOP_HOME/etc/hadoop/hadoop-env.sh檔案,在靠近檔案頭部分加入:export JAVA_HOME=/data/jdk
特別說明一下:雖然在/etc/profile已經添加了JAVA_HOME,但仍然得修改所有節點上的hadoop-env.sh,否則啟動時,報如下所示的錯誤:
10.12.154.79: Error: JAVA_HOME is not set and could not be found. 10.12.154.77: Error: JAVA_HOME is not set and could not be found. 10.12.154.78: Error: JAVA_HOME is not set and could not be found. 10.12.154.78: Error: JAVA_HOME is not set and could not be found. 10.12.154.77: Error: JAVA_HOME is not set and could not be found. 10.12.154.79: Error: JAVA_HOME is not set and could not be found. |
除JAVA_HOME之外,再新增:
export HADOOP_HOME=/data/hadoop/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
同時,建議將下列新增到/etc/profile或~/.profile中:
export JAVA_HOME=/data/jdk
export HADOOP_HOME=/data/hadoop/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
8.4. 修改/etc/hosts
為省去不必要的麻煩,建議在所有節點的/etc/hosts檔案,都做如下所配置:
10.148.137.143 hadoop-137-143 # NameNode 10.148.137.204 hadoop-137-204 # NameNode 10.148.138.11 hadoop-138-11 # DataNode 10.148.140.14 hadoop-140-14 # DataNode 10.148.140.15 hadoop-140-15 # DataNode |
注意不要為一個IP配置多個不同主機名,否則HTTP頁面可能無法正常運作。
主機名,如VM-39-166-sles10-64,可通過hostname命令取得。由於都配置了主機名,在啟動HDFS或其它之前,需要確保針對主機名進行過ssh,否則啟動時,會遇到如下所示的錯誤:
VM-39-166-sles10-64: Host key not found from database. VM-39-166-sles10-64: Key fingerprint: VM-39-166-sles10-64: xofiz-zilip-tokar-rupyb-tufer-tahyc-sibah-kyvuf-palik-hazyt-duxux VM-39-166-sles10-64: You can get a public key's fingerprint by running VM-39-166-sles10-64: % ssh-keygen -F publickey.pub VM-39-166-sles10-64: on the keyfile. VM-39-166-sles10-64: warning: tcgetattr failed in ssh_rl_set_tty_modes_for_fd: fd 1: Invalid argument |
上述錯誤表示沒有以主機名ssh過一次VM-39-166-sles10-64。按下列方法修復錯誤:
ssh [email protected]VM-39-166-sles10-64 Host key not found from database. Key fingerprint: xofiz-zilip-tokar-rupyb-tufer-tahyc-sibah-kyvuf-palik-hazyt-duxux You can get a public key's fingerprint by running % ssh-keygen -F publickey.pub on the keyfile. Are you sure you want to continue connecting (yes/no)? yes Host key saved to /data/hadoop/.ssh2/hostkeys/key_36000_137vm_13739_137166_137sles10_13764.pub host key for VM-39-166-sles10-64, accepted by hadoop Thu Apr 17 2014 12:44:32 +0800 Authentication successful. Last login: Thu Apr 17 2014 09:24:54 +0800 from 10.32.73.69 Welcome to SuSE Linux 10 SP2 64Bit Nov 10,2010 by DIS Version v2.6.20101110 No mail. |
8.5. 修改slaves
slaves即為HDFS的DataNode節點。當使用指令碼start-dfs.sh來啟動hdfs時,會使用到這個檔案,以無密碼登入方式到各slaves上啟動DataNode。
修改主NameNode和備NameNode上的$HADOOP_HOME/etc/hadoop/slaves檔案,將slaves的節點IP(也可以是相應的主機名)一個個加進去,一行一個IP,如下所示:
> cat slaves 10.148.138.11 10.148.140.14 10.148.140.15 |
8.6. 準備好各配置檔案
配置檔案放在$HADOOP_HOME/etc/hadoop目錄下,對於Hadoop 2.3.0、Hadoop 2.7.2和Hadoop 2.7.2版本,該目錄下的core-site.xml、yarn-site.xml、hdfs-site.xml和mapred-site.xml都是空的。如果不配置好就啟動,如執行start-dfs.sh,則會遇到各種錯誤。
可從$HADOOP_HOME/share/hadoop目錄下拷貝一份到/etc/hadoop目錄,然後在此基礎上進行修改(以下內容可以直接拷貝執行,2.3.0版本中各default.xml檔案路徑不同於2.7.2版本):
# 進入$HADOOP_HOME目錄 cd $HADOOP_HOME cp ./share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml ./etc/hadoop/core-site.xml cp ./share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml ./etc/hadoop/hdfs-site.xml cp ./share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xml ./etc/hadoop/yarn-site.xml cp ./share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml ./etc/hadoop/mapred-site.xml |
接下來,需要對預設的core-site.xml、yarn-site.xml、hdfs-site.xml和mapred-site.xml進行適當的修改,否則仍然無法啟動成功。
QJM的配置參照的官方文件:
8.7. 修改hdfs-site.xml
對hdfs-site.xml檔案的修改,涉及下表中的屬性:
屬性名 |
屬性值 |
說明 |
dfs.nameservices |
mycluster |
|
dfs.ha.namenodes.mycluster |
nn1,nn2 |
同一nameservice下,只能配置一或兩個,也就是不能有nn3了 |
dfs.namenode.rpc-address.mycluster.nn1 |
hadoop-137-143:8020 |
|
dfs.namenode.rpc-address.mycluster.nn2 |
hadoop-137-204:8020 |
|
dfs.namenode.http-address.mycluster.nn1 |
hadoop-137-143:50070 |
|
dfs.namenode.http-address.mycluster.nn2 |
hadoop-137-204:50070 |
|
dfs.namenode.shared.edits.dir |
qjournal://hadoop-137-143:8485;hadoop-137-204:8485;hadoop-138-11:8485/mycluster |
至少三臺Quorum Journal節點配置 |
dfs.client.failover.proxy.provider.mycluster |
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider |
客戶端通過它來找主NameNode |
dfs.ha.fencing.methods |
sshfence 如果配置為sshfence,當主NameNode異常時,使用ssh登入到主NameNode,然後使用fuser將主NameNode殺死,因此需要確保所有NameNode上可以使用fuser。 |
用來保證同一時刻只有一個主NameNode,以防止腦裂。可帶使用者名稱和埠引數,格式示例:sshfence([[username][:port]]);值還可以為shell指令碼,格式示例: shell(/path/to/my/script.sh arg1 arg2 ...),如: shell(/bin/true) 如果sshd不是預設的22埠時,就需要指定。 |
dfs.ha.fencing.ssh.private-key-files |
/data/hadoop/.ssh2/id_dsa_2048_a |
指定私鑰,如果是OpenSSL,則值為/data/hadoop/.ssh/id_rsa |
dfs.ha.fencing.ssh.connect-timeout |
30000 |
可選的配置 |
dfs.journalnode.edits.dir |
/data/hadoop/hadoop/journal |
JournalNode儲存其本地狀態的位置,在JouralNode機器上的絕對路徑,JNs的edits和其他本地狀態將被儲存在此處 |
dfs.datanode.data.dir |
/data/hadoop/hadoop/data |
|
dfs.namenode.name.dir |
NameNode元資料存放目錄,預設值為file://${hadoop.tmp.dir}/dfs/name,也就是在臨時目錄下,可以考慮放到資料目錄下 |
|
dfs.namenode.checkpoint.dir |
預設值為file://${hadoop.tmp.dir}/dfs/namesecondary,但如果沒有啟用SecondaryNameNode,則不需要 |
|
dfs.ha.automatic-failover.enabled |
true |
自動主備切換 |
dfs.datanode.max.xcievers |
4096 |
可選修改,類似於linux的最大可開啟的檔案個數,預設為256,建議設定成大一點。同時,需要保證系統可開啟的檔案個數足夠(可通過ulimit命令檢視)。該錯誤會導致hbase報“notservingregionexception”。 |
dfs.journalnode.rpc-address |
0.0.0.0:8485 |
配置JournalNode的RPC埠號,預設為0.0.0.0:8485,可以不用修改 |
詳細配置可參考:
8.8. 修改core-site.xml
對core-site.