一.SQL,Hive和MapReduce的关系
用户在hive上编写sql语句,hive把sql语句转为mapreduce程序去执行
二.Hive架构映射流程
用户接口:
包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;
Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。
WebGUI是通过浏览器访问Hive。
-- Hive提供了 Hive Shell、 ThriftServer等服务进程向用户提供操作接口
Driver:包括语法解析器、计划编译器、优化器、执行器作用 完成 HQL 查询语句从词法分析、语法分析、
编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由MapReduce 调用执行。
注意:这部分内容不是具体的服务进程,而是封装在Hive所依赖的Jar包中Java代码中。
元数据包含:用Hive创建的database、table、表的字段等元信息。
元数据存储:存在关系型数据库中,如:hive内置的Derby数据库或者第三方MySQL数据库等,一般使用Mysql数据库。
Metastore:即元数据存储服务,
作用是: 客户端连接metastore服务,metastore再去连接MySQL等数据库来存取元数据。
特点: 有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL等数据库的用户名和密码,
只需要连接metastore 服务即可。
三.MetaStore元数据管理三种模式
metastore服务配置有3种模式: 内嵌模式、本地模式、远程模式
推荐使用: ==远程模式==
内嵌模式:
优点: 配置简单 hive命令直接可以使用
缺点: 不适用于生产环境,derby和Metastore服务都嵌入在主Hive Server进程中,
一个服务只能被一个客户端连接(如果用两个客户端以上就非常浪费资源),且元数据不能共享
本地模式:
优点:可以单独使用外部的数据库(mysql),元数据共享
缺点:相对浪费资源,metastore嵌入到了hive进程中,每启动一次hive服务,都内置启动了一个metastore。
远程模式:
优点:可以单独使用外部库(mysql),可以共享元数据,本地可以连接metastore服务也可以连接hiveserver2服务,
增加了扩展性(其他依赖hive的软件都可以通过Metastore访问hive)
缺点:需要注意的是如果想要启动hiveserver2服务需要先启动metastore服务
四.hive服务操作
启动服务
nohup hive --service metastore &
nohup hive --service hiveserver2 &
中止服务
采用杀死进程的方式 具体为 kill -9 进程名