概述
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件 映射为一张数据库表,并提供类 SQL 查询功能。
本质是将 SQL 转换为 MapReduce 程序。
主要用途:用来做离线数据分析,比直接用 MapReduce 开发效率更高。
工作原理
- RunJar(提交Job的客户端)向Yarn的RM(ResourceManager)申请运行本次应用的AppMaster。
- RM接受到请求,返回一个JobID和提交资源的路径,并通过RM在Yarn集群中的其中一个NM(NodeManager)中启动一个容器(AppMaster)。
- 客户端根据提交资源的路径,提交资源;并到指定的容器(Container)中启动本次程序的AppMaster。
- AM(AppMaster)跟RM注册自己,并且保持连接。
- AM去客户端提交的资源中,读取切片规划。比如这里有3个切片的路径。
- AP根据读取到的切片信息,向RM申请资源。
- RM收到申请,并通过NM启动与申请与资源相应个数的容器个数(这里切片是3个,所以申请了3个Container),并告诉AM,容器的具体位置。
- AM在申请到的容器中,运行MR程序(MapTask)。
- 当MapTask运行结束后,AM向RM汇报,我已经完成Job了,你可以回收容器了。
- RM通过NM,释放了刚才申请的容器。
- 如果程序还有Reduce阶段,那么AM就按照上述流程再走一遍(ReduceTask)。
- 当整个MR程序运行结束的时候,AM就会向RM注销自己。