筱超超

导航

初识Hadoop

1.Hadoop的前世今生

​   1)搜索引擎:网络爬虫+索引服务器(生成索引+检索)

​   2)Doung Cutting写了lucence包(生成索引+检索)

​   3)Nutch:网络爬虫+索引服务器(lucence封装)

​   a.分布式存储??

​   b.分布式计算???

  ​ 4)2002年谷歌开源了GFS论文,Doung Cutting写了HDFS模块

​   5)2004年谷歌开源了MapReduce论文,Doung Cutting写了MapReduce模块

​   6)Nutch0.9版本后将HDFS和MapReduce模块拆分出来,形成了一个大数据处理框架Hadoop

2.Hadoop概述

  1)四大模块

​     common、HDFS、MapReduce、yarn

   2)HDFS(Hadoop distributed file system):分布式文件系统

    a.文件系统:文件管理+block块管理

​       单机文件系统

​         Windows:FAT16、FAT32、NTFS

​         Linux:ext2/3/4、VFS

     b.分布式文件系统

​       多个服务器存储文件

     c.三大组件

​     <1>NameNode

​       ①元数据:文件名、目录名、属性(生成时间、权限、副本)

​       ②文件名与block列表映射关系

​       ③block与DateNode列表的映射关系

​     <2>DataNode:

​      block块数据、校验和编码

​     <3>SecondaryNameNode:

​       分担NameNode压力,合并编辑日志edits和镜像文件fsimage(因为合并操作需要占用很大的资源,影响客户端请求),合并后将最终的及镜像文件fsimage返回给NameNode进行处理。

   3)yarn:资源管理和任务管理

     a.四大组件

​       ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)、Container

    - ResourceManager

      ①处理client请求

      ②启动/监控ApplicationMaster

      ③监控NodeManager

      ④资源分配与调度

    - NodeManager

      ①单个节点上的资源管理

      ②处理来自ResourceManager的命令

      ③处理来自ApplicationMaster的命令

    - ApplicationMaster

      ①程序切分

      ②为应用程序申请资源,并分配任务

      ③任务控制与容错

    - Container

      ①对任务运行环境的抽象,丰庄路CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息

     b.执行流程

图片

​       <1>client连接RM提交作业,RM给client一个Job ID(注:ApplicationsManager和RESourceScheduler)

​       <2>RM中的ApplicationManager连接一个RM,让RM创建一个AM处理客户作业请求

​       <3>AM连接RM中的ApplicationManager申请Nodemanager

​       <4>AM去ResourceManager给client的作业申请资源(CPU、内存、磁盘、网络)

​       <5>AM连接NM,发送client job作业程序和申请的资源(CPU、内存、磁盘、网络)

​       <6>NM启动Container进程运行job的不同任务

​       <7>Container进程运行状态实时反馈给AM

​       <8>AM反馈任务状态信息给RM中的ApplicationsManager

​       <9>client端可以连接RM或AM,查询job的执行情况

    - 注:NM启动后去AM上进行注册,会不断发送心跳,说明处于存活状态。

  4)MapReduce

     a)概述

      - 将分布式计算过程分为两个阶段,Map和Reduce
        - Map阶段并行处理输入数据
        - Reduce阶段对Map结果进行汇总

      - Shuffle连接Map和Reduce两个阶段
        - Map Task将数据写到本地磁盘
        - Reduce Task从每个Map Task上读取一份数据
      - 仅适合离线批处理,速度慢
      - 具有很好的容错性和扩展性
      - 适合简单的批处理方式
      - 缺点明显
      - 系统开销大,各个Task需要不断申请释放资源,过多使用磁盘导致效率低下等

     b) 执行流程

      <1>输入文件切片

      <2>mapper进程处理切片

      <3>shuffle流程

      <4>reducer进程聚合数据

      <5>输出文件

3.Hadoop生态系统

图片

  1)Hadoop:分布式存储、分布式计算、资源调度与任务管理

​     HDFS、MapReduce、yarn、common

  2)Luncene:索引检索工具包

  3) Nutch:开源的搜索引擎

  4)HBase/Cassandra:基于谷歌的BigTable开源的列式存储的非关系型数据库

  5)Hive:基于SQL的分布式计算引擎,同时是一个数据仓库

​     Pig:基于Pig Latin脚本的计算引擎

  6)Thrift/Avro:RPC框架,用于网络通信

  7)BigTop:项目测试、打包、部署

  8)Oozie/Azakban:大数据的工作流框架

  9)Chukwa/Scribe/Flume:数据收集框架

  10)Wgirr:部署为云服务的库

  11)Sqoop:数据迁移工具

  12)Zoopkeeper:分布式协调服务框架

  13)HAMA:图计算框架

  14)Mahout:机器学习的框架,封装了很多的算法

 4.hadoop环境搭建

  1)三个环境

​     单机环境、伪分布式环境、分布式环境

   2)三个分支

​     Apache版本

​     cdh版本

​     hdp版本

  3)

  4)

  5)Hadoopde安装配置

    a.单机模式

     b.伪分布式

  <1>HDFS

      ④启动HDFS进程

