<value>/opt/module/hadoop/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
🎯HDFS配置文件:外部通讯的接口,`vim hdfs-site.xml`,在`<configuration>`和`</configuration>`之间插入以下内容
<!-- 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>
🎯YARN配置文件:`vim yarn-site.xml`,在`<configuration>`和`</configuration>`之间插入以下内容
<!-- 指定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>
🎯MapReduce配置文件:`mapred-site.xml`,在`<configuration>`和`</configuration>`之间插入以下内容
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
🎯分发到其他虚拟机:`xsync hadoop/`,在hadoop103/104上查看是否搞定`cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml`
* 常用端口号:
| 端口名称 | 端口号 |
| --- | --- |
| NameNode 内部通信端口 | 8020 / 9000 / 9820 |
| NameNode HTTP UI | 9870 |
| MapReduce 查看执行任务端口 | 8088 |
| 历史服务器通信端口 | 19888 |
### 4. 群起集群
🎯配置workers:`vim /opt/module/hadoop-3.1.3/etc/hadoop/workers` ,增加以下内容(该文件中添加的内容结尾不允许有空格,文件中不允许有空行)
hadoop102
hadoop103
hadoop104
保存退出,同步配置文件
xsync /opt/module/hadoop/etc/hadoop/workers
🎯启动集群:如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode
在hadoop根目录输入
hdfs namenode -format
随后会产生data和logs两个文件
>
> 格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化
>
>
> 1. 杀进程`sbin/stop-dfs.sh`
> 2. 删除每个虚拟机上的`logs`和`data`
> 3. 格式化NameNode:`hdfs namenode -format`
>
>
>
🎯启动HDFS
hadoop 根目录下启动 hdfs
sbin/start-dfs.sh
🤯启动hadoop集群时还有可能会报如下错误
Starting namenodes on [hadoop102]
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 [hadoop104]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
🎯解决方案:
vim /etc/profile
在环境变量中添加下面的配置
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
🎯查看是否启动成功:
分发并刷新配置文件
xsync /etc/profile ; source /etc/profile
hadoop 根目录下启动 hdfs
sbin/start-dfs.sh
jps查看启动的进程(Java进程的相关信息)
jps
🎯启动YARN(hadoop103上启动)
同样在hadoop根目录下
source /etc/profile
sbin/start-yarn.sh
jps查看启动的进程
jps
🎯web端查看 HDFS 的 NameNode:浏览器中输入 <http://hadoop102:9870>;Web 端查看 YARN 的 ResourceManager:浏览器中输入 <http://hadoop103:8088>
### 5. 集群基本测试
🎯上传文件到集群(hadoop102上操作):
创建一个目录,后续操作才得以开展
hadoop fs -mkdir /wcinput
上传小文件
hadoop fs -put wcinput/word.txt /wcinput
上传大文件到根目录
hadoop fs -put /opt/software/jdk-8u371-linux-x64.tar.gz /
🎯web端查看上传情况:<http://hadoop102:9870/explorer.html#/>,可以看到![在这里插入图片描述](https://img-blog.csdnimg.cn/c352da1c9ff54e9d98255656afcf93d2.png)副本为3
>
> **上传文件后查看文件存放在什么位置(hadoop102)?**
>
>
> 1. HDFS的存储路径:`/opt/module/hadoop/data/dfs/data/current/BP-141094941-192.168.150.103-1689214323987/current/finalized/subdir0/subdir0`
> 2. 查看HDFS在磁盘存储文件内容:`cat blk_1073741825`,可以发现`blk_一长串数字`即我们上传的文件,可以进行查看、解压等操作
>
>
>
🎯测试YARN(需要计算时才会显示任务):
hadoop根目录下
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput
>
> 查看执行详情<http://hadoop103:8088>、<http://hadoop102:9870/explorer.html#/>,不过还查看不了历史(history)
>
>
>
### 6. 配置历史服务器
🎯配置mapred-site.xml
`vim /opt/module/hadoop/etc/hadoop/mapred-site.xml`
添加如下配置
mapreduce.jobhistory.address hadoop102:10020 mapreduce.jobhistory.webapp.address hadoop102:19888
🎯回到`/opt/module/hadoop/etc/hadoop`分发配置`xsync mapred-site.xml`,并在hadoop102上启动历史服务器:`bin/mapred --daemon start historyserver`
🎯查看是否启动成功:`jps`
🎯测试一下:
先创建文件夹
hadoop fs -mkdir /input
上传文件
hadoop fs -put wcinput/word.txt /input
测试yarn
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
>
> web上查看记录<http://hadoop102:19888/jobhistory>
>
>
>
### 7. 配置日志的聚集
>
> **日志聚集概念**:应用运行完成以后,将程序运行日志信息上传到HDFS系统上,可以方便的查看到程序运行详情,方便开发调试
> ![在这里插入图片描述](https://img-blog.csdnimg.cn/845fecc9a2ef40c8b589c17b3a2c75bc.png)开启日志聚集功能,需要**重新启动** NodeManager 、ResourceManager 和 HistoryServer
>
>
>
🎯配置yarn-site.xml
vim /opt/module/hadoop/etc/hadoop/yarn-site.xml
增加如下配置
yarn.log-aggregation-enable true yarn.log.server.url http://hadoop102:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 604800
🎯保存之后分发
xsync yarn-site.xml
🎯重启NodeManager 、ResourceManager 和 HistoryServer:`mapred --daemon stop historyserver`,单个服务停止;切换至hadoop103上`sbin/stop-yarn.sh`
关闭yarn,`sbin/start-yarn.sh`重启yarn,切回hadoop102`mapred --daemon start historyserver`
🎯测试一下:
hadoop根目录下
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output2
>
> web上查看logs是否有运行信息<http://hadoop102:19888/jobhistory>
> 注意输出的文件不能已经存在了,要么删除原有的,要么新建一个
>
>
>
### 8. 集群启动/停止方式
🎯各个**模块**分开启动/停止(配置 ssh 是前提)
整体启动/停止HDFS
start-dfs.sh
stop-dfs.sh
整体启动/停止yarn(hadoop103)
start-yarn.sh
stop-yarn.sh
🎯各个**服务组件**逐一启动/停止
单独启动/停止HDFS组件(namenode或datanode或secondarynamenode其中之一)
hdfs --daemon start namenode或datanode或secondarynamenode
hdfs --daemon stop namenode或datanode或secondarynamenode
单独启动/停止YARN组件
yarn --daemon stop resourcemanager或nodemanager
yarn --daemon stop resourcemanager或nodemanager
🎯注意到上述操作繁杂重复,故可以用**脚本一键**启动/关停所有`vim /bin/myhadoop.sh`:
#!/bin/bash
if [ $# -lt 1 ]
then
echo “No Args Input…”
exit ;
fi
case $1 in
“start”)
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
“stop”)
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)
echo “Input Args Error…”
;;
esac
🎯先加上权限`chmod 777 myhadoop.sh`,再分发脚本`xsync myhadoop.sh`
🎯`myhadoop.sh start`一键启动、`myhadoop.sh stop`一键关停
🤯但是行不通,`myhadoop.sh stop/start`显示:
=================== 关闭 hadoop集群 ===================
--------------- 关闭 historyserver ---------------
--------------- 关闭 yarn ---------------
Stopping nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
Stopping resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
--------------- 关闭 hdfs ---------------
Stopping namenodes on [hadoop102]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.Stopping datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.Stopping secondary namenodes [hadoop104]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
🎯解决方法:`vim /opt/module/hadoop/etc/hadoop/hadoop-env.sh`
添加全局变量,跟上一个一样😵
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
最后分发脚本`xsync /opt/module/hadoop/etc/hadoop/hadoop-env.sh`即可
🎯一键查看所有服务器java进程的脚本,拒绝一台一台jps,`vim /bin/jpsall`:
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done
🎯先加上权限`chmod 777 myhadoop.sh`,再分发脚本`xsync jpsall`,最后`jpsall` 即可查看
### 9. 集群时间同步
>
> 如果服务器无法连接外网,需要时间同步
> (**了解即可,影响性能,无需操作**)![在这里插入图片描述](https://img-blog.csdnimg.cn/f960b12920f0456eab0d45d1048c0a32.png)
> NTPD(Network Time Protocol daemon)是 Linux 操作系统的一个守护进程,其完整的实现了 NTP 协议,用于校正本地系统与时钟源服务器之前的时间
>
>
>
🎯查看所有节点 ntpd 服务状态和开机自启状态
systemctl status ntpd
启动 ntpd
systemctl start ntpd
查看开机是否自启
systemctl is-enabled ntpd
开机自启
systemctl enable ntpd
🎯修改 `ntp.conf` 文件,`vim /etc/ntp.conf`:
将这一行去掉注释,并修改为自己的网段
restrict 192.168.150.0 mask 255.255.255.0 nomodify notrap
集群在局域网中,不使用其他互联网上的时间,注释以下4行
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
并在结尾加上(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
🎯修改hadoop102的`/etc/sysconfig/ntpd`,`vim /etc/sysconfig/ntpd`:
增加(让硬件时间和系统时间一起同步,时间更精准)
SYNC_HWCLOCK=yes
🎯重启ntdp服务:`systemctl start ntdp`
🎯其他机器配置:
关闭所有节点上ntdp服务和自启动
systemctl stop ntdp
systemctl disable ntdp
在其他机器上配置每1分钟与时间服务器同步一次
crontab -e
*/1 * * * * /usr/sbin/ntpdate hadoop102
![img](https://img-blog.csdnimg.cn/img_convert/43eb0f2ceca161a2412d8f130c1f76b7.png)
![img](https://img-blog.csdnimg.cn/img_convert/a2d6160a5b5fbc2b11465d91e6468cda.png)
![img](https://img-blog.csdnimg.cn/img_convert/57b639092f9fbc4d5c626e2fc6e03840.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
YNC\_HWCLOCK=yes
🎯重启ntdp服务:systemctl start ntdp
🎯其他机器配置:
# 关闭所有节点上ntdp服务和自启动
systemctl stop ntdp
systemctl disable ntdp
# 在其他机器上配置每1分钟与时间服务器同步一次
crontab -e
*/1 * * * * /usr/sbin/ntpdate hadoop102
[外链图片转存中…(img-poGJPkb6-1714732617833)]
[外链图片转存中…(img-RG2yhPxa-1714732617834)]
[外链图片转存中…(img-PpyoXw70-1714732617834)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新