大数据Hadoop入门——HDFS、Yarn、MapReduce

Hadoop框架详细个人总结——Hadoop入门篇

  • 大数据是什么?
  • Hadoop基本概念介绍
    • 一、什么是Hadoop?
    • 二、Hadoop优势——四高
    • 三、Hadoop组成(重点)
    • 四、HDFS架构
    • 五、YARN架构
    • 六、MapReduce架构
    • 七、HDFS、YARN、MapReduce 三者关系
  • Hadoop运行环境搭建
    • 虚拟机的准备
      • 一、安装虚拟机
      • 二、虚拟机配置及环境准备
    • Hadoop运行模式
      • 一、本地运行模式
      • 二、伪分布式模式
      • 三、完全分布式模式
        • 1.虚拟机准备
        • 2.准备一个集群分发脚本
        • 3.SSH 无密登录配置
        • 4.集群配置
        • 5.群起集群
        • 6.配置历史服务器
        • 7.配置日志的聚集
        • 8.集群启动/停止方式总结总结
        • 9.编写 Hadoop 集群常用脚本
        • 9.常用端口号说明
  • Hadoop入门总结(面试可能问)
    • 1.常用端口号
    • 2.常用的配置文件

大数据是什么?

1)大数据的主要解决问题:海量数据的采集、存储和分析计算问题。
2)重要单位:按顺序->bit、Byte、KB、MB、GB、TB、、PB、EB。
	1Byte = 8bit 
	1K = 1024Byte 
	1MB = 1024K 
	1G = 1024M 
	1T = 1024G 
	1P = 1024T
3)大数据特点:大量、高速、多样(结构化数据和非结构化数据)、低价密度低
以数据库/文本为主的结构化数据,以网络日志、音频、视频、图片、地理位置信息为主的非结构化数据。

Hadoop基本概念介绍

一、什么是Hadoop?

1)Hadoop是一个分布式系统基础架构
2)重要解决海量数据存储和计算的问题
2)可以说Hadoop是一个大的生态圈

大数据Hadoop入门——HDFS、Yarn、MapReduce_第1张图片

二、Hadoop优势——四高

  • 高可靠性
    因为Hadoop在底层维护了数据的副本,所以即使某个计算单元或存储单元产生了故障,也不会造成数据的丢失。
    在这里插入图片描述 如上图,三台服务器上,虽然102上的数据丢了一个,但在103和104还存在着副本,就不会造成它的丢失。
  • 高扩展性
    集群间分配任务数据,可以动态的增加删除服务器,可以很便利的扩展数以千计的节点。
    在双十一的时候,就可以动态的增加服务器。
  • 高效性
    Hadoop集群之间是并行工作的,这样可以加快任务处理的速度。
  • 高容错性
    能够自动将失败的任务重新分配。假如某台结点的任务挂掉了,就可以自动分配到另一台节点继续执行。

三、Hadoop组成(重点)

大数据Hadoop入门——HDFS、Yarn、MapReduce_第2张图片

hadoop1.x的时代,Hadoop中的mapreduce同时处理计算和资源的调度,耦合性较大,独立性较小。(模块间联系越多,其耦合性越强,同时表明其独立性越差。)
hadoop2.x的时代,增加了yarn,它只负责资源的调度,mapreduce只负责运算,这样各个模块的独立性提高了。

四、HDFS架构

HDFS是一个分布式文件系统

  • 架构
    1)NameNode(nn)----老板
    这里主要存储文件的元数据,就是指文件名、文件目录结构、文件属性(生成时间、副本数)、以及每个文件的块列表和块所在的DataNode等信息
    2)DataNode(dn)----员工
    这里顾名思义存的就是文件的块数据和块数据的校验和。
    3)Secondary NameNode(2nn)----秘书
    这里存放的是namenode的元数据备份,每隔一段时间这个小秘就会去把老板的备份一下,到后面的part细讲。

五、YARN架构

YARM是一个资源调度器

  • 架构
    1)ResourceManager(RM)整个集群资源(内存、CPU等)的老大
    2)NodeManager(N M)单个节点服务器资源老大
    3)ApplicationMaster(AM):单个任务运行的老大
    4)Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
    大数据Hadoop入门——HDFS、Yarn、MapReduce_第3张图片
    上图就是yarn的框架,客户端可以有多个,集群上可以运行多个ApplicationMaster ,每个nodemanger上可以有多个Container。

