Hadoop入门|Hadoop简介及安装

一、 大数据简介

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. 集群规划

框架linux121linux122linux123
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerNodeManagerNodeManager、ResourceManager

3. 安装Hadoop

  1. 登录linux121节点;进⼊/opt/lagou/software,解压安装⽂件到/opt/lagou/servers

    tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers
  2. 添加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
  3. 使环境变量⽣效

    source /etc/profile
  4. 验证hadoop

    hadoop version

    校验结果:

  5. 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集群配置

    1. 将JDK路径明确配置给HDFS(修改hadoop-env.sh)
    2. 指定NameNode节点以及数据存储⽬录(修改core-site.xml)
    3. 指定SecondaryNameNode节点(修改hdfs-site.xml)
    4. 指定DataNode从节点(修改etc/hadoop/slaves⽂件,每个节点配置信息占⼀⾏)
  • MapReduce集群配置

    1. 将JDK路径明确配置给MapReduce(修改mapred-env.sh)
    2. 指定MapReduce计算框架运⾏Yarn资源调度框架(修改mapred-site.xml)
  • Yarn集群配置

    1. 将JDK路径明确配置给Yarn(修改yarn-env.sh)
    2. 指定ResourceManager⽼⼤节点所在计算机节点(修改yarn-site.xml)
    3. 指定NodeManager节点(会通过slaves⽂件内容确定)

4.1 HDFS集群配置

  • 进入配置文件目录

    cd /opt/lagou/servers/hadoop-2.9.2/etc/hadoop
  1. 配置:hadoop-env.sh

    将JDK路径明确配置给HDFS

    vim hadoop-env.sh

    #
     增加以下内容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
  2. 指定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>
  3. 指定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>
  4. 指定datanode从节点(修改slaves⽂件,每个节点配置信息占⼀⾏)

    vim slaves

    #
     增加以下内容
    linux121
    linux122
    linux123

    注:该⽂件中添加的内容结尾不允许有空格,⽂件中不允许有空⾏

4.2 MapReduce集群配置

  1. 指定MapReduce使⽤的jdk路径(修改mapred-env.sh)

    vim mapred-env.sh

    #
     增加以下内容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
  2. 指定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集群配置

  1. 指定JDK路径

    vim yarn-env.sh

    #
     增加以下内容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
  2. 指定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>
  3. 指定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
  • 命令 选项参数 要拷⻉的⽂件路径/名称 ⽬的⽤户@主机:⽬的路径/名称
  • 选项参数说明
    1. -r :递归
    2. -v:显示复制过程
    3. -l:拷⻉符号连接
  • rsync案例

    1. 三台虚拟机安装rsync (执⾏安装需要保证机器联⽹)

       yum install -y rsync
    2. 把linux121机器上的/opt/lagou/software⽬录同步到linux122服务器的root⽤户下的/opt/⽬录

      rsync -rvl /opt/lagou/software/root@linux122:/opt/lagou/software
4.4.2 集群分发脚本编写
  1. 需求:循环复制⽂件到集群所有节点的相同⽬录下

    rsync命令原始拷⻉:rsync -rvl /opt/module root@linux123:/opt/

  2. 期望脚本:脚本+要同步的⽂件名称

  3. 说明:在/usr/local/bin这个⽬录下存放的脚本,root⽤户可以在系统任何地⽅直接执⾏。

  4. 脚本实现

    • 在/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`
  5. 修改脚本 rsync-script 的执行权限

    chmod 777 rsync-script
  6. 调⽤脚本形式:rsync-script ⽂件名称

    rsync-script /usr/local/bin/rsync-script
  7. 调⽤脚本分发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 单节点启动

  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
  2. 在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
  3. web端查看Hdfs界⾯

    查看HDFS集群正常节点:

  4. 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 集群群起

  1. 启动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
  2. 启动YARN

    [root@linux122 hadoop-2.9.2]$ sbin/start-yarn.sh

注意:

  1. HDFS启动脚本应该在NameNode上执行
  2. YARN启动脚本应该在ResouceManager上执行
  3. 集群群起要以配置ssh为前提,否则无法群起

5.3 Hadoop集群启动停⽌命令汇总

  1. 分别启动/停⽌HDFS组件

    hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
  2. 启动/停⽌YARN

    yarn-daemon.sh start / stop resourcemanager / nodemanager
  3. 整体启动/停⽌HDFS—>常用

    start-dfs.sh / stop-dfs.sh
  4. 整体启动/停⽌YARN—>常用

    start-yarn.sh / stop-yarn.sh

6. 集群测试

  1. 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
  2. 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中运⾏的任务产⽣的⽇志数据不能查看,为了查看程序的历史运⾏情况,需要配置⼀下历史⽇志 服务器。具体配置步骤如下:

  1. 配置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>
  2. 分发mapred-site.xml到其它节点

    rsync-script mapred-site.xml
  3. 启动历史服务器

    sbin/mr-jobhistory-daemon.sh start historyserver
  4. 查看历史服务器是否启动

    jps
  5. 查看JobHistory

    http://linux121:19888/jobhistory

8. 配置⽇志的聚集

  • ⽇志聚集:应⽤(Job)运⾏完成以后,将应⽤运⾏⽇志信息从各个task汇总上传到HDFS系统上。
  • ⽇志聚集功能好处:可以⽅便的查看到程序运⾏详情,⽅便开发调试。

注意: 开启⽇志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。

开启⽇志聚集功能具体步骤如下:

  1. 配置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>
  2. 分发yarn-site.xml到集群其它节点

    rsync-script yarn-site.xml
  3. 关闭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
  4. 启动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
  5. 删除HDFS上已经存在的输出⽂件

    bin/hdfs dfs -rm -R /wcoutput
  6. 执⾏WordCount程序

    hadoop jar share/hadoop/mapreduce/hadoopmapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
  7. 查看⽇志,如图所示

    地址:http://linux121:19888/jobhistory

对大数据感兴趣的小伙伴可以关注我的公众号:大数据学习宝典,在上面会定期更新学习笔记和一些心得!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值