這裡使用的版本是
2.6.0
,之前有些設定如設定
JAVA_HOME
或是
ssh等,在
Setting up a Single Node Cluster己經完成,若有撞牆的地方,可以回去參考一下。
在拜歐的
cluster中,會有四台機器,分別為:
- javakid01:做為master,會用它來跑NameNode和SecondaryNameNode
- jkserver01:做為slaves,會用它來跑DataNode
- jkserver02:做為slaves,會用它來跑DataNode
- jkserver03:做為slaves,會用它來跑DataNode
若要改
hostname
,你可以這樣做:
sudo vi /etc/hostname
上列四台機器中,先確認已經安裝好
Java和
Hadoop。
先對
javakid01(master),進行設定,在
/etc/hosts
中加入:
10.211.55.10 javakid01
10.211.55.7 jkserver01
10.211.55.13 jkserver02
10.211.55.14 jkserver03
再來編輯
$HADOOP_INSTALL/etc/hadoop/core-site.xml
加入下列設定:
fs.defaultFS
hdfs://javakid01:9000
接著編輯
$HADOOP_INSTALL/etc/hadoop/hdfs-site.xml
加入下列設定:
dfs.replication
3
dfs.namenode.name.dir
file:/opt/data/hadoop/hadoop_data/hdfs/namenode
上面設定好後,使用下列指令建立上列設定的目錄,建立前請確定有足夠的權限:
mkdir -p opt/data/hadoop/hadoop_data/hdfs/namenode
接著編輯
$HADOOP_INSTALL/etc/hadoop/mapred-site.xml
加入下列設定:
mapred.job.tracker
javakid01:54311
接著編輯
$HADOOP_INSTALL/etc/hadoop/yarn-site.xml
加入下列設定:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.resource-tracker.address
javakid01:8025
yarn.resourcemanager.scheduler.address
javakid01:8030
yarn.resourcemanager.address
javakid01:8050
最後,在
$HADOOP_INSTALL/etc/hadoop/slaves
中加入做為
DataNode的
hostname
jkserver01
jkserver02
jkserver03
下面要開始對做為
slaves的機器進行設定,其中
jkserver01
、
jkserver02
與
jkserver03
的設定幾乎是相同的。
一樣先在
/etc/hosts
中加入:
10.211.55.10 javakid01
10.211.55.7 jkserver01
10.211.55.13 jkserver02
10.211.55.14 jkserver03
請注意!上列的IP會因機器不同而有差異,這裡設定是以我的機器為例。
再來編輯
$HADOOP_INSTALL/etc/hadoop/core-site.xml
加入下列設定:
fs.defaultFS
hdfs://javakid01:9000
接著編輯
$HADOOP_INSTALL/etc/hadoop/hdfs-site.xml
加入下列設定:
dfs.replication
3
dfs.datanode.data.dir
file:/opt/data/hadoop/hadoop_data/hdfs/datanode
上面設定好後,使用下列指令建立上列設定的目錄,建立前請確定有足夠的權限:
mkdir -p opt/data/hadoop/hadoop_data/hdfs/datanode
接著編輯
$HADOOP_INSTALL/etc/hadoop/mapred-site.xml
加入下列設定:
mapred.job.tracker
javakid01:54311
接著編輯
$HADOOP_INSTALL/etc/hadoop/yarn-site.xml
加入下列設定:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.resource-tracker.address
javakid01:8025
yarn.resourcemanager.scheduler.address
javakid01:8030
yarn.resourcemanager.address
javakid01:8050
最後,也要將讓
DataNode知道
slaves的設定。在
$HADOOP_INSTALL/etc/hadoop/slaves
中加入做為
DataNode的
hostname
jkserver01
jkserver02
jkserver03
接下來,為了讓
master不用密碼就可登入
slaves的話,需要進行
SSH連線的設定。
回到
javakid01
這台機器,在終端機下執行:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然後執行:
ssh-copy-id -i ~/.ssh/id_rsa.pub javakid@jkserver01
完成後,由
javakid01
登入
jkserver01
,第一次登入會需要在
jkserver01
上的使用者密碼:
ssh jkserver01
對
jkserver02
與
jkserver03
進行相同設定,在
javakid01
執行:
ssh-copy-id -i ~/.ssh/id_rsa.pub javakid@jkserver02
登入
jkserver02
:
ssh jkserver02
接著執行:
ssh-copy-id -i ~/.ssh/id_rsa.pub javakid@jkserver03
登入
jkserver03
:
ssh jkserver03
全部設定完成後,在
javakid01
執行下列指令對
HDFS進行格式化:
hadoop namenode -format
接著啟動
HDFS Daemons:
$HADOOP_INSTALL/sbin/start-dfs.sh
成功啟動後,在
javakid01
執行
jps
指令:
jps
應該可以看到下列的結果:
27964 NameNode
28220 SecondaryNameNode
29695 Jps
再來若是到
jkserver01
、
jkserver02
或
jkserver03
任一台機器執行
jps
,應該可以看到下列結果:
2204 DataNode
2378 Jps
若在瀏覽器輸入
http://javakid01:50070
這個網址,應該在
Datanodes這個頁籤看到三台機器的資訊: