【hadoop期末复习】第九章 数据仓库Hive 超详细讲解 您所在的位置:网站首页 hive组成部分 【hadoop期末复习】第九章 数据仓库Hive 超详细讲解

【hadoop期末复习】第九章 数据仓库Hive 超详细讲解

2023-08-12 18:37| 来源: 网络整理| 查看: 265

** 本专栏的Hadoop复习计划文章内容主要包含以下几个部分:

【简单】学习通习题

【进阶】课本课后练习

【操作】相关章节实验回顾

让我们开始吧!

学习通 - 习题 1. 下列关于Hive基本操作命令的解释错误的是

A.create table if not exists usr(id bigint,name string,age int);//如果usr表不存在,创建表usr,含三个属性id,name,age

B.load data local inpath ‘/usr/local/data’ overwrite into table usr; //把目录’/usr/local/data’下的数据文件中的数据以追加的方式装载进usr表

C.create database userdb;//创建数据库userdb

D.insert overwrite table student select * from user where age>10;

//向表student中插入来自usr表的age大于10的数据并覆盖student表中原有数据

我的答案:B

解析:

B.load data local inpath ‘/usr/local/data’ overwrite into table usr; //把目录’/usr/local/data’下的数据文件中的数据以追加的方式装载进usr表 - 错误

overwrite - 意为“覆写”,直接把新数据写进去,覆盖原有的表

2. 下列说法正确的是

A.Impala和Hive、HDFS、HBase等工具可以统一部署在一个Hadoop平台上

B.数据仓库Hive不需要借助于HDFS就可以完成数据的存储

C.Hive本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据

D.HiveQL语法与传统的SQL语法很相似

我的答案:ACD

解析:

A.Impala和Hive、HDFS、HBase等工具可以统一部署在一个Hadoop平台上

正确,因为Impala和Hive都可以与HDFS、HBase进行交互

B.数据仓库Hive不需要借助于HDFS就可以完成数据的存储

错误,hive简介如下:

Hive某种程度上可以看作是用户编程接口,本身不存储和处理数据依赖HDFS存储数据依赖MapReduce处理数据定义了简单的类SQL 查询语言 HiveQL(HQL)用户可以通过编写的HQL语句运行MapReduce任务是一个可以提供有效、合理、直观组织和使用数据的模型

C.Hive本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据

正确

D.HiveQL语法与传统的SQL语法很相似

正确

3. 以下属于Hive的基本数据类型是

A.TINYINT B.BINARY C.FLOAT D.STRING

我的答案:ABCD

解析:

hive的基本数据类型有:

课本 - 课后习题 1. 在hadoop生态中hive与其他组件的关系

2. 简述hive与传统数据库的区别

Hive

传统数据库

数据插入

支持批量导入

支持单条和批量导入

数据更新

不支持

支持

索引

支持

支持

分区

支持

支持

执行延迟

扩展性

有限

3. 简述hive的几种访问方式

1)内部访问

CLIHWI

2)外部访问

KarmasphereHueQubole

4. 对hive的几个主要组成模块进行简要介绍

1)用户接口模块

包含:CLI、HWI、JDBC、ODBC、Thrift Server等CLI:Hive自带的一个命令行界面HWI:Hive的一个简单网页界面JDBC、ODBC、Thrift Server:向用户提供进行编程访问的接口

2)驱动模块

包含:编译器、优化器、执行器等所有命令和查询都会进入到驱动模块,通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤进行执行

3)元数据存储模块

是一个独立的关系型数据库通常是与MySQL数据库连接后创建的一个MySQL实例,也可以是Hive自带的derby数据库实例元数据存储模块中主要保存表模式和其他系统元数据(如表的名称、表的列及其属性、表的分区及其属性、表的属性、表中数据所在位置信息等)

5. 简述hive中输入一条查询的具体执行过程

1)SQL → 语法树

2)语法树 → 查询块

3)查询块 → 逻辑查询计划

4)重写逻辑查询计划

5)逻辑查询计划 → 物理计划(MapReduce Jobs)

6)选择最佳的优化查询策略

图示:

6. 简述hive HA原理 将若干个hive实例纳入一个资源池,然后对外提供一个唯一的接口,进行proxy relay对于程序开发人员,就把它认为是一台超强“hive",每次它接收到一个hive查询连接后,都会轮询资源池里可用的hive资源   7. 简述Impalad进程的主要作用

Impalad 是 Impala 的一个进程

功能:

负责协调客户端提交查询的执行给其他impalad分配任务收集其他impalad的执行结果进行汇总  

8. 比较hive与Impala的异同点

1)不同点

Hive适合于长时间的批处理查询分析,而Impala适合于实时、交互式SQL查询

Hive依赖于MapReduce计算框架,执行计划组合成管道型的MapReduce任务模式进行执行,Impala把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询。

Hive在执行过程中,如果内存放不下所有数据,则会使用外存,以保证查询能顺序执行完成,而Impala在遇到内存放不下数据时,不会利用外存,所以Impala目前处理查询时会受到一定的限制。

2)相同点

Hive、Impala使用相同的存储数据池,都支持把数据存储于HDFS、HBase中

Hive与Impala使用相同的元数据

Hive与Impala中对SQL的解释处理比较相似,都是通过词法分析生成执行计划

9. 简述 state store的作用

Impala主要由Impalad,State Store和CLI三部分组成State Store会创建一个statestored进程

作用:

跟踪集群中的Impalad的健康状态及位置信息创建多个线程来处理Impalad的注册订阅和与各类Impalad保持心跳连接当State Store离线后,Impalad一旦发现State Store处于离线时,就会进入recovery模式,并进行反复注册当State Store重新加入集群后,自动恢复正常,更新缓存数据3.  CLI给用户提供查询使用的命令行工具提供了Hue、JDBC及ODBC的使用接口

10. 简述impala执行一条查询的具体过程 当用户提交查询前,Impala先创建一个负责协调客户端提交的查询的Impalad进程,该进程会向Impala State Store提交注册订阅信息,State Store会创建一个statestored进程,statestored进程通过创建多个线程来处理Impalad的注册订阅信息用户通过CLI客户端提交一个查询到impalad进程,Impalad的Query Planner对SQL语句进行解析,生成解析树;然后,Planner把这个查询的解析树变成若干PlanFragment,发送到Query Coordinator,其中,PlanFragment由PlanNode组成的,能被分发到单独的节点上原子执行,每个PlanNode表示一个关系操作和对其执行优化需要的信息Coordinator通过从HDFS的名称节点中获取数据地址,从MySQL元数据库中获取元数据,以得到存储这个查询相关数据的所有数据节点Coordinator初始化相应impalad上的任务执行,即把查询任务分配给所有存储这个查询相关数据的数据节点Query Executor通过流式交换中间输出,并由Query Coordinator汇聚来自各个impalad的结果Coordinator把汇总后的结果返回给CLI客户端 11. 列举hive值的列所支持的3种集合数据类型 ARRAY 矩阵MAP 映射STRUCT 结构体

12. 列举几个hive常用的操作和基本语法

** 见下文中的实验回顾

实验回顾

** 详见我之前写的:【hadoop学习之路】Hive HQL 语句实现查询



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有