六、MapReduce架构

MapReduce负责数据的计算。将计算分为map阶段和reduce阶段。
1)Map阶段并行处理输入的数据
2)Reduce阶段对map端的结果进行汇总

大数据Hadoop入门——HDFS、Yarn、MapReduce_第4张图片

七、HDFS、YARN、MapReduce 三者关系

大数据Hadoop入门——HDFS、Yarn、MapReduce_第5张图片

1、有一个mapreduce任务,首先在客户端启动,这个时候需要一个ApplicationMaster,管理这个任务,这里我们简称mrApplicationMaster,此时拿到任务就要去申请资源。
2、向整个集群资源的老大ResourceManger去申请运算资源。
3、申请到资源后,mrApplicationMaster会遍历hdfs的文件,规划启动多少个mapTask和reduceTask。
4、然后mrApplicationMaster向ResourceManger汇报maptask,reduecetask数,申请nodemanager资源,每个nodemanager节点上管理运算资源,然后nodemanger启动容器进行计算。
5、最后将ruducetask的输出结果输出到hdfs上。

Hadoop运行环境搭建

虚拟机的准备

一、安装虚拟机

1. VMware的安装

官网进行安装,具体教程可以问度娘。

2. CentOS系统的安装

系统的安装首先先配置电脑,再安装系统。
这里可以先百度,后期会出详细教程,这里再不多赘述。
这里讲一下里面的虚拟网络IP修改地址配置和主机名hosts文件的修改,这些命令也很重要!!

虚拟机网络IP修改地址配置(Linux命令)

1)修改网络IP地址为静态IP地址,避免IP地址经常变化,从而方便节点服务器间的互相通信。

[root@hadoop100 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33

2)修改以及添加

#修改
BOOTPROTO="static"
/#IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)

#添加
#IP地址
IPADDR=192.168.10.100  
#网关  
GATEWAY=192.168.10.2      
#域名解析器
DNS1=192.168.10.2

3)修改IP地址后的结果如图所示,执行“:wq”命令,保存退出
4)执行"systemctl restart network"命令,重启网络服务。如果报错,则执行“reboot”命令,重启虚拟机

[root@hadoop100 ~]# systemctl restart network

5)使用ifconfig命令查看当前IP,查看是否与刚才修改的IPADDR相对应

[root@hadoop100 ~]# ifconfig

修改主机名和hosts文件
1)修改主机名称

#改为hadoop100
[root@hadoop100 ~]# vim /etc/hostname
hadoop100

2)配置Linux克隆机主机名称映射hosts文件(方便以后打开这个的时候不用输地址,直接输后面的短名字,其实就是为了方便),打开/etc/hosts

[root@hadoop100 ~]# 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 hadoop108

3)重启

[root@hadoop100 ~]# reboot

4)修改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 hadoop108

(2)如果操作系统是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 hadoop108

(d)将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件
3. 远程终端工具的安装

安装Xshell7,然后配置,这里也不再多赘述。

二、虚拟机配置及环境准备

1.ping一下百度,测试一下能上网吗?

[root@hadoop100 ~]# ping www.baidu.com

2.安装 epel-release
这就相当于一个一个网络仓库,里面有很多包。

[root@hadoop100 ~]# yum install -y epel-release

注意:如果 Linux 安装的是最小系统版,还需要安装如下工具;如果安装的是 Linux
桌面标准版,不需要执行如下操作:

#net-tool:工具包集合,包含 ifconfig 等命令
root@hadoop100 ~]# yum install -y net-tools

#vim:编辑器
[root@hadoop100 ~]# yum install -y vim

3.关闭防火墙,关闭防火墙开机自启

[root@hadoop100 ~]# systemctl stop firewalld
[root@hadoop100 ~]# systemctl disable firewalld.service

基本配置差不多了,剩下的不再赘述,后面另出一个详细说吧~~

  • Hadoop 目录结构
