Hive、Hive初始化元数据库

228 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情

4.Hive初始化元数据库 在mysql中创建hive存储元数据的数据库metastore,再通过hive的初始化元数据库操作创建表 1)登陆MySQL [atguigu@hadoop102 module]mysqlurootp你的密码2)新建Hive元数据库mysql>createdatabasemetastore;mysql>quit;3)初始化Hive元数据库[atguigu@hadoop102hive] mysql -uroot -p你的密码 2)新建Hive元数据库 mysql> create database metastore; mysql> quit; 3)初始化Hive元数据库 [atguigu@hadoop102 hive] bin/schematool -initSchema -dbType mysql -verbose 5.启动Hive 1)启动Hive [atguigu@hadoop102 hive]$ bin/hive 2)使用Hive

hive> show databases;                       // 查看所有的数据库
hive> show tables;                          // 查看所有的表,刚才创建的表test_derby是否存在?为什么?
hive> create table test_mysql (id int);      // 创建test_mysql表,一个字段为id,类型为int
hive> insert into test_mysql values(1002);  // 向表test_mysql中插入数据
hive> select * from test_mysql;                // 查看test2表

3)开启另一个窗口测试,是否支持客户端并发访问 [atguigu@hadoop102 hvie]$ bin/hive hive> show tables; hive> select * from test_mysql; 5.直连模式问题: 在公司生产环境中,网络环境会非常复杂,mysql的所在环境可能存在网络隔离,无法直接访问;另外,mysql的root账户和密码在此模式下会存在泄露风险,存在数据安全隐患。 思考:在hadoop103上部署hive,元数据库使用的仍然是hadoop102的Mysql实例,如何实现?

2.3.3 元数据之MetaStore Server

1.元数据服务模式示意图

在这里插入图片描述 2.元数据服务模式 在服务器端启动MetaStore服务,客户端利用Thrift协议通过MetaStore服务访问元数据库。 元数据服务的访问方式更适合在生产环境中部署使用,相比内嵌式,该方式更加的灵活。(跨网络跨语言跨平台) 3.将Mysql做为元数据库,部署元数据服务 1)首先,将hive的元数据库配置为Mysql [atguigu@hadoop102 hive]vimconf/hivesite.xml2)在hivesite.xml文件中添加如下配置信息<!指定存储元数据要连接的地址><property><name>hive.metastore.uris</name><value>thrift://hadoop102:9083</value></property>注意:在配置了此参数后,启动hive之前必须先启动元数据服务,否则,hive启动后无法连接到元数据服务2)启动元数据服务[atguigu@hadoop102hive] vim conf/hive-site.xml 2)在hive-site.xml文件中添加如下配置信息 <!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop102:9083</value> </property> 注意:在配置了此参数后,启动hive之前必须先启动元数据服务,否则,hive启动后无法连接到元数据服务 2)启动元数据服务 [atguigu@hadoop102 hive] bin/hive --service metastore 2021-10-18 18:22:24: Starting Hive Metastore Server 注意: 启动后窗口不能再操作,需打开一个新的shell窗口做别的操作 1)启动 hive,查看表及表中数据,是否是Mysql数据库中的表。 2)在另一个窗口启动hive,测试多客户端能否同时连接操作。 思考:在hadoop103上使用元数据服务模式部署hive如何实现?

2.4 hive的两种访问方式

2.4.1 命令行的方式

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

  1. 在前面的操作中,我们都是通过cli的方式访问hive的。
  2. 我们可以切身的体会到,通过cli的方式访问hive的不足,如:cli太过笨重,需要hive的jar支持。

2.4.2 HiveServer2模式

1.JDBC访问Hive示意图: 在这里插入图片描述 2. JDBC方式访问Hive JDBC方式,本质上是将hive包装为服务发布出去,开发者使用JDBC的方式连接到服务,从而操作hive。 减少了对hive环境的依赖 3. 开启Hiveserver2 1)在hive-site.xml文件中添加如下配置信息

  <!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop102</value>
    </property>
    <!-- 指定hiveserver2连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
  1. 重启MetaStore服务 [summer@hadoop102 hive]bin/hiveservicemetastore3)启动hive服务(这里需要考虑元数据的访问方式,如何使用元数据服务的模式,需要提前开启元数据服务)[summer@hadoop102hive] bin/hive --service metastore 3)启动hive服务(这里需要考虑元数据的访问方式,如何使用元数据服务的模式,需要提前开启元数据服务) [summer@hadoop102 hive] bin/hive --service hiveserver2 4)启动beeline客户端(需要多等待一会,否则会报错连不上) [summer@hadoop102 hive]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n summer 5)注意:如果出现异常报错,如summeris not allowed to impersonate summer