hive简介

hive相关参数说明:https://www.cnblogs.com/duanxingxing/p/4535842.html

一、hive概要介绍

hive是由facebook开源用于解决海量结构化日志的数据统计;是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类sql查询功能。
本质是将hql转化成MapReduce程序。

  1. hive处理的数据存储在hdfs。
  2. hive数据分析底层的默认实现是MapReduce(可以更改为spark)。
  3. 执行程序运行在yarn上。

1.1、特点

  1. 采用类sql语法,简单易用。
  2. 避免去写MapReduce进行数据搜索和处理,减少开发成本。
  3. hive的执行延迟比较高,因此hive常用于数据分析,对实时性要求不高的场合。
  4. hive支持用户自定义数据,用户可根据需求实现自己的函数。
  5. 迭代式算法无法表达。

1.2、部署方式

  1. 内嵌模式,使用内嵌Derby数据库部署(默认使用),只支持单用户访问。
  2. 本地模式,结合mysql的local模式,支持多用户访问。
  3. 远程模式,结合mysql的remote模式,支持多用户并发访问。

二、hive的架构

2.1、总体架构

在这里插入图片描述

2.2、远程模式

在这里插入图片描述

2.3、本地模式

在这里插入图片描述

2.4、内嵌模式

在这里插入图片描述

三、补充说明

3.1、须知

  1. 早期的hive只允许单用户连接访问,其用户和用户组是直接来源于linux本地的用户和用户组,因此无法对hive表进行增删改等操作。而后续的hive是基于元数据来管理多用户的并发控制权限,数据分为元数据和数据文件两部分,元数据存储在mysql,而数据文件则是HDFS,控制元数据即控制可访问的数据文件。
  2. 本地模式和远程模式的区别在于hive服务和metastore服务是否在同一进程。
  3. mysql中hive的元数据表是存储hive创建的database、table等信息的,数据存储与mysql本身并无大的关系。
  4. hive的用户和用户组来源与linux的用户和用户组,自身只负责控制权限。
  5. HiveServer2提供了一个新的命令行工具Beeline,它是基于SQLLine
    CLI的JDBC客户端。Beeline工作模式有两种,即本地嵌入模式和远程模式。嵌入模式情况下,它返回一个嵌入式的Hive(类似于Hive
    CLI);而远程模式则是通过Thrift协议与某个单独的HiveServer2进程进行连接通信。

3.2、关于MetaStore和HiveServer

Metadata:
即hive表元数据信息,可通过此信息操纵hive表中的内容,存储在mysql或derby等关系型数据库中。
Metastore:
可将其理解成一个连接元数据所在数据库,其本质时一个thrift服务,用来获取元数据。在远程模式下,该服务可同时被多个客户端连接,并且不需要知道mysql数据库的用户名和密码。
HiveServer:
提供一个服务接口,HiveClient可利用此接口进行数据查询等操作,是用来获取数据的。

四、hive的配置文件

hive主要有两个配置文件,主配置文件路径为$HIVE_HOME/conf/hive-site.xml.template,日志配置文件路径为$HIVE_HOME/conf/hive-log4j2.properties.template。在配置之前,需要将原文件后缀.template去掉才能生效。

4.1、非内嵌模式下Metastore的配置

以下为hive server和hive client的配置文件hive-site.xml,如果为同一台物理机,可将其合并。

<configuration>
    <!--MetaStoreServer上配置-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://数据库ip:3306/hive_remote?useSSL=false</value>
        <description>JDBC connect string for a JDBC metastore</description>
        <!-- 如果 mysql 和 hive 在同一个服务器节点,那么请将数据库ip填写为 localhost -->
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive</value>
        <description>password to use against metastore database</description>
    </property>
    <!--  hive数据的默认存储路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <!--MetaStoreClient上配置-->
    <!-- 远程hive metastore的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://Hiveserver IP:9083</value>
    </property>
    <!--  hive数据的默认存储路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <!--  metastore是否在本地,hiveserver2已经不需要配置此项了,hive.metastore.uris为空则表示本地,否则就是远程 -->
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
    </property>
</configuration>

4.2、hive server2的配置

以下是hive-site.xml关于hive server2的配置。

<property>  
    <name>datanucleus.autoCreateSchema</name>  
    <value>false</value>
    <description>与datanucleus.fixedDatastore搭配禁止JDO框架来自动更新元数据schema</description>  
</property>        
<property>  
    <name>datanucleus.fixedDatastore</name>  
    <value>true</value>
    <description>与datanucleus.fixedDatastore搭配禁止JDO框架来自动更新元数据schema</description> 
</property>   
 
<!-- 并发控制,初始化前不能配置 -->  
<property> 
    <name>hive.support.concurrency</name> 
    <value>true</value> 
    <description>是否开启并发,默认为false,不可以在内嵌模式下开启,建议在本地模式下开启,配和zookeeper使用</description>
</property>
<property>  
    <name>hive.zookeeper.quorum</name> 
    <value>主节点:2181,从节点1:2181,从节点2:2181</value>  
    <description>配置集群中zk的地址和端口</description>
</property>

<!-- impersonation设置 -->
<property>
    <name>hive.server2.enable.doAs</name>
    <value>true</value>
    <description>为true表示以提交用户的身份提交作业给yarn,为false则以执行hive进程的用户提交作业,默认为true</description>
</property>

<!-- webUI配置 -->
<property>  
    <name>hive.server2.webui.host</name>  
    <value>192.168.48.130</value>  
    <description>web管理界面ip地址</description>  
</property>  
<property>  
    <name>hive.server2.webui.port</name>  
    <value>10002</value>  
    <description>web管理界面端口,可以设置为0或-1来禁用</description>  
</property>

<!-- hive server监听的主机地址和端口 -->
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    <description>监听端口号,默认为10000</description>
</property>
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>hive server地址</value>
    <description>监听地址</description>
</property>

<!-- 权限配置 -->
<property>
    <name>hive.security.authorization.enabled</name>
    <value>true(默认为fasle)</value>
    <description>开启或关闭hive客户端的权限验证</description>
</property>
<property>
    <name>hive.security.authorization.createtable.owner.grants</name>
    <value>ALL</value>
    <description>每当创建表时,自动授予所有者的特权</description>
</property>

注意:

  1. 并发控制需要zookeeper的协调,没有配置hive.zookeeper.quorum会导致无法并发执行hive请求。
  2. Hive 2.0 以后才支持Web UI的,在以前的版本中并不支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值