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
加入下列設定:
最後,也要將讓DataNode知道slaves的設定。在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接下來,為了讓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這個頁籤看到三台機器的資訊: