1.hive的简介: hive不是分布式,只是hadoop的一个客户端工具,是大数据行业中数据仓库建设的工具之一。 hive是基于hadoop的。hive是以表的形式存在,存储是放在hdfs上,计算用的是MapReduce,调度用的是yarn,查询语言用的是hive-sql. sql解析器:试用mysql的驱动。 在查询的时候,将sql语言解析成mapreduce任务进行执行。 hive适用的场景:离线批处理,一般用于BI报表开发,相关数据T+1的分析。 2.HIve与传统数据库比较 (1)查询语言: 类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用hive进行开发。 (2)数据存储位置: 所有Hive的数据都是存储在HDFS中的。而数据库则可以将数据保存在块设备或者本地文件系统中。 (3)数据格式: Hive中没有定义专门的数据格式。而在数据库中,所有数据都会按照一定的组织存储,因此,数据库加载数据的过程会比较耗时。 (4)数据更新: Hive对数据的改写和添加比较弱化,hive2版本之后支持,需要启动配置项。而数据通常是需要经常进行修改的。 (5)索引: Hive在加载数据的过程中不会对数据进行任何处理。因此访问延迟较高。数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了hive不适合在线数据查询。 (6)执行计算: Hive中执行是通过mapreduce来实现的而数据库通常有自己的执行引擎。 (7)数据规模: 由于hive建立在集群上并可以利用mapreduce进行并行计算,因此可以支持很大规模的数据;对应的数据库可以支持的数据规模较小。 3.hive的存储格式(建表的时候要指定压缩格式,默认是textfile) hive的数据存储基于Hadoop HDFS。 hive没有专门的数据文件格式,目前主流使用有三种。 (1)TextFile(普通文本文档类型。占用磁盘空间较大,但是读取效率高) 默认格式,数据不做压缩,磁盘开销大,数据解析开销大。 可结合Gzip、Bzip使用(系统自动检查,执行时自动解压),但是用这种方式hive不会对数据进行切分。从而对无法对数据进行并行操作。 (2)RCFile(一般压缩,用的最多。占用磁盘空间较大,读取效率性价比高) RCfile是一种行列存储相结合的存储方式。 首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列示存储,有利于数据压缩和快速的列存储 升级:orcfile (3)SequenceFile SequenceFile是Hadoop API提供的一种二进制文件,其具有使用方便、可分割、可压缩的特点。 4.hive将元数据存储在数据库中(metastore),目前只支持mysql、derby. (1)hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等解析器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。 (2)Hive的数据存储在HDFS中,大部分的查询由mapreduce完成(包含*的查询,比如select * from table 不会生成mapreduce任务)
hive学习day01
最新推荐文章于 2021-01-14 23:08:48 发布