hive3.1.2概述和基本操作

1.hive基本概念

hive简介

hive的本质:Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更近一步说hive就是一个MapReduce客户端。

经常有面试问什么时hive
我们可以从两点来回答:
1.hive时数据仓库的建模工具之一。
2.可以向hive传入一条交互式的sql,在海量数据中查询分析得到结果的平台

hive的优缺点:

优点:
1、操作接口采用类sql语法,提供快速开发的能力(简单、容易上手)
​ 2、避免了去写MapReduce,减少开发人员的学习成本
​ 3、Hive的延迟性比较高,因此Hive常用于数据分析,适用于对实时性要求不高的场合
​ 4、Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高。(不断地开关JVM虚拟机)
​ 5、Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
​ 6、集群可自由扩展并且具有良好的容错性,节点出现问题SQL仍可以完成执行
缺点:
​> 1、Hive的HQL表达能力有限
​ (1)迭代式算法无法表达 (反复调用,mr之间独立,只有一个map一个reduce,反复开关)
​ (2)数据挖掘方面不擅长
​ 2、Hive 的效率比较低
​ (1)Hive 自动生成的 MapReduce 作业,通常情况下不够智能化
​ (2)Hive 调优比较困难,粒度较粗 (hql根据模板转成mapreduce,不能像自己编写mapreduce一样精细,无法控制在map处理数据还是在reduce处理数据)

hive和传统数据库对比

hive和mysql上面区别?

 数据存储位置    数据格式    数据更新                    索引            执行    执行延迟    可扩展性  数据规模

hive:HDFS       用户自定义    不支持(1.x以后版本支持)  新版本有但弱    MAPReduce| 高           高         大
sql  :本地FS      系统决定      支持                      有            Executor 低           低         小
  
     

hive应用场景

日志分析:大部分互联网公司使用hive进行日志分析,如百度、淘宝等。
​ 统计一个网站一个时间段内的pv,uv,SKU,SPU,SKC
​ 多维度数据分析(数据仓库
海量结构化数据离线分析

1.2 hive架构

1.2.1 Client

Hive允许client连接的方式有三个CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问 hive)。JDBC访问时中间件Thrift软件框架,跨语言服务开发。DDL DQL DML,整体仿写一套SQL语句。

​ 1)client–需要下载安装包

​ 2)JDBC/ODBC 也可以连接到Hive
​ 现在主流都在倡导第二种 HiveServer2/beeline
​ 做基于用户名和密码安全的一个校验

​ 3)Web Gui
​ hive给我们提供了一套简单的web页面
​ 我们可以通过这套web页面访问hive 做的太简陋了

1.2.2 Metastore

元数据包括表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是 外部表)、表的数据所在目录等。

​ 一般需要借助于其他的数据载体(数据库)

​ 主要用于存放数据库的建表语句等信息

​ 推荐使用Mysql数据库存放数据

​ 连接数据库需要提供:uri username password driver

1.2.3 Driver(面试题:sql语句是如何转化成MR任务的?)

元数据存储在数据库中,默认存在自带的derby数据库(单用户局限性)中,推荐使用Mysql进行存储。

​ 1) 解析器(SQL Parser):将SQL字符串转换成抽象语法树AST(从3.x版本之后,转换成一些的stage),这一步一般都用第三方工具库完 成,比如ANTLR;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

​ 2) 编译器(Physical Plan):将AST编译(从3.x版本之后,转换成一些的stage)生成逻辑执行计划。

​ 3) 优化器(Query Optimizer):对逻辑执行计划进行优化。

​ 4) 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是 MR/Spark/flink。

1.2.4 数据处理

Hive的数据存储在HDFS中,计算由MapReduce完成。HDFS和MapReduce是源码级别上的整合,两者结合最佳。解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。

hive的三种交互方式

1) hive
2) 第二种交互方式
Hive作为一个启动器,对外提供服务

服务端启动hiveserver2服务:
nohup hive --service metastore >/dev/null &
nohup hiveserver2 &

需要稍等一下,启动服务需要时间:
进入命令:1)先执行: beeline ,再执行: !connect jdbc:hive2://master:10000 
        2)或者直接执行:  beeline -u jdbc:hive2://master:10000 -n root
退出命令行:!exit

3) 第三种交互方式
使用参数 -e来执行hql语句

bin/hive -e "show databases;"

posted on 2024-05-15 16:15  合肥彭于晏  阅读(23)  评论(0编辑  收藏  举报

导航