一.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),可以共性元数据,本地可以连接