1、Hive简介
什么是Hive
Hive是一个语句Hadoop的一个数据仓库工具,是将结构化数据文件映射成为一个数据表,并提供类SQL的查询功能。
为什么使用Hive
在hadoop是个好软件,但是不好使用(学习成本太高,坡度陡,难度大)的前提下
降低了程序员使用hadoop的学习成本,降低了难度。
Hive的特点
可扩展性:与集群的扩展性相同
延展性:Hive提供自定义函数接口,支持HQL语句直接调用java 方法
容错性:节点出现问题SQL仍可完成执行。
2、 Hive架构
架构图
基本组成
用户接口:包括CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
元数据存储:通常是存储在关系数据库如mysql/derby中。Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器、执行器:完成HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有MapReduce 调用执行。
3、Hive与Hadoop的关系
Hive利用HDFS存储数据,利用MapReduce查询分析数据
4、Hive与传统数据库对比
hive用于海量数据的离线数据分析
Hive中没有定义专门的数据格式,用户提供的数据是什么格式,hive直接将数据拷贝到集群。不会对数据格式进行改变。
用户定义数据格式需要指定三个属性:
列分隔符(通常为空格、”\t”、”\x001″)、
行分隔符(”\n”)
读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)
不会对数据本身进行任何修改,甚至不会对数据进行扫描。
Hive 中不支持对数据的改写和添加(在 一个文本中添加新数据)
Hive 在加载数据的过程中不会对数据中的某些 Key 建立索引。
总结:hive 具有sql 数据库的外表,但应用场景完全不同,hive 只适合用来做批量数据统计分析
5、Hive的数据存储
DB、数据库
Table, 表(内部表)
External Table, 外部表
Partition,分区
Bucket。分桶
Hive支持的数据格式
可支持Text, SequenceFile ,ParquetFile,ORC格式RCFILE等