• hive --metastore三种模式


    在官网上对于这几种模式的介绍如下:

    按Metastore数据库位置分:

    1、本地/嵌入式Metastore数据库(Derby)

    2、远程Metastore数据库(其他的关系型数据库,像mysql、oracle等)

    按Metastore server 分为如下:

    1、本地嵌入式Metastore服务

    2、远程Metastore服务

    以下三种方式是对于数据库位置来分的。

    一、derby模式(本地/嵌入式Metastore数据库),也是hive的默认模式

    嵌入式Metastore数据库主要用于单元测试。一次只能有一个进程连接到Metastore数据库,因此它不是一个真正的实用解决方案,但适用于单元测试。这种方式不使用与生产环境。

    配置:

    (1)解压hive到/data1/hadoop/目录

    (2)修改配置文件

    #copy hive-default.xml.template  hive-site.xml

    配置如下:

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
      <description>JDBC connect string for a JDBC metastore</description>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>org.apache.derby.jdbc.EmbeddedDriver</value>
      <description>Driver class name for a JDBC metastore</description>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>APP</value>
      <description>username to use against metastore database</description>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>mine</value>
      <description>password to use against metastore database</description>
    </property>
     
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>file:///Users/micmiu/tmp/hive/warehouse</value>
      <description>unit test data goes in here on your local filesystem</description>
    </property>

    执行初始化命令:schematool -dbType derby -initSchema

    查看初始化后的信息: schematool -dbType derby -info

    这种模式用的少

    二、本地模式(本地Metastore数据库,使用mysql存储。)

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://127.0.0.1:3306/hivedb?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=true</value>
      <description>JDBC connect string for a JDBC metastore</description>
    </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>micmiu</value>
      <description>password to use against metastore database</description>
    </property>
     
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <!-- base hdfs path -->
      <value>/user/hive/warehouse</value>
      <description>location of default database for the warehouse</description>

    需要把mysql的驱动包copy到目录 <HIVE_HOME>/lib 中

    如果是第一次需要执行初始化命令:schematool -dbType mysql -initSchema

    三、远程模式(也就是mysql数据库与hive安装在不同服务器)

    这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。

    安装mysql的服务器为slave1

    安装hive sevrver服务器为master

    <configuration>
     
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://slave1:3306/hive_remote?createDatabaseIfNotExist=true</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hive</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>password</value>
    </property>
     
    <property>
      <name>hive.metastore.local</name>         #模式改成false,也就是使用远程模式,默认情况下是true,也就是使用本地模式
      <value>false</value>
    </property>
     
    <property>
      <name>hive.metastore.uris</name>
      <value>thrift://master:9083</value>     #master为安装hive或者启动metastore服务的服务器地址
    </property>
     
    </configuration>
    

    上述把hive server和client都配置在一台机器了。下面进行拆分:

    服务器配置:

    <configuration>
     
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://slave1:3306/hive_remote?createDatabaseIfNotExist=true</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hive</value>
    </property>
     
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>password</value>
    </property>
    </configuration>

    客户端配置:

    <configuration>
     
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
    </property>

    <property> <name>hive.metastore.local</name> #模式改成false,也就是使用远程模式,默认情况下是true,也就是使用本地模式 <value>false</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://master:9083</value> #master为安装hive或者启动metastore服务的服务器地址 </property> </configuration>

    需要把mysql的驱动包copy到目录 <HIVE_HOME>/lib 中

    如果是第一次需要执行初始化命令:schematool -dbType mysql -initSchema

    hive metastore 服务端启动命令:
    hive --service metastore -p <port_num>
    如果不加端口默认启动:hive --service metastore,则默认监听端口是:9083 ,注意客户端中的端口配置需要和启动监听的端口一致。服务端启动正常后,客户端就可以执行hive操作了。

    如果要使用jdbc的方式连接,需要在服务器启动hiveserver2服务,该服务或者metastore服务都是使用thrift协议,监听10000端口。

    启动hiveserver2

    #hive --service hiveserver2 & 或者 hiveservre2 & 或者 nohup hiveserver2 1> xxx.log 2> xxx_err.log &

  • 相关阅读:
    1834. 单线程 CPU sort+优先队列 过了,学习vector<vector<int>>排序
    552. 学生出勤记录 II 力扣(困难) 记忆化搜索/dp 不会做,学习记忆化搜索转dp的学习
    526. 优美的排列 力扣(中等) dfs暴搜/ 状压dp是没想到的
    576. 出界的路径数 力扣(中等) 路径dp/记忆化搜索 都不会做
    1583. 统计不开心的朋友 力扣(中等) 模拟,思考一下
    233. 数字 1 的个数 力扣(困难) 数位dp/数学 不会做
    516. 最长回文子序列 力扣(中等) 区间dp,不会做
    446. 等差数列划分 II
    7.14 数据结构板子
    7.13 树上问题
  • 原文地址:https://www.cnblogs.com/yjt1993/p/11041118.html
Copyright © 2020-2023  润新知