​         sbin/satrt-dfs.sh

​         或

​         sbin/hadoop-damon.sh start namenode

​         sbin/hadoop-damon.sh start datanode

​         sbin/hadoop-damon.sh start secondarynamenode

      ⑤浏览器访问

​         http://<主机名>:50070

​     注:50070是http的协议端口号,8020是RPC tcp协议的端口号

  <2>YARN

      ①

      ②

      ③启动YARN进程:Resourcemanager、NodeManager

​       sbin/start-yarn.sh

​       或

​       sbin/yarn-damon.sh satrt resourcemanager

​       sbin/yarn-domon.sh start nodemanager

      ④浏览器访问

​       http://<主机名>:8088

​   注:8032是RPC tcp协议的端口号,8088是http协议的端口号

     c.分布式环境(Distributed)(多个服务器运行Hadoop进程)

      ①机器规格

​         机器1:NameNode DataNode NodeManager(NM)

​         机器2: DataNode ResourceManager NodeManager(NM)

​         机器3:DataNode SecondaryNameNode NodeManager(NM)

      ②克隆服务器

​         VMware克隆/复制

​       注:机器2/3的MAC地址需要重新生成

​         拷贝源文件

      ③修改网卡并配置

​         修改网卡

      ④ntp时间服务器

​       1)作用:

​          同步三个时间服务器的时间,保持服务器时间的一致

​          注:机器1当成时间服务器,机器2/3同步机器1的时间

​       2)机器1上配置ntp时间服务器

​          vim /etc/sysconfig/ntpd

​          SYNC_HWCLOCK=yes

​          vim /etc/ntp.conf

​          server xxx

​          server 127.127.1.0

​          fudge 127,.127.1.0 xxx

          restrict 192.168.83.0 xxx

​     3)重启ntp服务

​          service ntpd reatsrt

​     4)机器1设置时间

​               date -s yyyy-mm-dd

​          date -s hh:mm:ss

​     5)机器2/3同步时间

​      手动同步:

​          /usr/sbin/ntpdate <主机名>

​      定时同步:

​         crontab -e:

​             0-59/10 * * * * /usr/sbin/ntpdate master

​      注:crontab格式:分 小时 天 月 周 <command>

​     6)Hadoop配置文件配置

​        ①core-site.xml

​          namenode访问地址

​        ②yarn-site.xml

​          secondarynamenode访问地址

​        ③slaves

​      从节点的主机名

​       注:scp -r software/hadoop-2.7.3/etc/hadoop root@slave1:software/hadoop-2.7.3/etc/hadoop

​        scp -r software/hadoop-2.7.3/etc/hadoop root@slave1:software/hadoop-2.7.3/etc/hadoop

    7)SSH免密码登陆

​       生成公钥/私钥对

​       ssh-keygen -t rsa

​       拷贝公钥至远程主机或本地authorized_keys文件

​        ssh-copy-id<主机名>

5.初识MapReduce

  1)启动Hadoop服务器

​     sbin/start-all.sh

  2)浏览器访问

    HDFS http://master:50070

    YARN http://master:18088

   3)各个指标

​     a.Cluster Metrics

​       集群指标:app(提交、排队、运行、完成)、Container个数、资源(内存、CPU)

​     b.Cluster Nodes Metrics

​        机器状态:active、decommissioning、decommisioned、lost、unhealth、reboot

    ​ c.Scheduler Metrics

​        Tapacity Type、Scheduing Resource Type、MInimum Allocation、Maxinum Allocation

​     d.作业指标

   4)聚合日志

​    a.含义:

​        ①分布式计算作业放到NodeManager运行,日志信息放在Nodemanager本地目录:

​          yarn.nodemanager.http.logs:${yarn.log.dir}/userlogs

​        ②通过配置将本地日志放到HDFS服务器上,即聚合日志的概念

​         yarn.nodemanager.log.retain-seconds

​        当不启用日志聚合此参数生效,日志文件保存在本地的时间,单位为s

​         yarn.nodemanager.remote-app-log-dir

​       当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效), 修改为保存的日志文件夹
​         yarn.nodemanager.remote-app-log-dir-suffix

​        远程日志目录子目录名称(启用日志聚集功能时有效)

    b.配置yarn-site.xml

      <!--启用日志聚合功能>

      <property>
​           <name> yarn.log-aggregation-enable</name>
​          <value>true</value>
      </property>

      <!--启用多长时间>

      <property>
        ​ <name>yarn.log-aggregation.retain-seconds</name>
​          <value>3600</value>
​        </property>

   5)历史服务器

​     a.配置项

​        mapreduce.jobhistory.address jobhistory的rpc访问地址
​        mapreduce.jobhistory.webapp.address Jobhistory的http访问地址

    启动 sbin/mr-jobhistory-daemon.sh start historyserver
​     WEB UI http://<主机名>:19888
​     停止 sbin/mr-jobhistory-daemon.sh stop historyserver

 

posted on 2019-10-12 16:52  筱超超  阅读(109)  评论(0编辑  收藏  举报