Hive--执行流程和源码解析

  Hive,在工作中使用相对较多,并且比较简单便捷,今天在家闲着没事,就写一遍博客来对hive的执行流程做一些分析,还有阅读一下它的源码,看看这个hive是怎么编译这个HiveQL,怎么去解析,怎么和我们hdfs上的数据关联,在mapreduce阶段怎么进行计算的。由于这个源码比较多,不是很好截图,有时候我会一部分一部分的截取。最主要的还是你们自己按照这个流程去看几遍,可以看看具体的细节。

  • 下面我们来看一张经典的图,本博客也是围绕这张图展开的讲解:
  • Hive与Hadoop的调用关系图:

    阅读全文

Hadoop--MapReduce源码分析

  本片博客Hadoop的MapReduce源码分析,主要对上篇博客Hadoop-MapReduce详解/做进一步的理解。MapReduce源码分析东西太多,截图都截累了,前面比较详细一点靠后面可能只把主要的贴了上来,空闲了我在做一些补充吧!

  • MapReduce过程概述
  1. Job提交任务,会做初始化配置文件、检查Output Path、请求RM获取JobId、复制资源文件到HDFS等操作然后提交job作业;
  2. RM接收到作业后会初始化Job对象,然后启动一个NM会从HDFS获取资源文件分配一个Container,在Container中启动一个AM,在过程中会把文件分割为多个输入分片;
  3. 每个输入分片会让一个map任务来处理输出多个键值对,输出的结果会暂且放在一个环形内存缓冲区中;
  4. 紧接着就是分区,目的是把k2分配到不同的reduce task;
  5. map输出时可能会有很多的溢出文件,要将这些文件合并。合并的过程中会不断地进行排序和combia操作,最后合并成了一个已分区且已排序的文件。
  6. reduce阶段,接收到不同map任务传来的数据,如果接收数据大超过阈值就会溢出写入磁盘,溢出文件增多合并成大的有序的文件(反复地执行排序,合并操作)
  7. MapReduce会让写入磁盘的数据尽可能地少,并且最后一次合并的结果并没有写入磁盘,而是直接输入到reduce函数。

    阅读全文

Hadoop--MapReduce详解

  前面的几篇博客主要介绍了Hadoop的存储HDFS,接下来几篇博客主要介绍Hadoop的计算框架MapReduce。本片博客主要讲解MapReduce框架的具体执行流程,以及shuffle过程,当然这方面的技术博客已经特别多而且都写得很优秀,我写本篇博客之前也有过相关阅读,受益匪浅。对一些博客和资料的参考都会才博客下方参考资料中列出。

MapReduce理解

  • MapRedeuce,我们可以把它分开来理解:
  1. 映射(Mapping)对集合里的每个目标应用同一个操作。即,如果你想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping(这里体现了移动计算而不是移动数据);
  2. 化简(Reducing)遍历集合中的元素来返回一个综合的结果。即,输出表单里一列数字的和这个任务属于reducing。

阅读全文

Hadoop--HDFS之读写流程

  之前的博客,HDFS NameNodeHDFS DataNode 让我们对HDFS两个重要的角色,NameNode和DataNode有了一定的认识。NameNode负责维护元数据信息,DataNode负责Block块数据的存储。HDFS的设计就是一次写入,多次读取,不支持文件修改,所以呢,文件的读写就变得相当重要,下面我们就一起来看一看HDFS文件的读写流程吧!

写入文件

  • DataNode的写操作流程 可以分为两部分:
  1. 准备工作,包括与NameNode的通信等;
  2. 真正的写操作。

阅读全文

Hadoop--HDFS之DataNode

  HDFS DataNode,提供真实文件数据的存储服务。上篇博客HDFS NameNode 讲的是HDFS元数据,本篇主要讲解HDFS存储的真实数据。这些真实数据重点由两个部分组成,一、Block块(数据存储单元),二、文件备份数,掌握Block块信息,副本数的设置。

Block块

  • 文件块(block):最基本的存储单位。
  1. 对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block
  2. HDFS,默认Block大小是128MB(2.0版本),以一个256MB文件,共有256/128=2个Block;
  3. HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间

阅读全文

Powered by Hexo . Theme by Landscape-plus