Hive

142 阅读2分钟

一.SQL,Hive和MapReduce的关系

sql,hive,mr的关系.jpg

用户在hive上编写sql语句,hive把sql语句转为mapreduce程序去执行

二.Hive架构映射流程

Hive架构映射流程1.jpg

Hive架构映射流程2.jpg

用户接口: 
        包括 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种模式: 内嵌模式、本地模式、远程模式
推荐使用: ==远程模式==

MetaStore元数据管理三种模式.jpg

内嵌模式:
    优点: 配置简单 hive命令直接可以使用
    缺点: 不适用于生产环境,derby和Metastore服务都嵌入在主Hive Server进程中,
    一个服务只能被一个客户端连接(如果用两个客户端以上就非常浪费资源),且元数据不能共享

本地模式: 
    优点:可以单独使用外部的数据库(mysql),元数据共享
    缺点:相对浪费资源,metastore嵌入到了hive进程中,每启动一次hive服务,都内置启动了一个metastore。
    
远程模式:
    优点:可以单独使用外部库(mysql),可以共享元数据,本地可以连接metastore服务也可以连接hiveserver2服务,
    增加了扩展性(其他依赖hive的软件都可以通过Metastore访问hive)
    缺点:需要注意的是如果想要启动hiveserver2服务需要先启动metastore服务

四.hive服务操作

四.hive服务操作.jpg

启动服务

nohup hive --service metastore &
nohup hive --service hiveserver2 &

中止服务

采用杀死进程的方式 具体为 kill -9 进程名