[atguigu@hadoop102 hadoop-3.1.3]$ ll
总用量 52
drwxr-xr-x. 2 atguigu atguigu 4096 522 2017 bin
drwxr-xr-x. 3 atguigu atguigu 4096 522 2017 etc
drwxr-xr-x. 2 atguigu atguigu 4096 522 2017 include
drwxr-xr-x. 3 atguigu atguigu 4096 522 2017 lib
drwxr-xr-x. 2 atguigu atguigu 4096 522 2017 libexec
-rw-r--r--. 1 atguigu atguigu 15429 522 2017 LICENSE.txt
-rw-r--r--. 1 atguigu atguigu 101 522 2017 NOTICE.txt
-rw-r--r--. 1 atguigu atguigu 1366 522 2017 README.txt
drwxr-xr-x. 2 atguigu atguigu 4096 522 2017 sbin
drwxr-xr-x. 4 atguigu atguigu 4096 522 2017 share
  • 重要目录

(1)bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
(3)lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
(4)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
(5)share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例

Hadoop运行模式

Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
1、本地模式:单机运行,一般自己学习的时候测试用一用,生产环境不用。
2、伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模
拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。哈哈哈哈哈哈!!!大海哥讲的。
3、完全分布式模式:多台服务器组成分布式环境。生产环境使用。

一、本地运行模式

你可以在本地执行一个官方的WordCount体验一下~~

#1,创建在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹
[atguigu@hadoop102 hadoop-3.1.3]$ mkdir wcinput

#2,在 wcinput 文件下创建一个 word.txt 文件
[atguigu@hadoop102 hadoop-3.1.3]$ cd wcinput

#3,编辑 word.txt 文件
[atguigu@hadoop102 wcinput]$ vim word.txt
  
#在文件中输入如下内容
hadoop yarn
hadoop mapreduce
atguigu
atguigu
#保存退出::wq

#4,回到 Hadoop 目录/opt/module/hadoop-3.1.3
#5,执行程序
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

#6,查看结果
[atguigu@hadoop102 hadoop-3.1.3]$ cat wcoutput/part-r-00000

二、伪分布式模式

说一下高大尚的完全分布式,这个再不多赘述,么么哒~~找度娘吧

三、完全分布式模式

要做什么呢?
1)准备 3 台客户机(关闭防火墙、静态 IP、主机名称) 2)安装 JDK
3)配置环境变量
4)安装 Hadoop
5)配置环境变量
6)配置集群
7)单点启动
8)配置 ssh
9)群起并测试集群
冲起来吧!!

1.虚拟机准备

这里就在不多赘述,你可以克隆,也可以重新创,准备好就可以了,注意防火墙要关闭,以及静态IP和主机名称的配置喔~~

2.准备一个集群分发脚本

啥??你问我为啥要准备? 当然一切为了便利,一切为了早点下班!!

1)scp安全拷贝

scp可以实现服务器和服务器之间的数据的拷贝(from server1 to server2)

基本语法
在这里插入图片描述

案例:
在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上。

[atguigu@hadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 atguigu@hadoop103:/opt/module

2)rsync 远程同步工具

rsync 主要用于备份和镜像。具有速度避免复制相同内容支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去

基本语法:
大数据Hadoop入门——HDFS、Yarn、MapReduce_第6张图片
案例:

#同步 hadoop102 中的/opt/module/hadoop-3.1.3 到 hadoop103
[atguigu@hadoop102 module]$ rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/

3)xsync 集群分发脚本
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
(a)rsync 命令原始拷贝:

rsync -av /opt/module atguigu@hadoop103:/opt/

(b)期望脚本:

xsync 要同步的文件名称

