链接:https://pan.baidu.com/s/1TFGr2sZO1rZdvUJ9MeqfIQ
提取码:6666
tar -zxvf jdk1.8.0_201.tar.gz -C /opt/module/1.4 配置环境变量 ( 1 )新建 /etc/profile.d/my_env.sh 文件
vim /etc/profile.d/my_env.sh #添加如下内容 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_201 export PATH=$PATH:$JAVA_HOME/bin(2)source 一下 /etc/profile 文件,让新的环境变量 PATH 生效
source /etc/profile1.5 测试
java -version二、安装Hadoop3.3.1 2.1 下载
下载地址:Index of /dist/hadoop/common/hadoop-3.3.1
2.2 上传到服务器并解压到/opt/module中 2.3 添加环境变量到/etc/profile.d/my_env.sh文件中 2.4 测试hadoop version三、Hadoop 目录结构解析 ( 1 ) bin 目录:存放对 Hadoop 相关服务( hdfs , yarn , mapred )进行操作的脚本 (2 ) etc 目录: Hadoop 的配置文件目录,存放 Hadoop 的配置文件 (3 ) lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能) (4 ) sbin 目录:存放启动或停止 Hadoop 相关服务的脚本 (5 ) share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例 四、完全分布式模式 4.1 编写集群分发脚本xsync
(1)在/bin目录下创建xsync文件
[root@ggl201 bin]# cd /bin [root@ggl201 bin]# vim xsync #添加如下代码 #!/bin/bash #1. 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍历集群所有机器 for host in ggl201 ggl202 ggl203 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
(2)修改脚本 xsync 具有执行权限
[root@ggl201 bin]# chmod +x xsync
(3)测试脚本
[root@ggl201 bin]# xsync /bin/xsync
如果报错 rsync: command not found 安装一下rsync
yum -y install rsync4.2 SSH 无密码登录配置 ( 1 )免密登录原理
(2) 生成公钥和私钥
[root@ggl201 .ssh]# pwd /root/.ssh [root@ggl201 .ssh]# ssh-keygen -t rsa然后连续敲三个回车,就会生成两个文件 id_rsa (私钥)、 id_rsa.pub (公钥)
(3)将公钥拷贝到要免密登录的目标机器上
[root@ggl201 .ssh]# ssh-copy-id ggl201 [root@ggl201 .ssh]# ssh-copy-id ggl202 [root@ggl201 .ssh]# ssh-copy-id ggl203
注意:
还需要在 ggl202 上 配置一下无密登录到 ggl201、ggl203 服务器上。
还需要在 ggl203 上 配置一下无密登录到 ggl201、ggl202 服务器上。
操作步骤同上
(4).ssh 文件夹下(~/.ssh)的文件功能解释
4.3 集群配置 4.3.1 集群部署规划注意:
(1)NameNode 和 SecondaryNameNode 不要安装在同一台服务器
(2)ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在
同一台机器上| ggl201 | ggl202 | ggl203 | |
|---|---|---|---|
| HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
| YARN | NodeManager |
ResourceManager
NodeManager | NodeManager |
| 要获取的默认文件 | 文件存放在 Hadoop 的 jar 包中的位置 |
| [core-default.xml] | hadoop-common-3.3.1.jar/core-default.xml |
| [hdfs-default.xml] | hadoop-hdfs-3.3.1.jar/hdfs-default.xml |
| [yarn-default.xml] | hadoop-yarn-common-3.3.1.jar/yarn-default.xml |
| [mapred-default.xml] | hadoop-mapreduce-client-core-3.3.1.jar/mapred-default.xml |
(1)核心配置文件
配置 core-site.xml[root@ggl201 hadoop]# pwd /opt/module/hadoop-3.3.1/etc/hadoop [root@ggl201 hadoop]# vim core-site.xml内容如下:
(2 ) HDFS 配置文件 配置 hdfs-site.xmlfs.defaultFS hdfs://ggl201:8020 hadoop.tmp.dir /opt/module/hadoop-3.3.1/data hadoop.http.staticuser.user hadoop
[root@ggl201 hadoop]# vim hdfs-site.xml
内容如下:
(3 ) YARN 配置文件 配置 yarn-site.xmldfs.namenode.http-address ggl201:9870 dfs.namenode.secondary.http-address ggl203:9898
[root@ggl201 hadoop]# vim yarn-site.xml
内容如下:
(4 ) MapReduce 配置文件 配置 mapred-site.xmlyarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname ggl202 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP RED_HOME
[root@ggl201 hadoop]# vim mapred-site.xml
内容如下:
4.3.4 在集群上分发配置好的 Hadoop 配置文件mapreduce.framework.name yarn
[root@ggl201 hadoop]# xsync /opt/module/hadoop-3.3.1/etc/hadoop/4.4 集群启动 4.4.1 配置 workers
[root@ggl201 hadoop]# vim /opt/module/hadoop-3.3.1/etc/hadoop/workers增加以下内容:
ggl201 ggl202 ggl203注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。 同步所有节点配置文件
[root@ggl201 hadoop]# xsync /opt/module/hadoop-3.3.1/etc/hadoop/workers4.4.2 启动集群 ( 1 ) 如果集群是第一次启动 ,需要在ggl201 节点格式化 NameNode (注意:格式
化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
[root@ggl201 hadoop-3.3.1]# hdfs namenode -format(2 )启动 HDFS
[root@ggl201 hadoop-3.3.1]# sbin/start-dfs.sh
报错信息如下:
因为使用的用户是root 需要用hadoop用户启动
使用hadoop用户启动依然是报错 !!!
原因是 ssh的时候不通 当时用的root来创建的秘钥
解决方法如下:
1、把root下的.ssh copy到 /home/hadoop/下
[root@ggl201 ~]# cp -r .ssh/ /home/hadoop/
2、修改所属用户和用户组
[hadoop@ggl201 ~]$ sudo chown hadoop:hadoop -R .ssh/
3、分发
[hadoop@ggl201 ~]$ sudo xsync .ssh/
再次启动 成功
(3)在配置了 ResourceManager 的节点(ggl202)启动 YARN
[hadoop@ggl202 hadoop-3.3.1]$ sbin/start-yarn.sh(4 ) Web 端查看 HDFS 的 NameNode 访问地址:http://ggl201:9870/
(5 ) Web 端查看 YARN 的 ResourceManager
访问地址:http://ggl202:8088/
4.5 配置历史服务器 为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下: 4.5.1 配置 mapred-site.xml[hadoop@ggl201 hadoop]$ pwd /opt/module/hadoop-3.3.1/etc/hadoop [hadoop@ggl201 hadoop]$ vim mapred-site.xml
添加内容如下:
4.5.2 分发配置mapreduce.jobhistory.address ggl201:10020 mapreduce.jobhistory.webapp.address ggl201:19888
[hadoop@ggl201 hadoop]$ xsync mapred-site.xml4.5.3 在 ggl201 启动历史服务器
[hadoop@ggl201 hadoop]$ mapred --daemon start historyserver4.5.4 查看历史服务器是否启动 4.5.5 查看 JobHistory 访问链接: http://ggl201:19888/jobhistory 4.6 配置日志的聚集
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。
开启日志聚集功能具体步骤如下:
4.6.1 配置 yarn-site.xml[hadoop@ggl201 hadoop]$ vim yarn-site.xml
内容如下:
4.6.2 分发yarn.log-aggregation-enable true yarn.log.server.url http://ggl201:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 604800
[hadoop@ggl201 hadoop]$ xsync yarn-site.xml4.6.3 关闭 NodeManager 、ResourceManager 和 HistoryServer
[hadoop@ggl202 hadoop-3.3.1]$ sbin/stop-yarn.sh [hadoop@ggl201 hadoop-3.3.1]$ mapred --daemon stop historyserver4.6.4 启动 NodeManager 、ResourceManage 和 HistoryServer
[hadoop@ggl202 hadoop-3.3.1]$ sbin/start-yarn.sh [hadoop@ggl201 hadoop-3.3.1]$ mapred --daemon start historyserver4.6.5 执行 WordCount 程序
[hadoop@ggl201 hadoop-3.3.1]$ hadoop fs -put word.txt /input [hadoop@ggl201 hadoop-3.3.1]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output报错如下:
解决方法如下:
[hadoop@ggl201 hadoop-3.3.1]$ hadoop classpath
[hadoop@ggl201 hadoop-3.3.1]$ vim etc/hadoop/mapred-site.xml
修改mapred-site.xml文件
[hadoop@ggl201 hadoop-3.3.1]$ vim etc/hadoop/mapred-site.xml
增加内容如下:
(3 )修改任意机器时间yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.1/etc/hadoop:/opt/module/hadoop-3.3.1/share/hadoop/common/lib1 * * * * /usr/sbin/ntpdate ggl201
[root@ggl202 ~]# date -s "2021-11-01 11:22:33"
(4)1 分钟后查看机器是否与时间服务器同步



