# 大数据平台中 Hadoop 部署
*平台部署知识*
大数据 HDFS / yarn 平台内常用的一些软件的配置,以及部署文档
## 目录
[TOC]
## 前期准备
### 使用终端软件链接 linux 主机
假设在这里我们的 Linux 主机IP是 192.168.0.141,那么就可以直接在终端连接软件中输入 192.168.0.141 IP 并键入用户名和密码就可以登录进去啦。
*PS:如果没有登录成功,可能的原因就是你的路由IP格式不是`192.168.0.x`,例如你的路由是 `192.168.1.1` ,而你的 主机IP 是 `192.168.0.x` 这样的格式,且掩码是24 肯定是访问不通的,因为不你和Linux服务器不属于同一个子网,你可以将你的Linux服务器IP修改为 `192.168.1.x` 而不是 0.x,这里是网络IP相关的知识,确保你的客户端机器所处的局域网内包含Linux主机即可!再简单说就是确保你的客户端机器能够连接到Linux服务器即可!*
文章中使用的软件是 electerm 你也可以选择你喜欢的工具,下面是连接好之后的样子。

### 下载&配置 JDK
首先我们需要在[《JDK下载》](https://www.lingyuzhao.top/?/linkController=/articleController&link=32168969 "《JDK下载》")中前往官方页面,并选择一个需要的 JDK 版本进行下载,注意要下载的是 JavaSE 哦!
#### 将 JDK 上传(顺便把Hadoop也上传一下)
如果下载完毕之后,接下来就需要切换到 Linux的终端存放安装包的目录(假设目录是`/opt/package`)内,然后执行 rz 命令,这样之后,将会自动打开一个文件管理器页面,让你选择要上传的文件!
此时选择好之后,安装包将会存储在 `/opt/package` 目录中,这里的Hadoop 的安装包需要您去自行选择自己的版本哦!
```
root@liming-virtual-machine:~# cd /opt/package/
root@liming-virtual-machine:/opt/package# ll
total 1275904
drwxrwxrwx 3 root root 4096 3月 14 2023 ./
drwxr-xr-x 4 root root 4096 3月 2 2023 ../
-r-------- 1 root root 359196911 3月 14 2023 hadoop-3.2.1.tar.gz
-r-------- 1 root root 194042837 3月 2 2023 jdk-8u202-linux-x64.tar.gz
```
接下来我们直接解压这个 `jdk-8u202-linux-x64.tar.gz` 文件到 `/opt/software` 目录中,如果没有足够的权限请执行`chmod 777 /opt/*` 这将会为你提供足够的权限,当然,最好是使用下面的命令加上一个`sudo` 或者您手动获取到管理员权限,因为修改文件权限为 777 非常危险!
```
# 解压 jdk-8u202-linux-x64.tar.gz 到 /opt/software/ 目录中
sudo tar -xzf jdk-8u202-linux-x64.tar.gz -C /opt/software/
# 解压 hadoop-3.2.1.tar.gz 到 /opt/software/ 目录中
sudo tar -xzf hadoop-3.2.1.tar.gz -C /opt/software/
```
下面是执行之后的命令展示
```
root@liming-virtual-machine:/opt/package# # 解压 jdk-8u202-linux-x64.tar.gz 到 /opt/software/ 目录中
sudo tar -xzf jdk-8u202-linux-x64.tar.gz -C /opt/software/
root@liming-virtual-machine:/opt/package# ll /opt/software/
total 52
drwxrwxrwx 13 root root 4096 2月 29 17:32 ./
drwxr-xr-x 4 root root 4096 3月 2 2023 ../
drwxr-xr-x 9 1001 1001 4096 9月 11 2019 hadoop-3.2.1/
drwxr-xr-x 7 uucp 143 4096 12月 16 2018 jdk1.8.0_202/
```
#### 配置环境变量
修改 `/etc/profile` 文件,这个文件在登录账户之后,其中的脚本代码将会自动执行,因此我们通常会选择在这里进行一些环境变量的初始化动作。
```
# 执行 vim 命令修改 /etc/profile
vim /etc/profile
# 下面是环境变量
export JAVA_HOME="/opt/software/jdk1.8.0_202"
export HADOOP_HOME="/opt/software/hadoop-2.8.3"
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
```
#### 测试 Java 命令是否可用
下面的执行日志代表就是可用,JDK1.8 的配置成功了!
```
root@liming-virtual-machine:/opt/package# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
```
## 配置 Hadoop
### 获取配置文件
您可以访问链接 https://github.com/BeardedManZhao/BigData-propertyFiles/tree/core/hadoop 以便获取相关配置,也可以直接在 Hadoop 的配置目录中执行下面的命令,获取到我们写好的配置文件模板!
```
# 进入到 Hadoop 目录
cd /opt/software/hadoop-3.2.1/etc/hadoop
# 下载各种 site 和 env 的配置文件
rm -rf ./core-site.xml
wget https://diskmirror.lingyuzhao.top//1/Binary//github/BigData-propertyFiles/core/hadoop/hdfs%E4%B8%8Eyarn%E7%9A%84%E6%9C%80%E7%AE%80%E5%88%86%E5%B8%83%E5%BC%8F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/3.2.1/core-site.xml
rm -rf ./hdfs-site.xml
wget https://diskmirror.lingyuzhao.top//1/Binary//github/BigData-propertyFiles/core/hadoop/hdfs%E4%B8%8Eyarn%E7%9A%84%E6%9C%80%E7%AE%80%E5%88%86%E5%B8%83%E5%BC%8F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/3.2.1/hdfs-site.xml
rm -rf ./mapred-site.xml
wget https://diskmirror.lingyuzhao.top//1/Binary//github/BigData-propertyFiles/core/hadoop/hdfs%E4%B8%8Eyarn%E7%9A%84%E6%9C%80%E7%AE%80%E5%88%86%E5%B8%83%E5%BC%8F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/3.2.1/mapred-site.xml
rm -rf ./yarn-site.xml
wget https://diskmirror.lingyuzhao.top//1/Binary//github/BigData-propertyFiles/core/hadoop/hdfs%E4%B8%8Eyarn%E7%9A%84%E6%9C%80%E7%AE%80%E5%88%86%E5%B8%83%E5%BC%8F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/3.2.1/yarn-site.xml
```
当然,下载之后是按照 192.168.0.141 的IP 和 `liming141` 的主机名来进行设置的,您需要查看这些配置,将他们修改为您自己的主机情况。
### 修改 hadoop-env.sh 和 work 文件
我们需要通过下面的操作告诉 Hadoop 我们的 Java 环境变量在哪(它似乎在这个时候不会自己找环境变量,有点讨厌)
```
# 在 hadoop-env.sh里面直接插入这个行就可以啦
export JAVA_HOME="/opt/software/jdk1.8.0_202"
```
如果不配置可能会出现下面的错误
```
root@liming-virtual-machine:/opt/software/hadoop-3.2.1/sbin# ./stop-all.sh
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Stopping namenodes on [liming141]
liming141: ERROR: JAVA_HOME is not set and could not be found.
Stopping datanodes
localhost: ERROR: JAVA_HOME is not set and could not be found.
Stopping secondary namenodes [liming-virtual-machine]
liming-virtual-machine: ERROR: JAVA_HOME is not set and could not be found.
Stopping nodemanagers
localhost: ERROR: JAVA_HOME is not set and could not be found.
```
然后我们需要修改 works 文件,这个文件就是存储集群中所有主机 IP 的文件,这是为了让Hadoop集群知道自己的集群里有哪些主机,如果您有额外的主机,直接在这里加IP就可以了,如果没有其它主机不需要加IP或主机。
### 修改启动脚本
我们现在下载好了所有的配置文件,接下来我们需要将启动脚本进行修改,在里面加上一些配置,首先需要进入到脚本目录
```
# 进入到 Hadoop 的脚本目录
cd /opt/software/hadoop-3.2.1/sbin
```
**注意 如果不配置这里会有可能出现下面的错误!!!**
```
root@liming-virtual-machine:/opt/software/hadoop-3.2.1/sbin# ./start-all.sh
Starting namenodes on [liming141]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [liming-virtual-machine]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
```
#### *-dfs.sh
在 HDFS 的启动与终止脚本中的第二行插入下面的四个语句
```
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
```

#### *-yarn.sh
在 YARN 的启动与终止脚本中的第二行插入下面的三个语句
```
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
```
### 格式化HDFS文件系统
```
cd /opt/software/hadoop-3.2.1/bin/
./hdfs namenode -format
```
如果你是在特定的 Hadoop 配置目录下工作,你可能需要指定配置目录的路径,例如:
```
./hdfs namenode -format -config /path/to/your/hadoop/config/directory
```
## 启动测试
```
cd /opt/software/hadoop-3.2.1/sbin/
./start-all.sh
```
下面是我们启动 Hadoop 并访问 Hadoop Web 页面的结果

------
***操作记录***
作者:[root](https://www.lingyuzhao.top//index.html?search=1 "root")
操作时间:2024-02-29 18:19:21 星期四
事件描述备注:保存/发布
中国 天津
[](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)
------
***操作记录***
作者:[root](https://www.lingyuzhao.top//index.html?search=1 "root")
操作时间:2024-03-02 09:13:09 星期六
事件描述备注:保存/发布
中国 天津
[](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)