## 集群规划
> 集群的机器一个主节点,两个从节点。从节点是由主节点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