Hadoop (3) CentOS Hadoop Fully-Distributed 的設定
1. Fully-Distributed:
今天要處理 Fully-Distributed 的設定,Pseudo-Distributed 和 Fully-Distributed 的設定差不多只是不用設定 slaves。
事前準備:
- 2~3 台 CentOS 主機或虛擬機 (最少是一個 master 和 一個 worker)。我這邊開虛擬機,user 分別是 master (master) 和 node1 (worker1)。
- 設定好 Hadoop 和 Java 的變數,最後我們會把 master 的 Hadoop 傳給每個 worker,所以 worker 可以先不裝 Hadoop。
2. ssh 設定:
Hadoop 是藉由 ssh 溝通,所以我們要先確保機器間 ssh 是可以溝通的。
在 master 上產生 key。
$ ssh-keygen -t rsa -P ""
看一下 key 有沒有出來
$ cd ~/.ssh $ ls
這時應該會看到。
id_rsa id_rsa.pub
把 public key 加入授權。
$ cat id_rsa.pub >> authorized_keys
變更權限:
$ sudo chmod 600 authorized_keys $ sudo chmod 700 -R ../.ssh
ssh 自己看看,應該不用輸入密碼了。
$ ssh master@127.0.0.1
把 master 的 authorized_keys,傳給 worker1。
$ scp authorized_keys node1@ip:~/.ssh
把 worker1 的 authorized_keys,傳給 master。
$ cat id_rsa.pub >> authorized_keys $ scp authorized_keys master@ip:~/.ssh
測試一下是不是能夠不用密碼互連。
$ ssh master@ip $ ssh node1@ip
用 ifconfig 可以查詢 ip。
3. 設定 hosts 和 hostname:
修改機器顯示的名字。
$ sudo vim /etc/hostname
我把機器的名字改這樣,其實這只是方便我們看而已,沒啥實質用處。
master or work[0-9]+
追加映射規則。
$ sudo vim /etc/hosts
這個規則跟上面的名聲無關。
192.168.ooo.xxx master 192.168.ooo.xxx worker1
這時 master 和 worker1 應該可以相互溝通了。
$ ssh master@master $ ssh node1@worker1
如果之後 slave 的 datanode 有起來,但是在 webgui 裡 slave 不是 live node 的話,就是 ip 的對應問題。 這時候要把 localhost 對應的 hostname 改成非 local 的 ip 對應,例如:
127.0.0.1 localhost # 127.0.0.1 master 192.168.0.xxx masrer
3. 設定 Fully-Distributed Hadoop:
我們需要修改 $HADOOP_HOME/etc/hadoop 的五個配置文件: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
修改 slaves。
$ vim slaves
添加 workers。
worker1
修改 core-site.xml。
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop-2.7.6/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
修改 hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop-2.7.6/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop-2.7.6/tmp/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
修改 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
修改 yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
打包傳給 worker
$ cd /usr/local $ tar -zcf ~/Downloads/hadoop.tar.gz hadoop-2.7.6/ $ ~/Downloads $ scp hadoop.tar.gz node1@worker1:~/Downloads
$ cd ~/Dowloads $ tar -zxvf hadoop.tar.gz $ sudo mv hadoop-2.7.6 /usr/local
4. 啟動 hadoop
格式化 worker。
$ hadoop namenode -format
啟動分散式資料系統
$ start-dfs.sh
分別在 master 和 node1 上輸入 jps。
$ jps # master 6785 SecondaryNameNode 6613 NameNode 10169 Jps $ jps # node1 7425 Jps 4918 DataNode
回到 maseter,開啟 127.0.0.1:50070
$ start-yarn.sh
$ jps # master 6785 SecondaryNameNode 6613 NameNode 7230 ResourceManager 10334 Jps $ jps # node1 7425 Jps 4918 DataNode 5117 NodeManager
如果沒有 WebUI 的話,可以試試把防火牆關掉。
$ service firewalld stop
留言
張貼留言