zoukankan      html  css  js  c++  java
  • 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 &

  • 相关阅读:
    slot 的简单使用(一)匿名插槽
    修改Tooltip 文字提示 的背景色 箭头颜色
    解决vue/cli3.0 语法验证规则 ESLint: Expected indentation of 2 spaces but found 4. (indent)
    洛谷P2014 选课(树形DP+分组背包)
    洛谷P4316 绿豆蛙的归宿(概率DP/期望DP+拓扑排序)
    Atcoder Beginner Contest 144 F- Fork the Road(概率DP/期望DP)
    Atcoder ABC144 Gluttony(贪心+二分)
    洛谷P1352 没有上司的舞会(树形DP+记忆化)
    HDU2476 String painter(区间DP)
    POJ1651 Multiplication Puzzle(区间DP+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/yjt1993/p/11041118.html
Copyright © 2011-2022 走看看