2.hive的基本概念
1.hive的概念
hive:是hadoop的一个数据仓库。提供了一个类sql的功能,通过写一个sql语句完成数据的分析。
- 将结构化的数据映射成一张表
- 结构化数据: 存有关系的数据(关系型数据库)、有一定规则的文本
- 半结构化数据:非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文档、JSON文档、Email等。
- 非结构化数据:没有固定模式的数据,如WORD、PDF、PPT、EXL,各种格式的图片、视频等。
hive本身不存储数据,数据存储到hdfs上,当执行sql语句的时候,实际是将sql语句转换成mapreduce去处理。
2.hive的架构
(1)用户的接口:写sql的地方,shell/cli jdbc odbc web接口
(2)解析器:
- 1)编译器:需要将sql编译成mapreduce
- 2)优化器:写一个sql,对sql进行一个优化
- 3)执行器:将mr交由yarn去执行
2.hive的架构:
1)用户接口:Hive提供多种用户接口,主要通过shell的client完成相关操作
2)解析器:
1)编译器:用于sql的解析,转化为mapreduce
2)优化器:在编译后的结果进行优化。
3)执行器:执行sql(最终执行mapreduce)
1)用户接口:Hive提供多种用户接口,主要通过shell的client完成相关操作
2)解析器:
1)编译器:用于sql的解析,转化为mapreduce
2)优化器:在编译后的结果进行优化。
3)执行器:执行sql(最终执行mapreduce)
MetaStore : 提供元数据服务。
Driver : 管理HQL执行的生命周期,贯穿Hive任务整个执行期间。
Compiler : 编译HQL并将其转化为一系列的Map/Reduce任务。
Optimizer : 优化器,优化HQL生成的执行计划和MapReduce任务。
Executor : 执行Map/Reduce任务。
ThriftServer : 提供thrift接口,作为JDBC和ODBC的服务端,将Hive和其他应用程序集成起来。
Clients :为用户访问提供命令行接口Beeline和JDBC/ODBC接口。
(3)元数据:默认存储derby数据库
- /hive bin/hive 产生两个库,元数据导致不一致
- 2.只允许一个人连接
- 3.实际中,我们使用mysql数据进行元数据的存储和管理
3.hive的安装部署
在使用hive之前,一定要启动hadoop
(1)详见文档
(2)hive使用beeline的方式:
使用beeline连接,hive中没有设置对于自己的用户名和密码,输入用户名和密码,对于用户名要使用hadoop安装时的用户名,输入root
hive的使用方式:
有3种
元数据存放在mysql
1)hive shell
2)通过jdbc的方式连接,beeline
===[首先启动metastore,再启动hiveserver2]
首先要启动服务,hiveserver2
前台启动方式: bin/hive --service hiveserver2
后台启动方式:nohup bin/hive --service hiveserver2 2>&1 &
然后通过beeline的方式访问:
bin/beeline
!connect jdbc:hive2://node03:10000
3)hive 命令
hive -e #指定一个sql语句执行
bin/hive -e "use test;select * from test001;“
hive -f #指定一个sql脚本执行
bin/hive -f text.sql
2.hive的介绍
hive:是基于hadoop的数据仓库的工具。hive中数据的存储在hadoop的hdfs上进行存储。
hive中数据的分析,使用类sql的语言进行分析---HQL
hive中sql的自行,最终会转换成mapreduce去执行。
学习hive的原因:
1)学习成本的降低
2) 降低项目开发周期
3)mapreduce的难度大
使用hive:
1)操作简单易上手
hive的特点:
1)可扩展:hive可以自由扩展集群的规模。
注意:hive没有集群的概念,只是一个工具。
2)延展性:功能可以扩展,主要是用户自定义函数(udf)
3)容错:hadoop的容错机制。
hive和hadoop的关系:
hive中数据存储是基于hdfs
hive的HQL执行是基于mapreduce
hive和hadoop的关系:紧耦合
hive:数据仓库,基于hadoop实现
架构:hadoop,
执行引擎:mr
存储:hdfs
安装:默认使用derby,我们要使用mysql
客户端的连接:
1 bin/hive
2 beeline
3bin/hive
-e 执行sql
-f执行sql文件
Hive和数据库比较
Hive 和数据库除了拥有类似的查询语言,再无类似之处。
1)数据存储位置
1、Hive 存储在 HDFS 。
2、数据库将数据保存在块设备或者本地文件系统中。
2)数据更新
Hive中不建议对数据的改写。
而数据库中的数据通常是需要经常进行修改的。
3)执行延迟
Hive 执行延迟较高。数据库的执行延迟较低。当然,这个是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势。
4)数据规模
Hive支持很大规模的数据计算;数据库可以支持的数据规模较小。