# 下载
[https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/](https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/)
# 解压
```shell
tar -zxvf hadoop-3.3.1.tar.gz -C /opt/software/
```
# 配置 jdk和 hadoop HOME
切换root用户之后,在 /etc/profile.d/ 目录下,创建一个文件: touch my_env.sh,编辑写入内容:
```shell
# JAVA_HOME
export JAVA_HOME=/opt/software/jdk1.8.0_311
export PATH=$PATH:$JAVA_HOME/bin
# Hadoop
export HADOOP_HOME=/opt/software/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
```
# 克隆hadoop102,hadoop103,hadoop104主机
克隆三台主机,ip分别是:192.168.80.102, 192.168.80.103, 192.168.80.104,记得修改主机名,本地域名解析配置,网络ip配置
> /etc/hostname
> /etc/sysconfig/network-scripts/ifcfg-ens33
> /etc/hosts
```shell
# vim /etc/hosts
192.168.80.102 hadoop102
192.168.80.103 hadoop103
192.168.80.104 hadoop104
# vim /etc/hostname
```
# 创建快捷同步文件脚本
可以先看一下 path 环境变量的值:`echo $PATH`,可以看到系统会自动读取 /home/xiaohua/bin 目录下的内容,因此我们把这个脚本文件直接创建在 /home/xiaohua/bin 目录下,这样就不需要手动添加环境变量了。
> 先进入到 /home/ 目录下,手动创建 bin 目录,编辑脚本:`vim xsync`
```shell
#!/bin/bash
# 1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
# 2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ============================== $host ==============================
# 3. 遍历所有目录,挨个发送
for file in $@
do
# 4. 判断文件是否存在
if [ -e $file ]
then
# 5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
# 6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
```
# 免密登录别的主机
在每台主机上执行:ssh-keygen -t rsa,三次回车即可。
然后在102主机上执行命令:ssh-copy-id hadoop103,ssh-copy-id hadoop104
其它主机也进行类似操作即可。
之后在102上尝试 ssh hadoop103, ssh hadoop104,看能否登录成功。
# 同步hadoop程序到另外两台主机
# 集群配置
### core-site.xml配置
```xml
<!--指定NameNode的地址,8020是hadoop集群内部通信的端口,实际公司项目中一般会配置为9000,9080端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!--指定hadoop数据的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop-3.3.1/data</value>
</property>
```
### hdfs-site.xml配置
```xml
<!--nn web端访问地址-->
<property>
<name>dfs:namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!--2nn web端访问地址-->
<property>
<name>dfs:namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
```
### mapred-site.xml配置
```xml
<!--指定 MapReduce 程序运行在 Yarn 上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
```
### yarn-site.xml配置
```xml
<!--指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce-shuffle</value>
</property>
<!--指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!--环境变量的继承-->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP,COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
```
### 配置works
整个集群上有几台节点(主机),就配置几个
```shell
# vim works
hadoop102
hadoop103
hadoop104
```
注意:别有任何空格,多余的行,然后再分发该文件到其他主机节点。
### 初始化
在你的namenode节点上,此处就是102主机上之命令:
hdfs namenode -format
# 同步102主机的配置文件到103,104
在102主机上,进入目录:cd /opt/software/hadoop-3.3.1/etc/,执行命令:xsync hadoop/ 即可。
... 文章参考:https://www.cnblogs.com/zhi-leaf/p/11496877.html
0 Comments