(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

[atguigu@hadoop102 ~]$ echo $PATH
#下面是输出  /home/atguigu/bin: 全局变量
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bin

(3)脚本实现
(a)在/home/atguigu/bin 目录下创建 xsync 文件

[atguigu@hadoop102 opt]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync

在xsync该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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

(b)修改脚本 xsync 具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

(c)将脚本复制到/bin 中,以便全局调用

[atguigu@hadoop102 bin]$ sudo cp xsync /bin/

(d)同步环境变量配置(root 所有者)

[atguigu@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh

注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。
让环境变量生效

[atguigu@hadoop103 bin]$ source /etc/profile
[atguigu@hadoop104 opt]$ source /etc/profile

3.SSH 无密登录配置

(1)基本语法

ssh 另一台电脑的 IP 地址

ssh 连接

[atguigu@hadoop102 ~]$ ssh hadoop103

退回到 hadoop102

[atguigu@hadoop103 ~]$ exit

(2)无密钥配置

  • 免密登录原理
    大数据Hadoop入门——HDFS、Yarn、MapReduce_第7张图片

1、首先A服务器上要生成密钥对,公钥和私钥。
2、将A的公钥拷贝给B,然后重命名授权key
3、A向B采用ssh访问,数据是用A的私钥进行加密。
4、B接收到数据后,在授权key中查找是否有对应的用户名和IP,这里就是A的,然后生成一个随机字符串。
5、B将字符串采用A的公钥加密,发送给A。
6、A接收到B发来的随机字符串那个数据后,用A自己的私钥进行解密,然后将解密的数据再发给B,B将发过来的和自己随机产生的进行对比,如果一样就可以免密登录了。

总结:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。

这里解释一下非对称加密:
非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加 密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

  • 实现免密登录
    1)生成公钥和私钥
[atguigu@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh
[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)。
2)将公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:
还需要在 hadoop103 上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、hadoop104 服务器上。
还需要在 hadoop104 上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、hadoop104 服务器上。
还需要在 hadoop102 上采用 root 账号,配置一下无密登录到 hadoop102、hadoop103、hadoop104;

- .ssh 文件夹下(~/.ssh)的文件功能解释大数据Hadoop入门——HDFS、Yarn、MapReduce_第8张图片

4.集群配置

(1)集群部署规划

注意:
➢ NameNode 和 SecondaryNameNode 不要安装在同一台服务器
➢ ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。

(2)配置文件说明

➢Hadoop 配置文件分两类:默认配置文件和自定义配置文件。
➢只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

1)默认配置文件
大数据Hadoop入门——HDFS、Yarn、MapReduce_第9张图片
2)自定义配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在
$HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置。

(3)配置集群

  • 核心配置文件
    配置 core-site.xml
