## 集群規劃
> 集群的機器一個主節點,兩個從節點。從節點是由主節點bizzbee復制過來的完整虛擬機,所以一模一樣。
### 1.以復制的兩個機器要修改主機名。
* 先清空主機名
~~~
hostnamectl set-hostname ""
hostnamectl set-hostname "" --static
hostnamectl set-hostname "" --pretty
~~~
* 然后設置主機名(分別為bizzbee2,bizzbee3)
~~~
hostnamectl set-hostname bizzbee2
~~~
* 重啟
### 創建ip和hostname映射,每臺機器都要
```cmd
#比如在bizzbee主節點上
192.168.31.249 bizzbee
192.168.31.25 bizzbee3
192.168.31.19 bizzbee2
192.168.31.249 localhost
# localhost映射到本機ip
#非常重要!不要設置本機名--127.0.0.1的映射
```
### 安裝ssh
* 因為原來的機器bizzbee裝過ssh,所以復制的兩臺也有。
* 考慮三臺全部刪掉家目錄的.ssh文件夾,重新裝。
* 刪掉之后每臺機器從新生成公鑰`ssh-keygen -t rsa`
*然后在主節點上將公鑰分發到兩個從節點和本機。
```
ssh-copy-id -i ~/.ssh/id_rsa.pub bizzbee
ssh-copy-id -i ~/.ssh/id_rsa.pub bizzbee2
ssh-copy-id -i ~/.ssh/id_rsa.pub bizzbee3
```
> 這里是為了主節點可以和從節點免密碼ssh通訊,從節點之間并沒有設置。
### 安裝JDK
* 由于從節點都是從主節點復制的,主節點已經在之前配置好了JDK。
### HADOOP安裝
* hadoop-env.sh這個配置文件里面要配置JAVA_HOME,同理,復制的機器都配置好了。
* core-site.xml 這個配置文件,三臺機器一樣。定義了主節點。
```
<property>
<name>fs.default.name</name>
<value>hdfs://bizzbee:8020</value>
</property>
```
* hdfs-site.xml 這個文件也是三臺機器一樣。定義了hdfs的目錄。
```
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bizzbee/work/hadooptmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/bizzbee/work/hadooptmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/bizzbee/work/hadooptmp/dfs/data</value>
</property>
```
* yarn-site.xml三臺機器一樣,定義了yarn的配置。
```
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bizzbee</value>
</property>
```
* mapred-site.xml三臺機器一樣
```
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
```
* slaves 寫六臺機器的主機名,一行寫一個。
* namenode格式化 `hadoop namenode -format`
### 啟動hdfs
* 如出現以下錯誤,刪除:`/home/bizzbee/work/hadooptmp/dfs/data/`下的current文件夾。
* 啟動時在主節點bizzbee啟動,會自動啟動從節點的DataNode。
```
2019-11-24 14:35:10,247 WARN org.apache.hadoop.hdfs.server.common.Storage: Failed to add storage directory [DISK]file:/home/bizzbee/work/hadooptmp/dfs/data/
java.io.IOException: Incompatible clusterIDs in /home/bizzbee/work/hadooptmp/dfs/data: namenode clusterID = CID-4f27c18c-191a-4718-af4c-478c37f4cea4; datanode clusterID = CID-af58c845-2b5c-4f1c-87a4-0da3e691d452
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:779)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:302)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:418)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:397)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:575)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1560)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1520)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:354)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:219)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:673)
at java.lang.Thread.run(Thread.java:748)
```
### 啟動YARN