当前位置:   article > 正文

Hive的Metastore服务和Hiveserver2服务的详细说明_hive --service metastore

hive --service metastore

Hive的Metastore服务和Hiveserver2服务的详细说明

一.Metastore服务

 1.什么时候需要开启和使用Metastore服务呢?

  首先我们先来了解Hive获取Mysql元数据的两种方式:
   ①Hive直连MySQL获取元数据
    启动方式:只需直接启动Hive客户端,即可连接
   ②Hive先连接Metastore服务,再通过 Metastore服务连接MySQL获取元数据

bin/hive(cli命令行的方式访问元数据)  --访问--> metaStore server --访问-->MySQL
  • 1

    启动方式:
     ①先启动Metastore服务
     ②在启动Hive客户端

 2.怎么控制连接MySQL到底要不要启动Metastore服务?

  在Hive的配置文件中 hive-site.xml 查看有没有如下配置,如果有那么Hive连接MySQL的方式则为第二种:
在这里插入图片描述
  如果想用第一种方式连接的话,需要把上面的配置注释掉 ,还需保证有如下配置:
在这里插入图片描述

 3.为什么有了第一种方式,还要用Metastore服务?不是很鸡肋吗?

  hive比较特殊,它既是自己的客户端,又是服务端。Hive充当客户端(是HDFS的客户端也是Metastore的客户端,也是Hive的客户端)又充当服务端(因为有Metastore服务和Hiveserver2服务配置)
  因为在实际生产环境下,可能有多台Hive客户端(比如有:103、104、105三台机器),MySQL的 IP地址对外不暴露,只暴露给其中一台(假如暴露给103这台机器),那么其他客户端怎么连接呢?那么就需要在暴露的那台机器上启动Metastore服务,其他Hive客户端连接这个Metastore服务,进而达到连接Mysql获取元数据的目的。
  启动:
   ①在103上启动Metastore服务
   ②在其他客户端(比如104、105)启动hive客户端
  如果其它机器只作为客户端机器的 话hive-site.xml 文件只需如下配置,否则可以完整配置:
在这里插入图片描述
二.Hiveserver2服务

bin/beeline(jdbc的方式访问元数据) --访问-->hiveServer2 --访问--> metaStore server --访问--> MySQL
  • 1

 hive是hadoop的客户端,同时hive本身也有客户端,Hiveserver2的beeline连接方式实际是Hive与Hive之间的服务端与客户端通过JDBC连接的方式

 上面提到了作为客户端的机器比如104,当它作为103的客户端时,那么可以用Hiveserver2服务连接:
  ①在103上启动Hiveserver2服务(如果配置了Metastore服务依旧也要启动)
  ②在104上启动beline客户端也可以连接
 像我们平时使用的DBeaver或者Datagrip软件都是通过JDBC的方式连接Hive,所以需要开启hiveServer2服务

 注:HIver既是客户端又是服务端时,可以在同一个机器上启动服务端和客户端,如果想要后台启动可以用以下命令:

nohup hiveserver2 &
  • 1

三.Hive客户端与服务端的启动

1.启动服务端
	hive --service metastore 
	hive --service hiveserver2
2.启动客户端
	hive
	beeline -u jdbc:hive2://hadoop102:10000 -n root
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

四.附完整版的配置文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop103:3306/metastore?useSSL=false</value>
    </property>
    <!-- jdbc连接的Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <!-- jdbc连接的用户名-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
	<!-- jdbc连接的密码-->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>000000</value>
</property>
	<!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
	<!-- Hive元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
	<!-- 指定存储元数据要连接的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop103:9083</value>
    </property>
	<!-- 指定hiveserver2连接的端口号 -->
    <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    </property>
	<!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop103</value>
    </property>
	<!-- 元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <!-- 打印表头  -->
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>
	<!-- 打印当前所在的库  -->
    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
  <property>
        <name>hive.zookeeper.quorum</name>
        <value>hadoop103,hadoop104,hadoop105</value>
    </property>

    <property>
        <name>hive.zookeeper.client.port</name>
        <value>2181</value>
    </property>

</configuration>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/429565
推荐阅读
相关标签
  

闽ICP备14008679号