一、 大数据简介
1. 大数据的定义
⼤数据是指⽆法在⼀定时间范围内⽤常规软件⼯具进⾏捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策⼒、洞察发现⼒和流程优化能⼒的海量、⾼增⻓率和多样化的信息资产。
2. 大数据的特点
⼤数据的特点可以⽤ IBM 曾经提出的 “5V” 来描述,如下:
-
大量
采集、存储和计算的数据量都⾮常⼤。大数据领域数据量基本上以PB为最小单位,而PB级数据量有多⼤?是怎样的⼀个概念?
假如⼿机播放MP3的速度为平均每分钟1MB,⽽1⾸歌曲的平均时⻓为4分钟,那么1PB存量的歌 曲可以连续播放2000年。
1PB 也相当于50%的全美学术研究图书馆藏书咨询内容。
基于IDC的报告预测,从2013年到2020年,全球数据量会从4.4ZB猛增到44ZB!⽽到了2025 年,全球会有163ZB的数据量!根据存储单位换算,1ZB = 1024 * 1024PB,所以全球的数据量已经⼤到爆了!⽽传统的关系型数据库根本处理不了如此海量的数据!
-
高速
在⼤数据时代,数据的创建、存储、分析都要求被⾼速处理,⽐如电商⽹站的个性化推荐尽可能要 求实时完成推荐,这也是⼤数据区别于传统数据挖掘的显著特征。
-
多样
数据形式和来源多样化。包括结构化、半结构化和⾮结构化数据,具体表现为⽹络⽇志、⾳频、视频、图⽚、地理位置信息等等,多类型的数据对数据的处理能⼒提出了更⾼的要求。
-
真实
确保数据的真实性,才能保证数据分析的正确性
-
低价值
数据价值密度相对较低,或者说是浪⾥淘沙却⼜弥⾜珍贵。互联⽹发展催⽣了⼤量数据,信息海 量,但价值密度较低,如何结合业务逻辑并通过强⼤的机器算法来挖掘数据价值,是⼤数据时代最 需要解决的问题,也是⼀个有难度的课题。
3. 大数据的应用场景
随着⼤数据的发展,⼤数据技术已经⼴泛应⽤在众多⾏业,⽐如仓储物流、电商零售、汽⻋、电信、⽣物医学、⼈⼯智能、智慧城市等等领域,包括在疫情防控战中,⼤数据技术也发挥了重要的作⽤。
-
仓储物流 -
电商零售 -
个性推荐 -
“双十一购物节”实时销售额大屏 -
汽车无人驾驶领域 -
电信 -
生物医学 -
人工智能 -
智慧城市
二、 Hadoop简介
1. 什么是Hadoop
Hadoop 是⼀个适合⼤数据的分布式存储和计算平台。
从狭义上讲: Hadoop 就是一个框架平台,它包括以下三部分:
-
HDFS:分布式文件系统
-
Map Reduce:分布式离线计算框架。负责计算
-
Yarn:分布式资源调度框架,负责资源调度
由此我们可以得出,狭义上的Hadoop解决的是海量数据的存储和离线计算
从广义上讲: Hadoop不仅仅包括狭义上的内容,还包括其他辅助框架,实际上指的是一个大数据生态圈,例如:
-
Flume:日志数据采集 -
Sqoop:关系型数据库数据采集(ETL工具 -
Hive:数据仓库工具 -
Kafka:高吞吐消息中间件 -
HBase:海量列式非关系型数据库
2. Hadoop的特点
3. Hadoop的发行版本
⽬前Hadoop发⾏版⾮常多,在企业中主要⽤到的三个版本分别是:Apache Hadoop版本(最原始的,所有发⾏版均基于这个版 本进⾏改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)、 Hortonworks版本(Hortonworks Data Platform,简称“HDP”)。
-
Apache Hadoop 原始版本
官⽹地址:http://hadoop.apache.org/
优点:拥有全世界的开源贡献,代码更新版本⽐较快
缺点:版本的升级,版本的维护,以及版本之间的兼容性,学习⾮常⽅便
Apache所有软件的下载地址(包括各种历史版本):http://archive.apache.org/dist/
-
软件收费版本ClouderaManager CDH版本 --⽣产环境使⽤
官⽹地址:https://www.cloudera.com/
Cloudera主要是美国⼀家⼤数据公司在Apache开源Hadoop的版本上,通过⾃⼰公司内部的各种 补丁,实现版本之间的稳定运⾏,⼤数据⽣态圈的各个版本的软件都提供了对应的版本,解决了版 本的升级困难,版本兼容性等各种问题,⽣产环境强烈推荐使⽤
-
免费开源版本HortonWorks HDP版本--⽣产环境使⽤
官⽹地址:https://hortonworks.com/
Hortonworks主要是雅⻁主导Hadoop开发的副总裁,带领 ⼆⼗⼏个核⼼成员成⽴Hortonworks,核⼼产品软件HDP(ambari),HDF免费开源,并且提供 ⼀整套的web管理界⾯,供我们可以通过web界⾯管理我们的集群状态
web管理界⾯软件HDF⽹ 址(http://ambari.apache.org/)
4. Apache Hadoop版本更迭
0.x 系列版本:Hadoop当中最早的⼀个开源版本,在此基础上演变⽽来的1.x以及2.x的版本
1.x 版本系列:Hadoop版本当中的第⼆代开源版本,主要修复0.x版本的⼀些bug等
2.x 版本系列:架构产⽣重⼤变化,引⼊了yarn平台等许多新特性
3.x 版本系列:EC技术、YARN的时间轴服务等新特性
5. Hadoop的优缺点
Hadoop的优点
-
Hadoop具有存储和处理数据能⼒的⾼可靠性。 -
Hadoop通过可⽤的计算机集群分配数据,完成存储和计算任务,这些集群可以⽅便地扩展到数以千计的节点中,具有⾼扩展性。 -
Hadoop能够在节点之间进⾏动态地移动数据,并保证各个节点的动态平衡,处理速度⾮常快,具有⾼效性。 -
Hadoop能够⾃动保存数据的多个副本,并且能够⾃动将失败的任务重新分配,具有⾼容错性。
Hadoop的缺点
-
Hadoop不适⽤于低延迟数据访问。 -
Hadoop不能⾼效存储⼤量⼩⽂件。 -
Hadoop不⽀持多⽤户写⼊并任意修改⽂件。
6. Apache Hadoop的重要组成
Hadoop=HDFS(分布式⽂件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架)+Common模块
6.1 HDFS
-
Hadoop Distribute File System,⼀个⾼可靠、⾼吞吐量的分布式⽂件系统
-
分而治之思想,数据切割、制作副本、分散储存
图中涉及到的角色:
-
NameNode(nn): 存储⽂件的元数据,⽐如⽂件名、⽂件⽬录结构、⽂件属性(⽣成时间、副本 数、⽂件权限),以及每个⽂件的块列表和块所在的DataNode等。 -
**SecondaryNameNode(2nn): **辅助NameNode更好的⼯作,⽤来监控HDFS状态的辅助后台程 序,每隔⼀段时间获取HDFS元数据快照。 -
DataNode(dn): 在本地⽂件系统存储⽂件块数据,以及块数据的校验
注: NN,2NN,DN这些既是⻆⾊名称,进程名称,代指电脑节点名称!
6.2 MapReduce
MapReduce计算 = Map阶段 + Reduce阶段
-
Map阶段就是“分”的阶段,负责并行处理输入数据
-
Reduce阶段就是“合”的阶段,对Map阶段结果进行汇总
从图中我们可以看出,MapReduce就是一个分布式的离线计算框架,将一个任务进行拆解,分散处理,最终汇总结果,做到一台机器处理不了,那就将任务拆解成多个任务,利用多台机器进行处理,最终汇总各台机器的处理结果。
6.3 Yarn
作业调度与集群资源管理的框架
图中涉及到的角色:
-
ResourceManager(rm): 处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资 源分配与调度; -
NodeManager(nm): 单个节点上的资源管理、处理来⾃ResourceManager的命令、处理来⾃ ApplicationMaster的命令; -
ApplicationMaster(am): 数据切分、为应⽤程序申请资源,并分配给内部任务、任务监控与容错。 -
Container: 对任务运⾏环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运 ⾏相关的信息。 -
ResourceManager是⽼⼤,NodeManager是⼩弟,ApplicationMaster是计算任务专员。
注: 和HDFS一样,这些角色既是⻆⾊名称,进程名称,也代指电脑节点名称!
6.4 Common
⽀持其他模块的⼯具模块(Configuration、RPC、序列化机制、⽇志操作)
三、 Hadoop集群搭建
-
软件和操作系统版本
-
Hadoop框架是采⽤Java语⾔编写,需要java环境(jvm) -
JDK版本:JDK8版本
-
-
Hadoop搭建方式
-
单机模式:单节点模式,⾮集群,⽣产不会使⽤这种⽅式 -
单机伪分布式模式:单节点,多线程模拟集群的效果,⽣产不会使⽤这种⽅式 -
完全分布式模式:多台节点,真正的分布式Hadoop集群的搭建(⽣产环境建议使⽤这种⽅式)
-
1. 虚拟机环境准备
-
三台虚拟机(静态IP,关闭防⽕墙,修改主机名,配置免密登录,集群时间同步)
-
在/opt⽬录下创建⽂件夹
# 软件安装包存放⽬录
mkdir -p /opt/lagou/software
# 软件安装⽬录
mkdir -p /opt/lagou/servers -
Hadoop下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/
Hadoop官⽹地址:
http://hadoop.apache.org/
2. 集群规划
框架 | linux121 | linux122 | linux123 |
---|---|---|---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode、DataNode |
YARN | NodeManager | NodeManager | NodeManager、ResourceManager |
3. 安装Hadoop
-
登录linux121节点;进⼊/opt/lagou/software,解压安装⽂件到/opt/lagou/servers
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers
-
添加Hadoop到环境变量 vim /etc/profile
# HADOOP_HOME
export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin -
使环境变量⽣效
source /etc/profile
-
验证hadoop
hadoop version
校验结果:
-
hadoop⽬录
上图中标注的目录解释:
1:bin⽬录:对Hadoop进⾏操作的相关命令,如hadoop,hdfs等
2:etc⽬录:Hadoop的配置⽂件⽬录,⼊hdfs-site.xml,core-site.xml等
3:lib⽬录:Hadoop本地库(解压缩的依赖)
4:sbin⽬录:存放的是Hadoop集群启动停⽌相关脚本,命令
5:share⽬录:Hadoop的⼀些jar,官⽅案例jar,⽂档等
4. 集群配置
Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置
-
HDFS集群配置
-
将JDK路径明确配置给HDFS(修改hadoop-env.sh) -
指定NameNode节点以及数据存储⽬录(修改core-site.xml) -
指定SecondaryNameNode节点(修改hdfs-site.xml) -
指定DataNode从节点(修改etc/hadoop/slaves⽂件,每个节点配置信息占⼀⾏)
-
-
MapReduce集群配置
-
将JDK路径明确配置给MapReduce(修改mapred-env.sh) -
指定MapReduce计算框架运⾏Yarn资源调度框架(修改mapred-site.xml)
-
-
Yarn集群配置
-
将JDK路径明确配置给Yarn(修改yarn-env.sh) -
指定ResourceManager⽼⼤节点所在计算机节点(修改yarn-site.xml) -
指定NodeManager节点(会通过slaves⽂件内容确定)
-
4.1 HDFS集群配置
-
进入配置文件目录
cd /opt/lagou/servers/hadoop-2.9.2/etc/hadoop
-
配置:hadoop-env.sh
将JDK路径明确配置给HDFS
vim hadoop-env.sh
# 增加以下内容
export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231 -
指定NameNode节点以及数据存储⽬录(修改core-site.xml)
官方默认配置:
https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/core-default.xml
官方默认hdfs的RPC端口号是 8020,这里改为9000
vim core-site.xml
# 增加以下内容
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux121:9000</value>
</property>
<!-- 指定Hadoop运⾏时产⽣⽂件的存储⽬录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/lagou/servers/hadoop-2.9.2/data/tmp</value>
</property> -
指定secondarynamenode节点(修改hdfs-site.xml)
官方默认配置:
https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
vim hdfs-site.xml
# 增加以下内容
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux123:50090</value>
</property>
<!--副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property> -
指定datanode从节点(修改slaves⽂件,每个节点配置信息占⼀⾏)
vim slaves
# 增加以下内容
linux121
linux122
linux123注:该⽂件中添加的内容结尾不允许有空格,⽂件中不允许有空⾏
4.2 MapReduce集群配置
-
指定MapReduce使⽤的jdk路径(修改mapred-env.sh)
vim mapred-env.sh
# 增加以下内容
export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231 -
指定MapReduce计算框架运⾏Yarn资源调度框架(修改mapred-site.xml)
官方默认配置:
https://hadoop.apache.org/docs/r2.9.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
# 复制一份mapred-site.xml.template并改名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
# 修改mapred-site.xml
vim mapred-site.xml
# 增加以下内容
<!-- 指定MR运⾏在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
4.3 Yarn集群配置
-
指定JDK路径
vim yarn-env.sh
# 增加以下内容
export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231 -
指定ResourceMnager的master节点信息(修改yarn-site.xml)
官方默认配置:
https://hadoop.apache.org/docs/r2.9.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
vim yarn-site.xml
# 增加以下内容
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux123</value>
</property>
<!-- Reducer获取数据的⽅式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> -
指定NodeManager节点
在HDFS配置时已经配置了slaves⽂件,此时无需配置
注意:
Hadoop安装⽬录所属⽤户和所属⽤户组信息,默认是501 dialout,⽽我们操作Hadoop集群的⽤户使⽤的是虚拟机的root⽤户
所以为了避免出现信息混乱,修改Hadoop安装⽬录所属⽤户和⽤户组!!
chown -R root:root /opt/lagou/servers/hadoop-2.9.2
4.4 分发配置
4.4.1 rsync 远程同步⼯具
-
rsync主要⽤于备份和镜像。具有速度快、避免复制相同内容和⽀持符号链接的优点。
-
rsync和scp区别:
-
rsync做⽂件的复制要⽐scp的速度快
-
rsync只对差异⽂件做更新。scp是把所有⽂ 件都复制过去
-
-
rsync基本语法
-
rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
-
命令 选项参数 要拷⻉的⽂件路径/名称 ⽬的⽤户@主机:⽬的路径/名称 -
选项参数说明 -
-r :递归 -
-v:显示复制过程 -
-l:拷⻉符号连接
-
-
rsync案例
-
三台虚拟机安装rsync (执⾏安装需要保证机器联⽹)
yum install -y rsync
-
把linux121机器上的/opt/lagou/software⽬录同步到linux122服务器的root⽤户下的/opt/⽬录
rsync -rvl /opt/lagou/software/root@linux122:/opt/lagou/software
-
4.4.2 集群分发脚本编写
-
需求:循环复制⽂件到集群所有节点的相同⽬录下
rsync命令原始拷⻉:
rsync -rvl /opt/module root@linux123:/opt/
-
期望脚本:脚本+要同步的⽂件名称
-
说明:在/usr/local/bin这个⽬录下存放的脚本,root⽤户可以在系统任何地⽅直接执⾏。
-
脚本实现
-
在/usr/local/bin⽬录下创建⽂件rsync-script
touch rsync-script
-
在⽂件中编写shell代码
vim rsync-script
#!/bin/bash
#1 获取命令输⼊参数的个数,如果个数为0,直接退出命令
paramnum=$#
if((paramnum==0)); then
echo no params;
exit;
fi
#2 根据传⼊参数获取⽂件名称
p1=$1
file_name=`basename $p1`
echo fname=$file_name
#3 获取输⼊参数的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取⽤户名称
user=`whoami`
#5 循环执⾏rsync
for((host=121; host<124; host++)); do
echo ------------------- linux$host --------------
rsync -rvl $pdir/$file_name $user@linux$host:$pdir
done命令细节说明:
-
basename 命令可取得文件的文件名,如:
basename /usr/local/bin/rsync-script
,则结果是rsync-script
-
dirname 命令可取得文件所在目录,如:
dirname /usr/local/bin/rsync-script
,则结果是/usr/local/bin
-
在脚本文件中要用 这对符号
``
获取命令的结果,然后才能赋值给变量 ,如:file_name=`basename $p1`
-
在以下脚本中,如果拷贝文件的时候,文件名不带路径,那么
dirname
命令得到的结果是.
,表示当前目录。可以在此命令基础上再加一条命令:cd -P
,表示进入物理路径,如:cd -P .
,此时会进入该目录中,然后通过pwd
打印出当前目录,即可获得该文件所在目录的路径,以下是一个例子:pdir=`cd -P $(dirname $p1); pwd`
-
-
-
修改脚本 rsync-script 的执行权限
chmod 777 rsync-script
-
调⽤脚本形式:rsync-script ⽂件名称
rsync-script /usr/local/bin/rsync-script
-
调⽤脚本分发Hadoop安装⽬录到其它节点
rsync-script /opt/lagou/servers/hadoop-2.9.2
5. 启动集群
注意: 如果集群是第⼀次启动,需要在Namenode所在节点格式化NameNode,⾮第⼀次不⽤执⾏格 式化Namenode操作!!
-
格式化命令:
hadoop namenode -format
-
格式化命令执⾏效果
-
格式化后创建的⽂件:
/opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name/current
5.1 单节点启动
-
在linux121上启动NameNode
[root@linux121 hadoop-2.9.2]$ hadoop-daemon.sh start namenode
[root@linux121 hadoop-2.9.2]$ jps
[root@linux121 hadoop-2.9.2]$ jps
3461 NameNode
3608 Jps -
在linux121、linux122以及linux123上分别启动DataNode
[root@linux121 hadoop-2.9.2]$ hadoop-daemon.sh start datanode
[root@linux121 hadoop-2.9.2]$ jps
3461 NameNode
3608 Jps
3561 DataNode[root@linux122 hadoop-2.9.2]$ hadoop-daemon.sh start datanode
[root@linux122 hadoop-2.9.2]$ jps
3190 DataNode
3279 Jps[root@linux123 hadoop-2.9.2]$ hadoop-daemon.sh start datanode
[root@linux123 hadoop-2.9.2]$ jps
3237 Jps
3163 DataNode -
web端查看Hdfs界⾯
查看HDFS集群正常节点:
-
Yarn集群单节点启动
[root@linux123 servers]# yarn-daemon.sh start resourcemanager
[root@linux123 servers]# yarn-daemon.sh start nodemanager
[root@linux123 servers]# jps
7881 ResourceManager
8166 NodeManager
8094 Jps[root@linux122 servers]# yarn-daemon.sh start nodemanager
[root@linux122 servers]# jps
8166 NodeManager
8223 Jps[root@linux121 servers]# yarn-daemon.sh start nodemanager
[root@linux121 servers]# jps
8166 NodeManager
8223 Jps
5.2 集群群起
-
启动HDFS
[root@linux121 hadoop-2.9.2]$ sbin/start-dfs.sh
[root@linux121 hadoop-2.9.2]$ jps
4166 NameNode
4482 Jps
4263 DataNode[root@linux122 hadoop-2.9.2]$ jps
3218 DataNode
3288 Jps[root@linux123 hadoop-2.9.2]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps -
启动YARN
[root@linux122 hadoop-2.9.2]$ sbin/start-yarn.sh
注意:
-
HDFS启动脚本应该在NameNode上执行 -
YARN启动脚本应该在ResouceManager上执行 -
集群群起要以配置ssh为前提,否则无法群起
5.3 Hadoop集群启动停⽌命令汇总
-
分别启动/停⽌HDFS组件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
-
启动/停⽌YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager
-
整体启动/停⽌HDFS—>常用
start-dfs.sh / stop-dfs.sh
-
整体启动/停⽌YARN—>常用
start-yarn.sh / stop-yarn.sh
6. 集群测试
-
HDFS 分布式存储初体验
# 从linux本地⽂件系统上传下载⽂件验证HDFS集群⼯作正常
# 在hdfs创建一个目录
hdfs dfs -mkdir -p /test/input
#本地hoome⽬录创建⼀个⽂件
cd /root
vim test.txt
hello hdfs
#上传linxu⽂件到Hdfs
hdfs dfs -put /root/test.txt /test/input
#从Hdfs下载⽂件到linux本地
hdfs dfs -get /test/input/test.txt -
MapReduce 分布式计算初体验
# 在HDFS⽂件系统根⽬录下⾯创建⼀个wcinput⽂件夹
hdfs dfs -mkdir /wcinput
# 在/root/⽬录下创建⼀个wc.txt⽂件(本地⽂件系统)
cd /root/
touch wc.txt
# 编辑wc.txt⽂件
vim wc.txt
# 在⽂件中输⼊如下内容
hadoop mapreduce yarn
hdfs hadoop mapreduce
mapreduce yarn lagou
lagou
lagou
# 上传wc.txt到Hdfs⽬录/wcinput下
hdfs dfs -put wc.txt /wcinput
# 回到Hadoop⽬录/opt/lagou/servers/hadoop-2.9.2
cd /opt/lagou/servers/hadoop-2.9.2
# 执⾏程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
# 查看结果
hdfs dfs -cat /wcoutput/part-r-00000
# 结果如下
hadoop 2
hdfs 1
lagou 3
mapreduce 3
yarn 2
7. 配置历史服务器
在Yarn中运⾏的任务产⽣的⽇志数据不能查看,为了查看程序的历史运⾏情况,需要配置⼀下历史⽇志 服务器。具体配置步骤如下:
-
配置mapred-site.xml
vim mapred-site.xml
# 增加以下内容
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>linux121:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux121:19888</value>
</property> -
分发mapred-site.xml到其它节点
rsync-script mapred-site.xml
-
启动历史服务器
sbin/mr-jobhistory-daemon.sh start historyserver
-
查看历史服务器是否启动
jps
-
查看JobHistory
http://linux121:19888/jobhistory
8. 配置⽇志的聚集
-
⽇志聚集:应⽤(Job)运⾏完成以后,将应⽤运⾏⽇志信息从各个task汇总上传到HDFS系统上。 -
⽇志聚集功能好处:可以⽅便的查看到程序运⾏详情,⽅便开发调试。
注意: 开启⽇志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
开启⽇志聚集功能具体步骤如下:
-
配置yarn-site.xml
vim yarn-site.xml
# 增加以下内容
<!-- ⽇志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- ⽇志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property> -
分发yarn-site.xml到集群其它节点
rsync-script yarn-site.xml
-
关闭NodeManager 、ResourceManager和HistoryManager
[root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh stop resourcemanager
[root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh stop nodemanager
[root@linux121 hadoop-2.9.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver -
启动NodeManager 、ResourceManager和HistoryManager
[root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh start resourcemanager
[root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh start nodemanager
[root@linux121 hadoop-2.9.2]$ sbin/mr-jobhistory-daemon.sh start historyserver -
删除HDFS上已经存在的输出⽂件
bin/hdfs dfs -rm -R /wcoutput
-
执⾏WordCount程序
hadoop jar share/hadoop/mapreduce/hadoopmapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
-
查看⽇志,如图所示
地址:
http://linux121:19888/jobhistory
对大数据感兴趣的小伙伴可以关注我的公众号:大数据学习宝典,在上面会定期更新学习笔记和一些心得!