• 初识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

  • 相关阅读:
    mysql 去除重复数据
    linux 相关命令
    mysql load data infile auto increment id
    《Head First 设计模式》读书笔记
    《NoSQL精粹》读书笔记
    linux 服务器丢包故障排查
    《高性能MySQL》 读书总结
    NAT穿透(UDP打洞)
    python函数调用关系图(python call graph)
    VMware 三种网络模式
  • 原文地址:https://www.cnblogs.com/lyc0303/p/11662572.html
Copyright © 2020-2023  润新知