hive架构原理简析-mapreduce部分
整个处理流程包括主要包括,语法解析(抽象语法树,AST,采用antlr),语义分析(sematic Analyzer生成查询块),逻辑计划生成(OP tree),逻辑计划优化,物理计划生成(Task tree),以及物理计划执行组成。
下面这张图(不知道是谁画的)简要的说明了整个处理的流程
这里重点说一下物理计划生成,以及执行。
物理计划的生成是根据逻辑操作树(operator)来生成的,物理计划由Task对象执行的,每个task有一个woker对象,work代表物理计划的描述。
主要有FetchWork,MoveWork,MapredWork,CopyWork,DDLWork,FunctionWork,ExplainWork,ConditionalWork
物理计划的执行,是针对每一个物理计划而调用execute方法。
主要有FetchTask,ConditionalTask,CopyTask,DDLTask,ExplainTask,MapRedTask,MoveTask
其中MapRedTask实现的功能是mapreuce的客户端,它根据woker的描述MapredWork,生成一个plan xml文件,作为hadoop jar [params]相关的命令参数,传递给
mapreduce来执行(ExecMapper,ExecReducer)。
下面这张图比较清晰的说明了在mapreduce的过程中数据的处理过程:
FileFormat,需要在定义table时,指定数据的存储格式(store as ),比如TEXTFlLE,SEQUENCEFILE,RCFILE等,当然可以自定义数据存储的格式(store as ROW FORMAT ),
数据的存储格式FileFormat主要是进行record(writable)在文件中是如何存储的,在map时提供文件的读,reduce时提供文件的写。
SerDe,数据的格式转换,writable到operator所用的object之间的转换。