广州网站制作服务,网站开发列表,网页制作兼职,3000款免费软件app下载资料来源#xff1a;尚硅谷-Hadoop
一、Hadoop 概述
1.1 Hadoop 是什么
1#xff09;Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
2#xff09;主要解决#xff1a;海量数据的存储和海量数据的分析计算问题。
3#xff09;广义上来说#xff0c;Hadoop…资料来源尚硅谷-Hadoop
一、Hadoop 概述
1.1 Hadoop 是什么
1Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
2主要解决海量数据的存储和海量数据的分析计算问题。
3广义上来说Hadoop通常是指一个更广泛的概念——Hadoop生态圈。 1.2 Hadoop 发展历史
1Hadoop创始人Doug Cutting为了实现与Google类似的全文搜索功能在Lucene框架基础上进行优化升级查询引擎和索引引擎。
22001年年底Lucene成为Apache基金会的一个子项目。
3对于海量数据的场景Lucene框架面对与Google同样的困难存储海量数据困难检索海量速度慢。
4学习和模仿Google解决这些问题的办法 微型版Nutch。
5可以说Google是Hadoop的思想之源Google在大数据方面的三篇论文
GFS ---HDFSMap-Reduce ---MRBigTable ---HBase
62003-2004年Google公开了部分GFS和MapReduce思想的细节以此为基础Doug Cutting等人用了2年业余时间实现了DFS和MapReduce机制使Nutch性能飙升。
72005 年Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。
82006 年 3 月份Map-Reduce和Nutch Distributed File SystemNDFS分别被纳入到 Hadoop 项目中Hadoop就此正式诞生标志着大数据时代来临。
9名字来源于Doug Cutting儿子的玩具大象Hadoop的logo
1.3 Hadoop 三大发行版本
Hadoop 三大发行版本Apache、Cloudera、Hortonworks。
Apache 版本最原始最基础的版本对于入门学习最好。2006Cloudera 内部集成了很多大数据框架对应产品 CDH。2008Hortonworks 文档较好对应产品 HDP。2011
Hortonworks 现在已经被 Cloudera 公司收购推出新的品牌 CDP。 Apache Hadoop
官网地址Apache Hadoop
下载地址Apache Hadoop
1.4 Hadoop 优势4 高
优势
高可靠性高扩展性高效性高容错性
1高可靠性Hadoop底层维护多个数据副本所以即使Hadoop某个计算元素或存储出现故障也不会导致数据的丢失。 2高扩展性在集群间分配任务数据可方便的扩展数以千计的节点。 3高效性在MapReduce的思想下Hadoop是并行工作的以加快任务处理速度。 4高容错性能够自动将失败的任务重新分配。 1.5 Hadoop 组成
Hadoop1.x、2.x、3.x区别 在Hadoop1.x时代 Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度耦合性较大。
在Hadoop2.x时代增加了Yarn。Yarn只负责资源的调度MapReduce只负责运算。
Hadoop3.x在组成上没有变化。
1.5.1 HDFS架构概述
Hadoop Distributed File System简称 HDFS是一个分布式文件系统。
HDFS架构概述
1NameNode(nn)存储文件的元数据如文件名文件目录结构文件属性生成时间、副本数、文件权限以及每个文件的块列表和块所在的DataNode等。
2DataNode(dn)在本地文件系统存储文件块数据以及块数据的校验和。
3Secondary NameNode(2nn)每隔一段时间对NameNode元数据备份。 1.5.2 YARN 架构概述
Yet Another Resource Negotiator 简称 YARN 另一种资源协调者是Hadoop的资源管理器
YARN架构概述 1ResourceManagerRM整个集群资源内存、CPU等的老大
2NodeManagerNM单个节点服务器资源老大
3ApplicationMasterAM单个任务运行的老大
4Container容器相当于一台独立的服务器里面封装了任务运行所需要的资源如内存、CPU、磁盘、网络等。
说明1客户端可以有多个
说明2集群上可以运行多个ApplicationMaster
说明3每个NodeManager上可以有多个Container
1.5.3 MapReduce 架构概述
MapReduce 将计算过程分为两个阶段Map 和 Reduce
1Map 阶段并行处理输入数据
2Reduce 阶段对Map结果进行汇总 1.5.4 HDFS、YARN、MapReduce 三者关系 1.6 大数据技术生态体系 图中涉及的技术名词解释如下
1SqoopSqoop 是一款开源的工具主要用于在Hadoop、Hive与传统的数据库间进行数据的传递可以将一个关系型数据库例如 MySQLOracle 等中的数据导进到Hadoop的 HDFS中也可以将 HDFS 的数据导进到关系型数据库中。
2FlumeFlume 是一个高可用的高可靠的分布式的海量日志采集、聚合和传输的系统。Flume 支持在日志系统中定制各类数据发送方用于收集数据
3KafkaKafka 是一种高吞吐量的分布式发布订阅消息系统
4SparkSpark 是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
5FlinkFlink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
6OozieOozie 是一个管理 Hadoop 作业job的工作流程调度管理系统。
7HbaseHBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库它是一个适合于非结构化数据存储的数据库。
8HiveHive 是基于 Hadoop 的一个数据仓库工具可以将结构化的数据文件映射为一张数据库表并提供简单的 SQL 查询功能可以将 SQL 语句转换为 MapReduce 任务进行运行。其优点是学习成本低可以通过类 SQL 语句快速实现简单的 MapReduce 统计不必开发专门的 MapReduce 应用十分适合数据仓库的统计分析。
9ZooKeeper它是一个针对大型分布式系统的可靠协调系统提供的功能包括配置维护、名字服务、分布式同步、组服务等。
1.7 推荐系统框架图 二、Hadoop 运行环境搭建
2.1 模板虚拟机环境准备
0安装模板虚拟机IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G
配置IP
1修改克隆虚拟机的静态 IP
[roothadoop100 ~]# vim /etc/sysconfig/network-scripts/ifcfgens33DEVICEens33
TYPEEthernet
ONBOOTyes
BOOTPROTOstatic
NAMEens33IPADDR192.168.10.100
PREFIX24
GATEWAY192.168.10.2
DNS1192.168.10.2
2查看 Linux 虚拟机的虚拟网络编辑器编辑-虚拟网络编辑器-VMnet8 3查看 Windows 系统适配器 VMware Network Adapter VMnet8 的 IP 地址 4保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和 Windows 系统VM8网络IP地址相同。
修改主机名
1、修改主机名称
vim /etc/hostnamehadoop100
2、配置 Linux 克隆机主机名称映射 hosts 文件
打开/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 hadoop108修改 windows 的主机映射文件hosts 文件
C:\Windows\System32\drivers\etc 路径 hosts 文件
1hadoop100 虚拟机配置要求如下
使用 yum 安装需要虚拟机可以正常上网yum 安装前可以先测试下虚拟机联网情况安装 epel-release注意如果 Linux 安装的是最小系统版还需要安装 net-tool、vim yum install -y epel-releaseyum install -y net-toolsyum install -y vim
2关闭防火墙关闭防火墙开机自启
systemctl stop firewalld
systemctl disable firewalld.service
注意在企业开发时通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙
3创建用户并修改用户的密码
[roothadoop100 ~]# useradd xiang
[roothadoop100 ~]# passwd xiang
4配置用户具有root权限方便后期加sudo执行root权限的命令
修改/etc/sudoers 文件在%wheel 这行下面添加一行如下所示
xiang ALL(ALL) NOPASSWD:ALL 5在/opt 目录下创建文件夹并修改所属主和所属组
在/opt 目录下创建 module、software 文件夹修改 module、software 文件夹的所有者和所属组均为使用用户
[roothadoop100 ~]# chown xiang:xiang /opt/module
[roothadoop100 ~]# chown xiang:xiang /opt/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重启虚拟机
2.2 克隆虚拟机
1利用模板机 hadoop100克隆三台虚拟机hadoop102 hadoop103 hadoop104
注意克隆时要先关闭 hadoop100
2修改克隆机IP
3修改克隆机主机名
4重启克隆机
2.3 在 hadoop102 安装JDK
1卸载现有JDK。注意安装 JDK 前一定确保提前删除了虚拟机自带的 JDK
2用 XShell 传输工具将 JDK 导入到 opt 目录下面的 software 文件夹下面
3在 Linux 系统下的 opt 目录中查看软件包是否导入成功
4解压 JDK 到/opt/module 目录下 5配置 JDK 环境变量
1、新建/etc/profile.d/my_env.sh 文件
# JAVA_HOME
export JAVA_HOME/opt/module/jdk1.8.0_401
PATH$PATH:$JAVA_HOME/bin2、保存后退出
3、source /etc/profile让新的环境变量PAT 生效
4、检查JDK是否安装成功 2.4 在 hadoop102 安装 Hadoop
Hadoop 下载地址Index of /dist/hadoop/common
1用 XShell 文件传输工具将 hadoop-3.1.3.tar.gz 导入到 opt 目录下面的 software 文件夹下面
2进入到 Hadoop 安装包路径下
3解压安装文件到/opt/module 下面
4查看是否解压成功 5将 Hadoop 添加到环境变量
1、打开/etc/profile.d/my_env.sh 文件在 my_env.sh 文件末尾添加如下内容
#HADOOP_HOME
export HADOOP_HOME/opt/module/hadoop-3.3.6
PATH$PATH:$HADOOP_HOME/bin
PATH$PATH:$HADOOP_HOME/sbin
2、保存并退出
3、让修改后的文件生效 source /etc/profile
4、测试是否安装成功 2.5 Hadoop 目录结构
1查看 Hadoop 目录结构
drwxr-xr-x. 2 xiang xiang 203 6月 18 2023 bin
drwxr-xr-x. 3 xiang xiang 20 6月 18 2023 etc
drwxr-xr-x. 2 xiang xiang 106 6月 18 2023 include
drwxr-xr-x. 3 xiang xiang 20 6月 18 2023 lib
drwxr-xr-x. 4 xiang xiang 288 6月 18 2023 libexec
-rw-rw-r--. 1 xiang xiang 24276 6月 14 2023 LICENSE-binary
drwxr-xr-x. 2 xiang xiang 4096 6月 18 2023 licenses-binary
-rw-rw-r--. 1 xiang xiang 15217 6月 10 2023 LICENSE.txt
-rw-rw-r--. 1 xiang xiang 29473 6月 10 2023 NOTICE-binary
-rw-rw-r--. 1 xiang xiang 1541 6月 10 2023 NOTICE.txt
-rw-rw-r--. 1 xiang xiang 175 6月 10 2023 README.txt
drwxr-xr-x. 3 xiang xiang 4096 6月 18 2023 sbin
drwxr-xr-x. 4 xiang xiang 31 6月 18 2023 share2重要目录
bin 目录存放对 Hadoop 相关服务hdfsyarnmapred进行操作的脚本etc 目录Hadoop 的配置文件目录存放 Hadoop 的配置文件lib 目录存放 Hadoop 的本地库对数据进行压缩解压缩功能sbin 目录存放启动或停止 Hadoop 相关服务的脚本share 目录存放 Hadoop 的依赖 jar 包、文档、和官方案例
三、Hadoop运行模式
1Hadoop官方网站http://hadoop.apache.org/
2Hadoop运行模式包括本地模式、伪分布式模式以及完全分布式模式。
本地模式单机运行只是用来演示一下官方案例。生产环境不用。伪分布式模式也是单机运行但是具备Hadoop集群的所有功能一台服务器模拟一个分布式的环境。可用来测试生产环境不用。完全分布式模式多台服务器组成分布式环境。生产环境使用。
3.1 本地运行模式官方 WordCount
1在hadoop文件下面创建一个 wcinput 文件夹
2在 wcinput 文件下创建一个 word.txt 文件
3编辑 word.txt 文件
hadoop yarn
hadoop mapreduce
atguigu
atguigu4回到 Hadoop 目录
5执行程序 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount wcinput wcoutput
6查看结果 3.2 完全分布式运行模式开发重点
分析
1准备 3 台客户机关闭防火墙、静态 IP、主机名称
2安装 JDK
3配置环境变量
4安装 Hadoop
5配置环境变量
6配置集群
7单点启动
8配置 ssh
9启动集群并测试集群
3.2.1 虚拟机准备
详见 2.1、2.2 两节。
3.2.2 编写集群分发脚本 xsync
1scpsecure copy安全拷贝
1scp 定义
scp 可以实现服务器与服务器之间的数据拷贝。from server1 to server2
2基本语法
scp -r $pdir/$fname $user$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户主机:目的地路径/名称
2rsync 远程同步工具
rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别用 rsync 做文件的复制要比 scp 的速度快rsync 只对差异文件做更新。scp 是把所有文件都复制过去。
1基本语法
rsync -av $pdir/$fname $user$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户主机:目的地路径/名称
-a 归档拷贝-v 显示复制过程
3xsync 集群分发脚本
需求循环复制文件到所有节点的相同目录下
脚本实现:
a在/home/xiang/bin 目录下创建 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. 获取父目录pdir$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname$(basename $file)ssh $host mkdir -p $pdirrsync -av $pdir/$fname $host:$pdirelseecho $file does not exists! fidone
done3.2.3 SSH 无密登录配置
1 ssh基本语法
ssh 另一台电脑的IP地址
2无密钥配置
1免密登录原理 2生成公钥和私钥
[xianghadoop102 .ssh]$ ssh-keygen -t rsa
然后敲三个回车就会生成两个文件 id_rsa私钥、id_rsa.pub公钥
3将公钥拷贝到要免密登录的目标机器上
[xianghadoop102 .ssh]$ ssh-copy-id hadoop102
[xianghadoop102 .ssh]$ ssh-copy-id hadoop103
[xianghadoop102 .ssh]$ ssh-copy-id hadoop104
注意
还需要在 hadoop103、hadoop104上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、hadoop104 服务器上。
还需要在 hadoop102 上采用 root 账号配置一下无密登录到 hadoop102、hadoop103、hadoop104
3.ssh文件功能解释
known_hosts 记录 ssh 访问过计算机的公钥public keyid_rsa 生成的私钥id_rsa.pub 生成的公钥authorized_keys 存放授权过的无密登录服务器公钥
3.2.4 集群配置
1集群部署规划
注意
NameNode 和 SecondaryNameNode 不要安装在同一台服务器ResourceManager 也很消耗内存不要和 NameNode、SecondaryNameNode 配置在同一台机器上。 2配置文件说明
Hadoop 配置文件分两类默认配置文件和自定义配置文件只有用户想修改某一默认配置值时才需要修改自定义配置文件更改相应属性值。
1默认配置文件 2自定义配置文件
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径上用户可以根据项目需求重新进行修改配置。
3配置集群
1核心配置文件
配置 core-site.xm
configuration!-- 指定 NameNode 的地址 --propertynamefs.defaultFS/namevaluehdfs://hadoop102:8020/value/property!-- 指定 hadoop 数据的存储目录 --propertynamehadoop.tmp.dir/namevalue/opt/module/hadoop-3.3.6/data/value/property!-- 配置 HDFS 网页登录使用的静态用户 --propertynamehadoop.http.staticuser.user/namevaluexiang/value/property
/configuration2HDFS 配置文件
配置 hdfs-site.xml
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
configuration!-- Site specific YARN configuration properties --!-- 指定 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
configuration!-- 指定 MapReduce 程序运行在 Yarn 上 --propertynamemapreduce.framework.name/namevalueyarn/value/property/configuration4在集群上分发配置好的 Hadoop 配置文件
xsync /opt/module/hadoop-3.3.6/etc/hadoop/
3.2.5 启动集群
1配置 workers
vim /opt/module/hadoop-3.3.6/etc/hadoop/workershadoop102
hadoop103
hadoop104
注意该文件中添加的内容结尾不允许有空格文件中不允许有空行。
同步所有节点配置文件
xsync /opt/module/hadoop-3.3.6/etc
2启动集群
1如果集群是第一次启动需要在 hadoop102 节点格式化 NameNode
注意格式化 NameNode会产生新的集群 id导致 NameNode 和 DataNode 的集群 id 不一致集群找不到已往数据。如果集群在运行过程中报错需要重新格式化 NameNode 的话一定要先停止 namenode 和 datanode 进程并且要删除所有机器的 data 和 logs 目录然后再进行格式化。
[xianghadoop102 hadoop-3.3.6]$ hdfs namenode -format
2启动 HDFS
[xianghadoop102 hadoop-3.3.6]$ sbin/start-dfs.sh
3在配置了 ResourceManager 的节点hadoop103启动 YARN
[xianghadoop103 hadoop-3.3.6]$ sbin/start-yarn.sh
4Web 端查看
a查看 HDFS 上存储的数据信息http://hadoop102:9870
b查看 YARN 上运行的 Job 信息http://hadoop103:8088
3集群基本测试
1上传文件到集群
上传小文件
[xianghadoop102 ~]$ hadoop fs -mkdir /input
[xianghadoop102 ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input
上传大文件
[xianghadoop102 ~]$ hadoop fs -put /opt/software/jdk-8u401-linux-x64.tar.gz /
2上传文件后查看文件存放在什么位置
查看 HDFS 文件存储路径
cd /opt/module/hadoop-3.3.6/data/dfs/data/current/BP-322709393-192.168.10.102-1707663797010/current/finalized/查看 HDFS 在磁盘存储文件内容 (3执行 wordcount 程序
[xianghadoop102 hadoop-3.3.6]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output3.2.6 配置历史服务器
为了查看程序的历史运行情况需要配置一下历史服务器。具体配置步骤如下
1配置 mapred-site.xml !-- 历史服务器端地址 --propertynamemapreduce.jobhistory.address/namevaluehadoop102:10020/value/property!-- 历史服务器 web 端地址 --propertynamemapreduce.jobhistory.webapp.address/namevaluehadoop102:19888/value/property2分发配置
[xianghadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
3在 hadoop102 启动历史服务器
[xianghadoop102 hadoop]$ mapred --daemon start historyserver
4查看历史服务器是否启动 5查看 JobHistory http://hadoop102:19888/jobhistory
3.2.7 配置日志的聚集
日志聚集概念应用运行完成以后将程序运行日志信息上传到HDFS系统上。 日志聚集功能好处可以方便的查看到程序运行详情方便开发调试。
注意开启日志聚集功能需要重新启动 NodeManager 、ResourceManager 和HistoryServer。
开启日志聚集功能具体步骤如下
1配置 yarn-site.xml !-- 开启日志聚集功能 --propertynameyarn.log-aggregation-enable/namevaluetrue/value/property!-- 设置日志聚集服务器地址 --propertynameyarn.log.server.url/namevaluehttp://hadoop102:19888/jobhistory/logs/value/property!-- 设置日志保留时间为 7 天 --propertynameyarn.log-aggregation.retain-seconds/namevalue604800/value/property2分发配置
[xianghadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml
3关闭 NodeManager 、ResourceManager 和 HistoryServer
[xianghadoop103 hadoop-3.3.6]$ sbin/stop-yarn.sh[xianghadoop102 hadoop-3.3.6]$ mapred --daemon stophistoryserver
4启动 NodeManager 、ResourceManage 和 HistoryServer
[xianghadoop103 ~]$ start-yarn.sh[xianghadoop102 ~]$ mapred --daemon start historyserver
5删除 HDFS 上已经存在的输出文件
[xianghadoop102 ~]$ hadoop fs -rm -r /output
6执行 WordCount 程序
7查看日志
1历史服务器地址http://hadoop102:19888/jobhistory
2历史任务列表
3查看任务运行日志
4运行日志详情 3.2.8 集群启动/停止方式总结
1各个模块分开启动/停止
配置 ssh 是前提
1整体启动/停止HDFS start-dfs.shstop-dfs.sh
2整体启动/停止 YARN
start-yarn.sh
stop-yarn.sh
2各个服务组件逐一启动/停止
1分别启动/停 HDFS 组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
2启动/停止 YARN
yarn --daemon start/stop resourcemanager/nodemanager
3.2.9 编写 Hadoop 集群常用脚本
1Hadoop 集群启停脚本
myhadoop.sh包含 HDFSYarnHistoryserver
#!/bin/bash
if [ $# -lt 1 ]
thenecho No Args Input...
exit ;
ficase $1 instart)echo 启动 hadoop 集群 echo --------------- 启动 hdfs ---------------ssh hadoop102 /opt/module/hadoop-3.3.6/sbin/start-dfs.shecho --------------- 启动 yarn ---------------ssh hadoop103 /opt/module/hadoop-3.3.6/sbin/start-yarn.shecho --------------- 启动 historyserver ---------------ssh hadoop102 /opt/module/hadoop-3.3.6/bin/mapred --daemon start historyserver;;stop)echo 关闭 hadoop 集群 echo --------------- 关闭 historyserver ---------------ssh hadoop102 /opt/module/hadoop-3.3.6/bin/mapred --daemon stop historyserverecho --------------- 关闭 yarn ---------------ssh hadoop103 /opt/module/hadoop-3.3.6/sbin/stop-yarn.shecho --------------- 关闭 hdfs ---------------ssh hadoop102 /opt/module/hadoop-3.3.6/sbin/stop-dfs.sh ;;shutdown)echo 关闭 hadoop 集群 及主机 /home/xiang/bin/myhadoop.sh stopecho 关闭主机 ssh hadoop102 sudo shutdownssh hadoop103 sudo shutdownssh hadoop104 sudo shutdown;;*)echo Input Args Error...;;
esac2查看三台服务器 Java 进程脚本
jpsall
#!/bin/bashfor host in hadoop102 hadoop103 hadoop104
doecho $host ssh $host jps
done3分发/home/atguigu/bin 目录
保证自定义脚本在三台机器上都可以使用
[xianghadoop102 ~]$ xsync /home/xiang/bin/
3.2.10 常用端口号说明 3.2.11 集群时间同步
如果服务器在公网环境能连接外网可以不采用集群时间同步因为服务器会定期和公网时间进行校准
如果服务器在内网环境必须要配置集群时间同步否则时间久了会产生时间偏差导致集群执行任务时间不同步。
1需求
找一个机器作为时间服务器所有的机器与这台集群时间进行定时的同步生产环境根据任务对时间的准确程度要求周期同步。
测试环境为了尽快看到效果采用 1 分钟同步一次。 2时间服务器配置必须 root 用户
1查看所有节点 ntpd 服务状态和开机自启动状态
[xianghadoop102 ~]$ sudo systemctl status ntpd
[xianghadoop102 ~]$ sudo systemctl start ntpd
[xianghadoop102 ~]$ sudo systemctl is-enabled ntpd
2修改 hadoop102 的 ntp.conf 配置文件
[xianghadoop102 ~]$ sudo vim /etc/ntp.conf# 授权 192.168.10.0-192.168.10.255 网段上的所有机器可以从这台机器上查询和同步时间
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap# 集群在局域网中不使用其他互联网上的时间
#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
3修改 hadoop102 的/etc/sysconfig/ntpd 文件
# 让硬件时间与系统时间一起同步
SYNC_HWCLOCKyes
4重新启动 ntpd 服务
[xianghadoop102 ~]$ sudo systemctl start ntpd
5设置 ntpd 服务开机启动
[xianghadoop102 ~]$ sudo systemctl enable ntpd
3其他机器配置必须 root 用户
1关闭所有节点上 ntp 服务和自启动
[xianghadoop103 ~]$ sudo systemctl stop ntpd
[xianghadoop103 ~]$ sudo systemctl disable ntpd[xianghadoop104 ~]$ sudo systemctl stop ntpd
[xianghadoop104 ~]$ sudo systemctl disable ntpd
2在其他机器配置 1 分钟与时间服务器同步一次
[xianghadoop103 ~]$ sudo crontab -e*/1 * * * * /usr/sbin/ntpdate hadoop102
3修改任意机器时间
[xianghadoop103 ~]$ sudo date -s 2024-01-11 11:11:11
41 分钟后查看机器是否与时间服务器同步 四、常见错误及解决方案
1防火墙没关闭、或者没有启动 YARN
2主机名称配置错误
3IP 地址配置错误
4ssh 没有配置好
5root 用户和 atguigu 两个用户启动集群不统一
6配置文件修改不细心
7不识别主机名称
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 文件。