Hadoop 知识梳理

Hadoop 知识梳理

  • hadoop是什么

    ​ 由于现在生活中每天甚至每时每秒都产生海量的数据,普通的存储和计算已经不足以完成任务,需要操作 管理和分析。

    (1) 集群 分功能处理

    (2) 海量数据存储(专人处理)目录

    (3) 统计计算

    (4)hadoop框架(工具)

  • hadoop的4v原则

    volumn 体量大

    velocity 速度快

    variaty 样式多

    value 价值密度低

  • hadoop的组成结构

    (1)hdfs(hadoop的文件系统)---------------(存)

    ​ ① 部署结构

    ​ 1)Namenode (管理文件的目录节点(原来存:硬盘)–内存)

    ​ a. Fsimage(目录镜像 记录某个时间段的目录镜像)

    ​ b. Edits(目录的操作记录)

    ​ 2)SecondaryNamenode (辅助生成目录镜像 定期加载a 和b 而合成新的Fsimage 返回Namenode)

    ​ 3)DataNode (数据节点)

    (2)mapreduce(统计计算用)-------------------(算)

    ​ ① 进程

    ​ 1)ResourceManager

    ​ a. 资源管理进程

    ​ 2)NodeManager

    ​ a. 记录节点信息

    (3)yarn(2.x提供)

  • hdfs 命令操作和 java操作

    ​ 1)hadoop hdfs

    ​ 2) 文件操作类

    ​ ①FileSystem ==System(File)

    ​ ②LocatedFileStatus ==(File)

    ​ 三 BlockLocation ------block

  • hdfs 读写过程

    读:

    1. client访问NameNode,查询元数据信息,获得这个文件的数据块位置列表,返回输入流对象
    2. 就近挑选一台datanode服务器,请求建立输入流 。
    3. DataNode向输入流中中写数据,以packet为单位来校验。
    4. 关闭输入流

    [外链图片转存失败(img-dEbGZvfV-1563451738745)(C:\Users\86183\Desktop\Note\相关图片\1562814950330.png)]

    写:

    1. 客户端向NameNode发出写文件请求。

    2. 检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。

    3. client端按128MB的块切分文件

    4. client将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和NameNode分配的多个DataNode构成pipeline管道,client端向输出流对象中写数据。client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNclient将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和NameNode分配的多个DataNode构成pipeline管道,client端向输出流对象中写数据。client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNode。
    5. 每个DataNode写完一个块后,会返回确认信息

    6. 写完数据,关闭输输出流。

    7. 发送完成信号给NameNode。

    [外链图片转存失败(img-CF4pRVE8-1563451738746)(C:\Users\86183\Desktop\Note\相关图片\1562813703885.png)]

  • hdfs 元数据

    ​ a. 记录文件存储block的信息 包括节点,尺寸

  • mapreduce是什么(简单原理,好处坏处,用在什么地方)

    ​ a. 统计 计算用的框架 可以基于hdfs

  • mapreduce的工作流程

    • 完整的工作流程 (图)

    [外链图片转存失败(img-co9JylcG-1563451738746)(C:\Users\86183\AppData\Local\Temp\1562833054762.png)]

    1、输入文件分片,每一片都由一个MapTask来处理

    2、Map输出的中间结果会先放在内存缓冲区中,这个缓冲区的大小默认是100M,当缓冲区中的内容达到80%时(80M)会将缓冲区的内容写到磁盘上。也就是说,一个map会输出一个或者多个这样的文件,如果一个map输出的全部内容没有超过限制,那么最终也会发生这个写磁盘的操作,只不过是写几次的问题。

    3、从缓冲区写到磁盘的时候,会进行分区并排序,分区指的是某个key应该进入到哪个分区,同一分区中的key会进行排序,如果定义了Combiner的话,也会进行combine操作

    4、如果一个map产生的中间结果存放到多个文件,那么这些文件最终会合并成一个文件,这个合并过程不会改变分区数量,只会减少文件数量。例如,假设分了3个区,4个文件,那么最终会合并成1个文件,3个区

    5、以上只是一个map的输出,接下来进入reduce阶段

    6、每个reducer对应一个ReduceTask,在真正开始reduce之前,先要从分区中抓取数据

    7、相同的分区的数据会进入同一个reduce。这一步中会从所有map输出中抓取某一分区的数据,在抓取的过程中伴随着排序、合并。

    8、reduce输出

    • 编程模型 mapper、reduce 、job (代码编写)

      ① job向resourceManager 提交(MapReduce)任务的类

      ② job 提交任务的流程

      [外链图片转存失败(img-ugyzYueT-1563451738746)(file:///C:\Users\86183\AppData\Local\Temp\ksohtml8448\wps1.jpg)]:

      1.将job提交给ResourcemManager(后面用RM代替),RM会给他分配一个jobID

      2.RM会给客户端返回一个JobID和路径的信息

      3.客户端根据这个信息,将jar包存储在HDFS中

      4.提交job给RM,RM中存在FIFO机制,如果前面有正在运行的Job,则放入FIFO进行等待,直到轮到此Job

      5.申请开启AM(ApplicationMaster),RM会找到一个NM(NodeManager)给他continer,用来启动AM,ND开启AM(其实5和6之间存在一种AM向RM注册的行为,这里不做太多讲解,只需懂基本流程即可)

      \6. AM向RM申请Task的执行资源,用来运行Task

      7.RM根据AM的信息和每个节点的资源利用情况进行Task的资源分配

      8.AM去每个Task所在的节点上通知NM去开启此continer

      (后续一点步骤:

      9.task启动会跟AM进行注册,AM时刻监控Task的运行情况,知道收到Task运行完成为止)

      以上便是Mapreduce的job提交流程。

      https://www.cnblogs.com/skyyuan/p/9956713.html

      源代码提交流程

      waitForCompletion-> submit -> connect(); ->submitJobInternal -> getNewJobID

      -> writeSplits-> writeNewSplits->job.getInputFormatClass() ->getSplits->write

  • Yarn 是什么

    YARN是Hadoop2.0版本新引入的资源管理系统,直接从MR1演化而来。

    核心思想:将MP1中JobTracker的资源管理和作业调度两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。

    1)ResourceManager:负责整个集群的资源管理和调度。

    2)ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。

    YARN的出现,使得多个计算框架可以运行在一个集群当中。

    1)每个应用程序对应一个ApplicationMaster。

    2)目前可以支持多种计算框架运行在YARN上面比如MapReduce、Storm、Spark、Flink等。

  • mapreduce 几种常用的场景

    wordcount mapjoin topkey;

    YARN的出现,使得多个计算框架可以运行在一个集群当中。

    1)每个应用程序对应一个ApplicationMaster。

    2)目前可以支持多种计算框架运行在YARN上面比如MapReduce、Storm、Spark、Flink等。

  • mapreduce 几种常用的场景

    wordcount mapjoin topkey;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值