EMR(弹性MapReduce)入门之数据仓库工具Hive组件使用(十一)

2020-02-13 18:26:36 浏览数 (1)

Hive产生背景

Apache Hive数据仓库软件可以使用SQL方便地阅读、编写和管理分布在分布式存储中的大型数据集。结构可以投射到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive。

由Facebook开源,最初用于解决海量结构化的日志数据统计问题

MapReduce编程的不便性

HDFS上的文件缺少Schema(字段名,字段类型等)

Hive是什么

1、构建在Hadoop之上的数据仓库

2、Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)

3、通常用于进行离线数据处理(采用MapReduce)

4、底层支持多种不同的执行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark)

5、支持多种不同的压缩格式、存储格式以及自定义函数(压缩:GZIP、LZO、Snappy、BZIP2.. ; 存储:TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定义函数)

Apache HiveApache Hive数据仓库软件为分布式存储的大数据集上的读、写、管理提供很大方便,同时还可以用SQL语法在大数据集上查询。

1、是一种易于对数据实现提取、转换、加载的工具(ETL)的工具。可以理解为数据清洗分析展现。2、它有一种将大量格式化数据强加上结构的机制。3、它可以分析处理直接存储在hdfs中的数据或者是别的数据存储系统中的数据,如hbase。4、查询的执行经由mapreduce完成。5、hive可以使用存储过程6、通过Apache YARN和Apache Slider实现亚秒级的查询检索。

Hive架构

基本组成

1、 用户接口

CLI,Shell 终端命令行(Command Line Interface),采用交互形式使用 Hive 命令行与 Hive进行交互,最常用(学习,调试,生产)JDBC/ODBC,是 Hive 的基于 JDBC 操作提供的客户端,用户(开发员,运维人员)通过这连接至 Hive server 服务Web UI,通过浏览器访问 Hive

2、Thrift Serve

Thrift 是 Facebook 开发的一个软件框架,可以用来进行可扩展且跨语言的服务的开发,Hive 集成了该服务,能让不同的编程语言调用 Hive 的接口

3 、 元数据存储

元数据,通俗的讲,就是存储在 Hive 中的数据的描述信息。Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和外部表),表的数据所在目录Metastore 默认存在自带的 Derby 数据库中。缺点就是不适合多用户操作,并且数据存储目录不固定。数据库跟着 Hive 走,极度不方便管理。

解决方案:通常存我们自己创建的 MySQL 库( 本地 或  远程)Hive 和 MySQL 之间通过 MetaStore 服务交互。

4 、Driver : 编译器 (Compiler) ) ,优化器 (Optimizer) ) ,执行器 (Executor )

Driver 组件完成 HQL 查询语句从词法分析,语法分析,编译,优化,以及生成逻辑执行

计划的生成。生成的逻辑执行计划存储在 HDFS 中,并随后由 MapReduce 调用执行

Hive 的核心是驱动引擎, 驱动引擎由四部分组成:

(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)

(2) 编译器:编译器是将语法树编译为逻辑执行计划

(3) 优化器:优化器是对逻辑执行计划进行优化

(4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划

Hive工作原理

接收到一个sql,后面做的事情包括:

1.词法分析/语法分析:使用antlr将SQL语句解析成抽象语法树-AST

2.语义分析:从Megastore获取模式信息,验证SQL语句中队表名,列名,以及数据类型的检查和隐式转换,以及Hive提供的函数和用户自定义的函数(UDF/UAF)

3.逻辑计划生产:生成逻辑计划-算子树

4.逻辑计划优化:对算子树进行优化,包括列剪枝,分区剪枝,谓词下推等

5.物理计划生成:将逻辑计划生产包含由MapReduce任务组成的DAG的物理计划

6.物理计划执行:将DAG发送到Hadoop集群进行执行

7.将查询结果返回

Hive常见故障

1、所有Hive无法登陆,显示404

排查步骤:看各个节点组件是否异常;很多集群出现404,发现报错都是指向访问其中一个数据库;该数据库为元数据库,被退回了,恢复找回后恢复正常。

2、Hive任务运行时报异常解决思路

解决方法:首先确认是否使用Hadoop用户提交任务,确认该任务已经提交到yarn集群。

3、hdfs界面已授权,但是hive无权限

解决方法:主节点创建对应用户和用户组

4、hive目录/data/emr/hive/tmp里面的文件有的创建不了

原因分析:通过hive命令启动hive cli,而因为所在节点/data/emr/hive/tmp(或/tmp目录)目录一直未清理,创建目录数量(Inode数量)到上限,所以创建目录失败了。

解决方法:建议客户定期的删除/data/emr/hive/tmp(或/tmp目录)目录下的文件,比如修改时间为1天以前的目录。

5、Hive日志被删除。两台机器的配置一样,一台机器日志可以保留一天,另外一台机器日志只能保留一个小时。

解决思路:log4j2日志配置一致,怀疑有定期删除的脚本,需要确认。

0 人点赞