[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[atguigu@hadoop102 hadoop]$ vim core-site.xml

#文件内容如下:


<configuration>
 
 <property>
    <name>fs.defaultFSname>
    <value>hdfs://hadoop102:8020value>
 property>
 
 <property>
    <name>hadoop.tmp.dirname>
    <value>/opt/module/hadoop-3.1.3/datavalue>
 property>
 
 <property>
    <name>hadoop.http.staticuser.username>
    <value>atguiguvalue>
 property>
configuration>
  • HDFS 配置文件
    配置 hdfs-site.xml
[atguigu@hadoop102 hadoop]$ vim hdfs-site.xml

#文件内容如下:


<configuration>

<property>
 <name>dfs.namenode.http-addressname>
 <value>hadoop102:9870value>
 property>

 <property>
 <name>dfs.namenode.secondary.http-addressname>
 <value>hadoop104:9868value>
 property>
configuration>
  • YARN 配置文件
    配置 yarn-site.xml
[atguigu@hadoop102 hadoop]$ vim yarn-site.xml

#文件内容如下:


<configuration>
 
 <property>
	 <name>yarn.nodemanager.aux-servicesname>
	 <value>mapreduce_shufflevalue>
 property>
 
 <property>
	 <name>yarn.resourcemanager.hostnamename>
	 <value>hadoop103value>
 property>
 
 <property>
	 <name>yarn.nodemanager.env-whitelistname>
	 <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOMEvalue>
 property>
configuration>
  • MapReduce 配置文件
    配置 mapred-site.xml
[atguigu@hadoop102 hadoop]$ vim mapred-site.xml

#文件内容如下:


<configuration>

 <property>
	 <name>mapreduce.framework.namename>
	 <value>yarnvalue>
 property>
configuration>

(4)在集群上分发配置好的 Hadoop 配置文件

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-
3.1.3/etc/hadoop/

5.群起集群

(1)配置 workers

[atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop-
3.1.3/etc/hadoop/workers

#在该文件中增加如下内容
hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

#同步分发所有节点配置文件
[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc

(2)启动集群

  • 如果集群是第一次启动,需要在集群节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
[atguigu@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
  • 启动 HDFS
    启动的是HDFS中的节点 NameNode、DataNode和secondaryNameNode
[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
  • 在配置了ResourceManager 的节点启动 YARN
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
  • Web 端查看 HDFS 的 NameNode

(a)浏览器中输入:http://hadoop102:9870
(b)查看 HDFS 上存储的数据信息

  • Web 端查看 YARN 的 ResourceManager

(a)浏览器中输入:http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息

(3)集群基本测试

  • HDFS 文件存储路径
    /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598- 192.168.10.102-1610603650062/current/finalized/subdir0/subdir0
  • 执行 wordcount 程序
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

6.配置历史服务器

为啥要配这个,因为我念旧叭~~
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

(1)配置 mapred-site.xml

[atguigu@hadoop102 hadoop]$ vim mapred-site.xml

#在该文件里面增加如下配置。
<!-- 历史服务器端地址 -->
<property>
	 <name>mapreduce.jobhistory.address</name>
	 <value>hadoop102:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
	 <name>mapreduce.jobhistory.webapp.address</name>
	 <value>hadoop102:19888</value>
</property>

(2)分发配置

[atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

(3)在 hadoop102 启动历史服务器

[atguigu@hadoop102 hadoop]$ mapred --daemon start historyserver

7.配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
大数据Hadoop入门——HDFS、Yarn、MapReduce_第10张图片

  • 注意:开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和
    HistoryServer。
  • 开启日志聚集功能具体步骤如下:
    (1) 配置 yarn-site.xml
[atguigu@hadoop102 hadoop]$ vim yarn-site.xml

#在该文件里面增加如下配置。
<!-- 开启日志聚集功能 -->
<property>
	 <name>yarn.log-aggregation-enable</name>
	 <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property> 
	 <name>yarn.log.server.url</name> 
	 <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7-->
<property>
	 <name>yarn.log-aggregation.retain-seconds</name>
	 <value>604800</value>
</property>

(2)分发配置

[atguigu@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarnsite.xml

注意:这里的 HADOOP_HOME=/opt/module/hadoop-3.1.3,$HADOOP_HOME是一个变量引用

(3)关闭 NodeManager 、ResourceManager 和 HistoryServer

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh
[atguigu@hadoop103 hadoop-3.1.3]$ mapred --daemon stop historyserver

(4)启动 NodeManager 、ResourceManage 和 HistoryServer

[atguigu@hadoop103 ~]$ start-yarn.sh
[atguigu@hadoop102 ~]$ mapred --daemon start historyserver

(5)查看日志

历史服务器地址
http://hadoop102:19888/jobhistory

8.集群启动/停止方式总结总结

(1)各个模块分开启动/停止(配置 ssh 是前提)

1)整体启动/停止 HDFS
start-dfs.sh
stop-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

9.编写 Hadoop 集群常用脚本

觉得分开启动麻烦,那就写个启动脚本叭~~

(1)Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):myhadoop.sh

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim 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-3.1.3/sbin/start-dfs.sh"
	 ## 当前服务器远程登录另一个服务器B后执行某个命令或脚本(上面的句子的意思)
	 echo " --------------- 启动 yarn ---------------"
	 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
	 echo " --------------- 启动 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 	historyserver"
	 echo " --------------- 关闭 yarn ---------------"
	 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
	 echo " --------------- 关闭 hdfs ---------------"
	 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
 echo "Input Args Error..."
;;
esac

#保存后退出,然后赋予脚本执行权限
[atguigu@hadoop102 bin]$ chmod +x myhadoop.sh

2)查看三台服务器 Java 进程脚本:jpsall

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim jpsall

#输入如下内容
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
 echo =============== $host ===============
 ssh $host jps 
done

#保存后退出,然后赋予脚本执行权限
[atguigu@hadoop102 bin]$ chmod +x jpsall

3)分发/home/atguigu/bin 目录(里面有这两个脚本,保证自定义脚本在三台机器上都可以使用

[atguigu@hadoop102 ~]$ xsync /home/atguigu/bin/

9.常用端口号说明

大数据Hadoop入门——HDFS、Yarn、MapReduce_第11张图片

Hadoop入门总结(面试可能问)

1.常用端口号

  • Hadoop3.x

HDFS NameNode 内部通常端口:8020/9000/9820
HDFS NameNode对用户的查询端口:9870
Yarn查看任务运行情况的:8088
历史服务器:19888

  • Hadoop3.x

HDFS NameNode 内部通常端口:8020/9000
HDFS NameNode 对用户的查询端口:50070
Yarn查看任务运行情况的:8088
历史服务器:19888

2.常用的配置文件

--Hadoop3.x--
core-site.xml  
hdfs-site.xml  
yarn-site.xml  
mapred-site.xml 
workers
--Hadoop2.x--
core-site.xml  
hdfs-site.xml  
yarn-site.xml  
mapred-site.xml 
slaves

你可能感兴趣的:(大数据,hadoop,hdfs,大数据,yarn,mapreduce)