网站开发费 税率,wordpress赞助,在线服务器代理,做家宴网站一、基础环境安装
https://blog.csdn.net/fen_dou_shao_nian/article/details/120945221
二、hadoop运行环境搭建
2.1 模板虚拟机环境准备
0#xff09;安装模板虚拟机#xff0c;IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G 1#xff09;hadoop100…一、基础环境安装
https://blog.csdn.net/fen_dou_shao_nian/article/details/120945221
二、hadoop运行环境搭建
2.1 模板虚拟机环境准备
0安装模板虚拟机IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G 1hadoop100 虚拟机配置要求如下本文 Linux 系统全部以 CentOS-7.5-x86-1804 为例 1使用 yum 安装需要虚拟机可以正常上网yum 安装前可以先测试下虚拟机联网情 况
[roothadoop100 ~]# ping www.baidu.com
PING www.baidu.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq1
ttl128 time8.60 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq2
ttl128 time7.72 ms2安装 epel-release 注Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包 适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库大多数 rpm 包在官方 repository 中是找不到的 [roothadoop100 ~]# yum install -y epel-release
3注意如果 Linux 安装的是最小系统版还需要安装如下工具如果安装的是 Linux 桌面标准版不需要执行如下操作 ➢ net-tool工具包集合包含 ifconfig 等命令 [roothadoop100 ~]# yum install -y net-tools ➢ vim编辑器 [roothadoop100 ~]# yum install -y vim 2关闭防火墙关闭防火墙开机自启
## 关闭防火墙
[roothadoop100 ~]# systemctl stop firewalld
## 开启启动是关闭防火墙
[roothadoop100 ~]# systemctl disable firewalld.service注意在企业开发时通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙 3创建 atguigu 用户并修改 atguigu 用户的密码
[roothadoop100 ~]# useradd atguigu
[roothadoop100 ~]# passwd atguigu4配置 atguigu 用户具有 root 权限方便后期加 sudo 执行 root 权限的命令
[roothadoop100 ~]# vim /etc/sudoers修改/etc/sudoers 文件在%wheel 这行下面添加一行如下所示
atguigu ALL(ALL) NOPASSWD:ALL注意atguigu 这一行不要直接放到 root 行下面因为所有用户都属于 wheel 组你先 配置了 atguigu 具有免密功能但是程序执行到%wheel 行时该功能又被覆盖回需要 密码。所以 atguigu 要放到%wheel 这行下面。
5在/opt 目录下创建文件夹并修改所属主和所属组 1在/opt 目录下创建 module、software 文件夹
[roothadoop100 ~]# mkdir /opt/module
[roothadoop100 ~]# mkdir /opt/software2修改 module、software 文件夹的所有者和所属组均为 atguigu 用户
[roothadoop100 ~]# chown atguigu:atguigu /opt/module
[roothadoop100 ~]# chown atguigu:atguigu /opt/software3查看 module、software 文件夹的所有者和所属组
[roothadoop100 ~]# cd /opt/
[roothadoop100 opt]# ll
总用量 12
drwx--x--x. 4 root root 4096 8月 24 07:23 containerd
drwxr-xr-x. 2 atguigu atguigu 4096 9月 7 06:37 module
drwxr-xr-x. 2 atguigu atguigu 4096 9月 7 06:39 software
6卸载虚拟机自带的 JDK 注意如果你的虚拟机是最小化安装不需要执行这一步。
[roothadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps➢ rpm -qa查询所安装的所有 rpm 软件包 ➢ grep -i忽略大小写 ➢ xargs -n1表示每次只传递一个参数 ➢ rpm -e –nodeps强制卸载软件 7重启虚拟机 [roothadoop100 ~]# reboot
2.2 克隆虚拟机
1利用模板机 hadoop100克隆三台虚拟机hadoop102 hadoop103 hadoop104 注意克隆时要先关闭 hadoop100 第一步右键》电源》关机 第二步右键》管理》克隆 注意不同的虚拟机要建立在不同的文件夹下否则不能同时启动多个虚拟机 同理再刻录2个 删除hadoop100 右键》管理》从磁盘中删除
2修改克隆机 IP以下以 hadoop102 举例说明 1修改克隆虚拟机的静态 IP
[roothadoop100 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
DEVICEens33
TYPEEthernet
ONBOOTyes
BOOTPROTOstatic
NAMEens33
IPADDR192.168.10.102
PREFIX24
GATEWAY192.168.10.2
DNS1192.168.10.22查看 Linux 虚拟机的虚拟网络编辑器编辑-虚拟网络编辑器-VMnet8 3查看 Windows 系统适配器 VMware Network Adapter VMnet8 的 IP 地址 4保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和 Windows 系 统 VM8 网络 IP 地址相同。 3修改克隆机主机名以下以 hadoop102 举例说明 1修改主机名称
[roothadoop100 ~]# vim /etc/hostname
hadoop1022配置 Linux 克隆机主机名称映射 hosts 文件打开/etc/hosts
[roothadoop100 ~]# vim /etc/hosts添加如下内容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop1084重启克隆机 hadoop102
[roothadoop100 ~]# reboot5修改 windows 的主机映射文件hosts 文件 1如果操作系统是 window7可以直接修改 a进入 C:\Windows\System32\drivers\etc 路径 b打开 hosts 文件并添加如下内容然后保存
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop1082如果操作系统是 window10先拷贝出来修改保存以后再覆盖即可 a进入 C:\Windows\System32\drivers\etc 路径 b拷贝 hosts 文件到桌面 c打开桌面 hosts 文件并添加如下内容
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108d将桌面 hosts 文件覆盖 C:\Windows\System32\drivers\etc 路径 hosts 文件
2.3 在 hadoop102 安装 JDK
1卸载现有 JDK 注意安装 JDK 前一定确保提前删除了虚拟机自带的 JDK。详细步骤见问文档 3.1 节 中卸载 JDK 步骤。 2用 XShell 传输工具将 JDK 导入到 opt 目录下面的 software 文件夹下面 3在 Linux 系统下的 opt 目录中查看软件包是否导入成功
[atguiguhadoop102 ~]$ ls /opt/software/看到如下结果 jdk-8u212-linux-x64.tar.gz 4解压 JDK 到/opt/module 目录下
[atguiguhadoop102 software]$ tar -zxvf jdk-8u212-linuxx64.tar.gz -C /opt/module/5配置 JDK 环境变量 1新建/etc/profile.d/my_env.sh 文件
[atguiguhadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh添加如下内容
#JAVA_HOME
export JAVA_HOME/opt/module/jdk1.8.0_212
export PATH$PATH:$JAVA_HOME/bin2保存后退出 :wq 3source 一下/etc/profile 文件让新的环境变量 PATH 生效
[atguiguhadoop102 ~]$ source /etc/profile6测试 JDK 是否安装成功
[atguiguhadoop102 ~]$ java -version如果能看到以下结果则代表 Java 安装成功。
java version 1.8.0_212注意重启如果 java -version 可以用就不用重启
[atguiguhadoop102 ~]$ sudo reboot2.4 在 hadoop102 安装 Hadoop
Hadoop 下载地址https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/ 1用 XShell 文件传输工具将 hadoop-3.1.3.tar.gz 导入到 opt 目录下面的 software 文件夹下 面 2进入到 Hadoop 安装包路径下
[atguiguhadoop102 ~]$ cd /opt/software/3解压安装文件到/opt/module 下面
[atguiguhadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/4查看是否解压成功
[atguiguhadoop102 software]$ ls /opt/module/
hadoop-3.1.35将 Hadoop 添加到环境变量 1获取 Hadoop 安装路径
[atguiguhadoop102 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.32打开/etc/profile.d/my_env.sh 文件
[atguiguhadoop102 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh➢ 在 my_env.sh 文件末尾添加如下内容shiftg
#HADOOP_HOME
export HADOOP_HOME/opt/module/hadoop-3.1.3
export PATH$PATH:$HADOOP_HOME/bin
export PATH$PATH:$HADOOP_HOME/sbin➢ 保存并退出 :wq 3让修改后的文件生效
[atguiguhadoop102 hadoop-3.1.3]$ source /etc/profile6测试是否安装成功
[atguiguhadoop102 hadoop-3.1.3]$ hadoop version
Hadoop 3.1.37重启如果 Hadoop 命令不能用再重启虚拟机
[atguiguhadoop102 hadoop-3.1.3]$ sudo reboot2.5 Hadoop 目录结构
1查看 Hadoop 目录结构
[atguiguhadoop102 hadoop-3.1.3]$ ll
总用量 52
drwxr-xr-x. 2 atguigu atguigu 4096 5 月 22 2017 bin
drwxr-xr-x. 3 atguigu atguigu 4096 5 月 22 2017 etc
drwxr-xr-x. 2 atguigu atguigu 4096 5 月 22 2017 include
drwxr-xr-x. 3 atguigu atguigu 4096 5 月 22 2017 lib
drwxr-xr-x. 2 atguigu atguigu 4096 5 月 22 2017 libexec
-rw-r--r--. 1 atguigu atguigu 15429 5 月 22 2017 LICENSE.txt
-rw-r--r--. 1 atguigu atguigu 101 5 月 22 2017 NOTICE.txt
-rw-r--r--. 1 atguigu atguigu 1366 5 月 22 2017 README.txt
drwxr-xr-x. 2 atguigu atguigu 4096 5 月 22 2017 sbin
drwxr-xr-x. 4 atguigu atguigu 4096 5 月 22 2017 share2重要目录 1bin 目录存放对 Hadoop 相关服务hdfsyarnmapred进行操作的脚本 2etc 目录Hadoop 的配置文件目录存放 Hadoop 的配置文件 3lib 目录存放 Hadoop 的本地库对数据进行压缩解压缩功能 4sbin 目录存放启动或停止 Hadoop 相关服务的脚本 5share 目录存放 Hadoop 的依赖 jar 包、文档、和官方案例
第 3 章 Hadoop 运行模式
1Hadoop 官方网站http://hadoop.apache.org/ 2Hadoop 运行模式包括本地模式、伪分布式模式以及完全分布式模式。
➢ 本地模式单机运行只是用来演示一下官方案例。生产环境不用。
➢ 伪分布式模式也是单机运行但是具备 Hadoop 集群的所有功能一台服务器模
拟一个分布式的环境。个别缺钱的公司用来测试生产环境不用。
➢ 完全分布式模式多台服务器组成分布式环境。生产环境使用。3.1 本地运行模式官方 WordCount 1创建在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹
[atguiguhadoop102 hadoop-3.1.3]$ cd /opt/module/hadoop-3.1.3
[atguiguhadoop102 hadoop-3.1.3]$ mkdir wcinput2在 wcinput 文件下创建一个 word.txt 文件
[atguiguhadoop102 hadoop-3.1.3]$ cd wcinput3编辑 word.txt 文件
[atguiguhadoop102 wcinput]$ vim word.txt➢ 在文件中输入如下内容
hadoop yarn
hadoop mapreduce
atguigu
atguigu➢ 保存退出:wq 4回到 Hadoop 目录/opt/module/hadoop-3.1.3 5执行程序
[atguiguhadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput6查看结果
[atguiguhadoop102 hadoop-3.1.3]$ cat wcoutput/part-r-00000看到如下结果
atguigu 2
hadoop 2
mapreduce 1
yarn 13.2 完全分布式运行模式开发重点
分析 1准备 3 台客户机关闭防火墙、静态 IP、主机名称 2安装 JDK 3配置环境变量 4安装 Hadoop 5配置环境变量 6配置集群 7单点启动 8配置 ssh 9群起并测试集群
3.2.2 编写集群分发脚本 xsync
1scpsecure copy安全拷贝 1scp 定义 scp 可以实现服务器与服务器之间的数据拷贝。from server1 to server2 2基本语法 scp -r p d i r / pdir/ pdir/fname u s e r user userhost: p d i r / pdir/ pdir/fname 命令 递归 要拷贝的文件路径/名称 目的地用户主机:目的地路径/名称 3案例实操 ➢ 前提在 hadoop102、hadoop103、hadoop104 都已经创建好的/opt/module、 /opt/software 两个目录并且已经把这两个目录修改为 atguigu:atguigu
[atguiguhadoop102 ~]$ sudo chown atguigu:atguigu -R /opt/modulea在 hadoop102 上将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到 hadoop103 上。
[atguiguhadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 atguiguhadoop103:/opt/moduleb在 hadoop103 上将 hadoop102 中/opt/module/hadoop-3.1.3 目录拷贝到 hadoop103 上。
[atguiguhadoop103 ~]$ scp -r atguiguhadoop102:/opt/module/hadoop-3.1.3 /opt/module/c在 hadoop103 上操作将 hadoop102 中/opt/module 目录下所有目录拷贝到 hadoop104 上。
[atguiguhadoop103 opt]$ scp -r atguiguhadoop102:/opt/module/* atguiguhadoop104:/opt/module2rsync 远程同步工具 rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。 rsync 和 scp 区别用 rsync 做文件的复制要比 scp 的速度快rsync 只对差异文件做更 新。scp 是把所有文件都复制过去。 1基本语法 rsync -av p d i r / pdir/ pdir/fname u s e r user userhost: p d i r / pdir/ pdir/fname 命令 选项参数 要拷贝的文件路径/名称 目的地用户主机:目的地路径/名称 2案例实操 a删除 hadoop103 中/opt/module/hadoop-3.1.3/wcinput
[atguiguhadoop103 hadoop-3.1.3]$ rm -rf wcinput/b同步 hadoop102 中的/opt/module/hadoop-3.1.3 到 hadoop103
[atguiguhadoop102 module]$ rsync -av hadoop-3.1.3/ atguiguhadoop103:/opt/module/hadoop-3.1.3/3xsync 集群分发脚本 1需求循环复制文件到所有节点的相同目录下 2需求分析 arsync 命令原始拷贝
rsync -av /opt/module atguiguhadoop103:/opt/b期望脚本 xsync 要同步的文件名称 c期望脚本在任何路径都能使用脚本放在声明了全局环境变量的路径
[atguiguhadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bin3脚本实现 a在/home/atguigu/bin 目录下创建 xsync 文件
[atguiguhadoop102 opt]$ cd /home/atguigu
[atguiguhadoop102 ~]$ mkdir bin
[atguiguhadoop102 ~]$ cd bin
[atguiguhadoop102 bin]$ vim xsync在该文件中编写如下代码
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho $host #3. 遍历所有目录挨个发送for file in $do#4. 判断文件是否存在if [ -e $file ]then#5. 获取父目录,-P 软连接时也能找到真是的路径pdir$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname$(basename $file)# -p 如果有这个文件夹就不创建ssh $host mkdir -p $pdirrsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
doneb修改脚本 xsync 具有执行权限
[atguiguhadoop102 bin]$ chmod x xsyncc测试脚本
[atguiguhadoop102 ~]$ xsync /home/atguigu/bind将脚本复制到/bin 中以便全局调用
[atguiguhadoop102 bin]$ sudo cp xsync /bin/e同步环境变量配置root 所有者
#这里为什么要全路劲因为sudo相当于root权限root权限下的环境变量中没有/home/atguigu/bin
[atguiguhadoop102 ~]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh注意如果用了 sudo那么 xsync 一定要给它的路径补全。 让环境变量生效
[atguiguhadoop103 bin]$ source /etc/profile
[atguiguhadoop104 opt]$ source /etc/profile3.2.3 SSH 无密登录配置
1配置 ssh 1基本语法 ssh 另一台电脑的 IP 地址 2ssh 连接时出现 Host key verification failed 的解决方法
[atguiguhadoop102 ~]$ ssh hadoop103➢ 如果出现如下内容 Are you sure you want to continue connecting (yes/no)? ➢ 输入 yes并回车 3退回到 hadoop102
[atguiguhadoop103 ~]$ exit2无密钥配置 1免密登录原理 2生成公钥和私钥
[atguiguhadoop102 .ssh]$ pwd
/home/atguigu/.ssh
# 任意目录下执行
[atguiguhadoop102 .ssh]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件 id_rsa私钥、id_rsa.pub公钥
3将公钥拷贝到要免密登录的目标机器上
#任意目录下执行
[atguiguhadoop102 .ssh]$ ssh-copy-id hadoop102
[atguiguhadoop102 .ssh]$ ssh-copy-id hadoop103
[atguiguhadoop102 .ssh]$ ssh-copy-id hadoop104 注意
还需要在 hadoop103 上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、
hadoop104 服务器上。
还需要在 hadoop104 上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、
hadoop104 服务器上。
还需要在 hadoop102 上采用 root 账号配置一下无密登录到 hadoop102、hadoop103、
hadoop104测试
# 新建两个文件
[atguiguhadoop102 ~]$ touch aaa.txt bbb.txt
#分发
[atguiguhadoop102 ~]$ xsync aaa.txt bbb.txt结果
3.2.4 集群配置
1集群部署规划 注意 ➢ NameNode 和 SecondaryNameNode 不要安装在同一台服务器 ➢ ResourceManager 也很消耗内存不要和 NameNode、SecondaryNameNode 配置在 同一台机器上。 hadoop102 hadoop103 hadoop104 HDFS NameNode DataNode DataNode SecondaryNameNode DataNode YARN NodeManager ResourceManager NodeManager NodeManager 2配置文件说明 Hadoop 配置文件分两类默认配置文件和自定义配置文件只有用户想修改某一默认 配置值时才需要修改自定义配置文件更改相应属性值。 1默认配置文件 要获取的默认文件 文件存放在 Hadoop 的 jar 包中的位置
[core-default.xml] hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml] hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml2自定义配置文件 core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在 $HADOOP_HOME/etc/hadoop 这个路径上用户可以根据项目需求重新进行修改配置。 3配置集群 1核心配置文件 配置 core-site.xml
[atguiguhadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguiguhadoop102 hadoop]$ vim core-site.xml文件内容如下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configuration!-- 指定 NameNode 的地址 --propertynamefs.defaultFS/namevaluehdfs://hadoop102:8020/value/property!-- 指定 hadoop 数据的存储目录 --propertynamehadoop.tmp.dir/namevalue/opt/module/hadoop-3.1.3/data/value/property!-- 配置 HDFS 网页登录使用的静态用户为 atguigu --propertynamehadoop.http.staticuser.user/namevalueatguigu/value/property
/configuration2HDFS 配置文件 配置 hdfs-site.xml
[atguiguhadoop102 hadoop]$ vim hdfs-site.xml文件内容如下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration
!-- nn web 端访问地址--
propertynamedfs.namenode.http-address/namevaluehadoop102:9870/value/property
!-- 2nn web 端访问地址--propertynamedfs.namenode.secondary.http-address/namevaluehadoop104:9868/value/property
/configuration3YARN 配置文件 配置 yarn-site.xml
[atguiguhadoop102 hadoop]$ vim yarn-site.xml文件内容如下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configuration
!-- 指定 MR 走 shuffle --propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property!-- 指定 ResourceManager 的地址--propertynameyarn.resourcemanager.hostname/namevaluehadoop103/value/property!-- 环境变量的继承 --propertynameyarn.nodemanager.env-whitelist/namevalueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value/property/configuration4MapReduce 配置文件 配置 mapred-site.xml
[atguiguhadoop102 hadoop]$ vim mapred-site.xml文件内容如下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configuration
!-- 指定 MapReduce 程序运行在 Yarn 上 --propertynamemapreduce.framework.name/namevalueyarn/value/property
/configuration4在集群上分发配置好的 Hadoop 配置文件
[atguiguhadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/5去 103 和 104 上查看文件分发情况
[atguiguhadoop103 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
[atguiguhadoop104 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml3.2.5 群起集群 1配置 workers
[atguiguhadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers在该文件中增加如下内容
hadoop102
hadoop103
hadoop104注意该文件中添加的内容结尾不允许有空格文件中不允许有空行。 同步所有节点配置文件
[atguiguhadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc2启动集群 1如果集群是第一次启动需要在 hadoop102 节点格式化 NameNode注意格式 化 NameNode会产生新的集群 id导致 NameNode 和 DataNode 的集群 id 不一致集群找 不到已往数据。如果集群在运行过程中报错需要重新格式化 NameNode 的话一定要先停 止 namenode 和 datanode 进程并且要删除所有机器的 data 和 logs 目录然后再进行格式 化。
# 只有第一次启动的集群的时候才需要初始化
[atguiguhadoop102 hadoop-3.1.3]$ hdfs namenode -format2启动集群只在hadoop102上启动 HDFS
[atguiguhadoop102 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3/sbin/start-dfs.sh3启动集群在配置了 ResourceManager 的节点在hadoop103上启动 YARN
[atguiguhadoop103 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3/sbin/start-yarn.sh与配置需求对应
如果一下网页访问不到需要关闭防火墙
sudo systemctl stop firewalld4Web 端查看 HDFS 的 NameNode a浏览器中输入http://hadoop102:9870 b查看 HDFS 上存储的数据信息 5Web 端查看 YARN 的 ResourceManager a浏览器中输入http://hadoop103:8088 b查看 YARN 上运行的 Job 信息
3集群基本测试 1上传文件到集群 ➢ 上传小文件
[atguiguhadoop102 ~]$ hadoop fs -mkdir /wcinput
[atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/word.txt /wcinput
2023-09-16 07:12:20,952 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted false, remoteHostTrusted false
➢ 上传大文件 [atguiguhadoop102 ~]$ hadoop fs -put /opt/software/jdk-8u212-linux-x64.tar.gz /2023-09-16 07:13:40,174 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted false, remoteHostTrusted false
2023-09-16 07:13:42,711 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted false, remoteHostTrusted false2上传文件后查看文件存放在什么位置 ➢ 查看 HDFS 文件存储路径
[atguiguhadoop102 subdir0]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598-192.168.10.102-1610603650062/current/finalized/subdir0/subdir0➢ 查看 HDFS 在磁盘存储文件内容
[atguiguhadoop102 subdir0]$ cat blk_1073741825
hadoop yarn
hadoop mapreduce
atguigu
atguigu3拼接
-rw-rw-r--. 1 atguigu atguigu 134217728 5 月 23 16:01 blk_1073741836
-rw-rw-r--. 1 atguigu atguigu 1048583 5 月 23 16:01 blk_1073741836_1012.meta
-rw-rw-r--. 1 atguigu atguigu 63439959 5 月 23 16:01 blk_1073741837
-rw-rw-r--. 1 atguigu atguigu 495635 5 月 23 16:01 blk_1073741837_1013.meta
[atguiguhadoop102 subdir0]$ cat blk_1073741836tmp.tar.gz
[atguiguhadoop102 subdir0]$ cat blk_1073741837tmp.tar.gz
[atguiguhadoop102 subdir0]$ tar -zxvf tmp.tar.gz4下载
[atguiguhadoop104 software]$ hadoop fs -get /wcinput/jdk-8u212-linux-x64.tar.gz ./5执行 wordcount 程序
[atguiguhadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput3.2.6 配置历史服务器
为了查看程序的历史运行情况需要配置一下历史服务器。具体配置步骤如下 1配置 mapred-site.xml
[atguiguhadoop102 hadoop]$ vim mapred-site.xml在该文件里面增加如下配置。
!-- 历史服务器端地址 --
propertynamemapreduce.jobhistory.address/namevaluehadoop102:10020/value
/property
!-- 历史服务器 web 端地址 --
propertynamemapreduce.jobhistory.webapp.address/namevaluehadoop102:19888/value
/property2分发配置
[atguiguhadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml3在 hadoop102 启动历史服务器
[atguiguhadoop102 hadoop]$ mapred --daemon start historyserver4查看历史服务器是否启动
[atguiguhadoop102 hadoop]$ jps5查看 JobHistory
http://hadoop102:19888/jobhistory3.2.7 配置日志的聚集
日志聚集概念应用运行完成以后将程序运行日志信息上传到 HDFS 系统上。 日志聚集功能好处可以方便的查看到程序运行详情方便开发调试。 注意开启日志聚集功能需要重新启动 NodeManager 、ResourceManager 和 HistoryServer。
开启日志聚集功能具体步骤如下 1配置 yarn-site.xml
[atguiguhadoop102 ~]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/
[atguiguhadoop102 hadoop]$ vim yarn-site.xml在该文件里面增加如下配置。
!-- 开启日志聚集功能 --
propertynameyarn.log-aggregation-enable/namevaluetrue/value
/property
!-- 设置日志聚集服务器地址 --
property nameyarn.log.server.url/name valuehttp://hadoop102:19888/jobhistory/logs/value
/property
!-- 设置日志保留时间为 7 天 --
propertynameyarn.log-aggregation.retain-seconds/namevalue604800/value
/property2分发配置
[atguiguhadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml3关闭 NodeManager 、ResourceManager 和 HistoryServer [atguiguhadoop103 hadoop-3.1.3]$ cd /opt/module/hadoop-3.1.3/ [atguiguhadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh [atguiguhadoop103 hadoop-3.1.3]$ mapred --daemon stop historyserver 5删除 HDFS 上已经存在的输出文件
[atguiguhadoop102 ~]$ hadoop fs -rm -r /output6执行 WordCount 程序
[atguiguhadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output7查看日志 1历史服务器地址
http://hadoop102:19888/jobhistory2历史任务列表 3查看任务运行日志 4运行日志详情
3.2.8 集群启动/停止方式总结
1各个模块分开启动/停止配置 ssh 是前提常用 1整体启动/停止 HDFS
start-dfs.sh/stop-dfs.sh2整体启动/停止 YARN
start-yarn.sh/stop-yarn.sh2各个服务组件逐一启动/停止 1分别启动/停止 HDFS 组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode2启动/停止 YARN
yarn --daemon start/stop resourcemanager/nodemanager3.2.9 编写 Hadoop 集群常用脚本 1Hadoop 集群启停脚本包含 HDFSYarnHistoryservermyhadoop.sh
[atguiguhadoop102 ~]$ cd /home/atguigu/bin
[atguiguhadoop102 bin]$ vim myhadoop.sh➢ 输入如下内容
#!/bin/bash
if [ $# -lt 1 ]
thenecho No Args Input...exit ;
fi
case $1 in
start)echo 启动 hadoop 集群 echo --------------- 启动 hdfs ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/start-dfs.shecho --------------- 启动 yarn ---------------ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/start-yarn.shecho --------------- 启动 historyserver ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/bin/mapred --daemon start
historyserver
;;
stop)echo 关闭 hadoop 集群 echo --------------- 关闭 historyserver ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/bin/mapred --daemon stop
historyserverecho --------------- 关闭 yarn ---------------ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.shecho --------------- 关闭 hdfs ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
;;
*)echo Input Args Error...
;;
esac➢ 保存后退出然后赋予脚本执行权限
[atguiguhadoop102 bin]$ chmod x myhadoop.sh2查看三台服务器 Java 进程脚本jpsall
[atguiguhadoop102 ~]$ cd /home/atguigu/bin
[atguiguhadoop102 bin]$ vim jpsall➢ 输入如下内容
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
doecho $host ssh $host jps
done➢ 保存后退出然后赋予脚本执行权限
[atguiguhadoop102 bin]$ chmod x jpsall3分发/home/atguigu/bin 目录保证自定义脚本在三台机器上都可以使用
[atguiguhadoop102 ~]$ xsync /home/atguigu/bin/3.2.10 常用端口号说明 3.2.11 集群时间同步
如果服务器在公网环境能连接外网可以不采用集群时间同步因为服务器会定期 和公网时间进行校准 如果服务器在内网环境必须要配置集群时间同步否则时间久了会产生时间偏差 导致集群执行任务时间不同步。 2时间服务器配置必须 root 用户 1查看所有节点 ntpd 服务状态和开机自启动状态
[atguiguhadoop102 ~]$ sudo systemctl status ntpd
[atguiguhadoop102 ~]$ sudo systemctl start ntpd
[atguiguhadoop102 ~]$ sudo systemctl is-enabled ntpd2修改 hadoop102 的 ntp.conf 配置文件
[atguiguhadoop102 ~]$ sudo vim /etc/ntp.conf修改内容如下 a修改 1授权 192.168.10.0-192.168.10.255 网段上的所有机器可以从这台机器上查 询和同步时间
#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap为 restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
b修改 2集群在局域网中不使用其他互联网上的时间
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 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 iburstc添加 3当该节点丢失网络连接依然可以采用本地时间作为时间服务器为集群中 的其他节点提供时间同步
server 127.127.1.0
fudge 127.127.1.0 stratum 103修改 hadoop102 的/etc/sysconfig/ntpd 文件
[atguiguhadoop102 ~]$ sudo vim /etc/sysconfig/ntpd增加内容如下让硬件时间与系统时间一起同步
SYNC_HWCLOCKyes4重新启动 ntpd 服务
[atguiguhadoop102 ~]$ sudo systemctl start ntpd5设置 ntpd 服务开机启动
[atguiguhadoop102 ~]$ sudo systemctl enable ntpd3其他机器配置必须 root 用户 1关闭所有节点上 ntp 服务和自启动
[atguiguhadoop103 ~]$ sudo systemctl stop ntpd
[atguiguhadoop103 ~]$ sudo systemctl disable ntpd
[atguiguhadoop104 ~]$ sudo systemctl stop ntpd
[atguiguhadoop104 ~]$ sudo systemctl disable ntpd2在其他机器配置 1 分钟与时间服务器同步一次
[atguiguhadoop103 ~]$ sudo crontab -e编写定时任务如下
*/1 * * * * /usr/sbin/ntpdate hadoop1023修改任意机器时间
[atguiguhadoop103 ~]$ sudo date -s 2021-9-11 11:11:1141 分钟后查看机器是否与时间服务器同步
[atguiguhadoop103 ~]$ sudo date第 4 章 常见错误及解决方案
1防火墙没关闭、或者没有启动 YARN INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032 2主机名称配置错误 3IP 地址配置错误 4ssh 没有配置好 5root 用户和 atguigu 两个用户启动集群不统一 6配置文件修改不细心 7不识别主机名称
java.net.UnknownHostException: hadoop102: hadoop102at
java.net.InetAddress.getLocalHost(InetAddress.java:1475)at
org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(Job
Submitter.java:146)at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)at java.security.AccessController.doPrivileged(Native
Method)
at javax.security.auth.Subject.doAs(Subject.java:415)解决办法 1在/etc/hosts 文件中添加 192.168.10.102 hadoop102 2主机名称不要起 hadoop hadoop000 等特殊名称 8DataNode 和 NameNode 进程同时只能工作一个。 9执行命令不生效粘贴 Word 中命令时遇到-和长–没区分开。导致命令失效 解决办法尽量不要粘贴 Word 中代码。 10jps 发现进程已经没有但是重新启动集群提示进程已经开启。 原因是在 Linux 的根目录下/tmp 目录中存在启动的进程临时文件将集群相关进程删 除掉再重新启动集群。 11jps 不生效 原因全局变量 hadoop java 没有生效。解决办法需要 source /etc/profile 文件。 128088 端口连接不上 [atguiguhadoop102 桌面]$ cat /etc/hosts 注释掉如下代码 #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 hadoop102 文章转载自: http://www.morning.phlwj.cn.gov.cn.phlwj.cn http://www.morning.mfmx.cn.gov.cn.mfmx.cn http://www.morning.zxybw.cn.gov.cn.zxybw.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.bxrlt.cn.gov.cn.bxrlt.cn http://www.morning.wrlxt.cn.gov.cn.wrlxt.cn http://www.morning.rzczl.cn.gov.cn.rzczl.cn http://www.morning.mhfbp.cn.gov.cn.mhfbp.cn http://www.morning.c7498.cn.gov.cn.c7498.cn http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.rtsd.cn.gov.cn.rtsd.cn http://www.morning.gqjzp.cn.gov.cn.gqjzp.cn http://www.morning.ysmw.cn.gov.cn.ysmw.cn http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn http://www.morning.plfy.cn.gov.cn.plfy.cn http://www.morning.fgwzl.cn.gov.cn.fgwzl.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.rkqzx.cn.gov.cn.rkqzx.cn http://www.morning.lqynj.cn.gov.cn.lqynj.cn http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn http://www.morning.tmbtm.cn.gov.cn.tmbtm.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.kxsnp.cn.gov.cn.kxsnp.cn http://www.morning.drcnn.cn.gov.cn.drcnn.cn http://www.morning.hgtr.cn.gov.cn.hgtr.cn http://www.morning.fpqq.cn.gov.cn.fpqq.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn http://www.morning.pwwjs.cn.gov.cn.pwwjs.cn http://www.morning.lqynj.cn.gov.cn.lqynj.cn http://www.morning.mxlmn.cn.gov.cn.mxlmn.cn http://www.morning.qmzhy.cn.gov.cn.qmzhy.cn http://www.morning.gwjnm.cn.gov.cn.gwjnm.cn http://www.morning.xymkm.cn.gov.cn.xymkm.cn http://www.morning.pcrzf.cn.gov.cn.pcrzf.cn http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn http://www.morning.rgfx.cn.gov.cn.rgfx.cn http://www.morning.gydth.cn.gov.cn.gydth.cn http://www.morning.dygqq.cn.gov.cn.dygqq.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.prmbn.cn.gov.cn.prmbn.cn http://www.morning.nqbcj.cn.gov.cn.nqbcj.cn http://www.morning.zkpwk.cn.gov.cn.zkpwk.cn http://www.morning.qxmpp.cn.gov.cn.qxmpp.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.nwnbq.cn.gov.cn.nwnbq.cn http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn http://www.morning.syfty.cn.gov.cn.syfty.cn http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn http://www.morning.ymqfx.cn.gov.cn.ymqfx.cn http://www.morning.qgfy.cn.gov.cn.qgfy.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn http://www.morning.wrlxt.cn.gov.cn.wrlxt.cn http://www.morning.rwls.cn.gov.cn.rwls.cn http://www.morning.jfqpc.cn.gov.cn.jfqpc.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.sgtq.cn.gov.cn.sgtq.cn http://www.morning.brxzt.cn.gov.cn.brxzt.cn http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn http://www.morning.zsfooo.com.gov.cn.zsfooo.com http://www.morning.rjkfj.cn.gov.cn.rjkfj.cn http://www.morning.sqtsl.cn.gov.cn.sqtsl.cn http://www.morning.wlxfj.cn.gov.cn.wlxfj.cn http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn http://www.morning.krhkn.cn.gov.cn.krhkn.cn http://www.morning.yqhdy.cn.gov.cn.yqhdy.cn http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn http://www.morning.cctgww.cn.gov.cn.cctgww.cn