【hive学习笔记2】

笔记关联-hive学习笔记

测试Demo

1.首先在windows上(本地)创建几个文件(放一列数据),如:

2.在hive建表

3.上传数据

上传成功显示

4.测试查询

hive系统架构


上图所示是hive的主要组件及其与Hadoop的交互方式:
***1.***用户用SQL语句发送指令给hive,hive先进行翻译,把用户所需什么表什么字段上的什么数据的指令交给编译器进行解析,解析后系统会去原储存查到所需的数据交给驱动程序形成执行计划发给执行引擎,【如果这个指令有“增删改元数据”的要求,6.1的步骤就是将这个‘增删改后的元数据’返给元储存,此时元储存中的元数据是进行了“增删改”后的元数据,如果元数据没有被进行增删改,则6.1的步骤省略
2.让执行引擎按照这个方案,去 Hadoop 上真正执行任务,6.1执行作业步骤相当于执行引擎把执行计划,拆成一个或多个大的「作业(Job)」,发给 Hadoop 的总包工头(作业跟踪器)。此时,作业跟踪器会做两件事:
1)把大作业拆成很多个小的 Map 任务,再把 Map 任务的结果,分配给对应的Reduce 任务;

注:Map 是分头处理:比如你要统计 1000 万行数据,Map 阶段把 1000 万行拆成 100 份,100 台机器每台处理 10 万行,先做过滤、初步计算,把大任务拆成小任务,并行跑,速度快很多。
2)把这些小任务,分配给 Hadoop 集群里,各个机器上的小工头(任务跟踪器)。

注:Reduce = 汇总合并:把 100 台机器的 Map 结果全部收过来,合并成最终的结果,比如求和、统计总数、去重,得到你要的最终数据。
3.6.2jobDone步骤是指每个MAP(任务跟踪器),全程盯着自己机器上的 Map/Reduce 任务,任务一跑完,就立刻给作业跟踪器汇报。等所有的 Map 任务和 Reduce 任务全部跑完,作业跟踪器就给执行引擎发一个「jobDone」的通知,明确告诉它:你发的这个大作业,我已经全部干完了。

4.
流程解读:
①Map 任务要读数据:先问名称节点,我要的数据块存在哪台机器(node1、node2、node3)的哪个数据节点,然后直接去对应的数据节点读数据;
②Map 任务跑完的中间结果,会暂时存在 HDFS 上,给后面的 Reduce 任务用;
③Reduce 任务启动后,会从 HDFS 上,把所有 Map 任务的中间结果全部读出来,做汇总计算;
④Reduce 任务跑完的最终结果,会完整写到 HDFS 上,永久保存;
⑤执行引擎也会直接操作 HDFS,比如查结果文件的位置、确认文件是否生成。
上述流程即完成
6.3dfs的操作步骤

5.第7、8、9步获取、发送结果的流程:
Hadoop 任务跑完把结果存进 HDFS 仓库 → 总指挥(执行引擎)先去仓库把结果取出来(步骤 9) → 总指挥把取到的结果完整发给项目大管家(驱动程序,步骤 8) → 大管家把结果最终交付给你,你在屏幕上看到结果(步骤 7)。