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

按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 &

hive --metastore三种模式的更多相关文章

  1. Hive metastore三种配置方式

    http://blog.csdn.net/reesun/article/details/8556078 Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储.远端存储比较适 ...

  2. Hive 之元数据库的三种模式

    Hive 介绍 http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html Hive的数据类型和数据模型 http://www ...

  3. git push :推送本地更改到远程仓库的三种模式

    摘要:由于在git push过程中,no-fast-forward 的push会被拒绝,如何解决git push失败的问题?这里面有三种方法,分别会形成merge形式的提交历史,线性形式的提交历史,覆 ...

  4. App开发三种模式

    APP开发三种模式 现在App开发的模式包含以下三种: Native App 原生开发AppWeb App 网页AppHybrid App 混合原生和Web技术开发的App 详细介绍: http:// ...

  5. [转]VMware Workstation网络连接的三种模式

    经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...

  6. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  7. LVS三种模式配置及优点缺点比较 转

    LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...

  8. MySQ binlog三种模式

    MySQ binlog三种模式及设置方法 1.1 Row Level  行模式 日志中会记录每一行数据被修改的形式,然后在slave端再对相同的数据进行修改 优点:在row level模式下,bin- ...

  9. delegate,notifucation,KVO三种模式实现通信的优缺点

             在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delega ...

随机推荐

  1. HTML的发展历史

    HTML是Web统一语言,这些容纳在尖括号里的简单标签,构成了如今的Web,1991年,Tim Berners-Lee编写了一份叫做“HTML标签”的文档,里面包含了大约20个用来标记网页的HTML标 ...

  2. UI5-技术篇-SEGW DEEP ENTITY测试

    参考:http://blog.sina.com.cn/s/blog_a7d67d810102xgms.html 一般调用后端的OData服务需要同时传输多个记录表对业务逻辑进行处理(例如BAPI),今 ...

  3. Vue指令之`v-bind`的三种用法及v-on事件指令

    v-bind:是 Vue中,提供的用于绑定属性的指令 1. 直接使用指令`v-bind` 2. 使用简化指令`:` 3. 在绑定的时候,拼接绑定内容:`:title="btnTitle + ...

  4. Redis系列之-—内存淘汰策略(笔记)

    一.Redis ---获取设置的Redis能使用的最大内存大小 []> config get maxmemory ) "maxmemory" ) " --获取当前内 ...

  5. LNMP环境搭建wordpress博客及伪静态

    WordPress是使用PHP语言开发的博客平台,是一款开源的软件,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用 ...

  6. Python 一些内置函数的总结~~~~

    1. type() 两种用法 a. 当传入参数为一个时,返回值为参数的类型 b. 当传入参数为三个时,type(name, bases, dict) name: 类名 bases: 继承父类的元组,可 ...

  7. Django 使用form组件对文件上传

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. TortoiseSVN “*/SendRpt.exe not found”?

  9. VS Code Monokai Pro验证

    最新的VS Code Monokai Pro激活方式 需要vscode,并且安装了monokai pro插件 进入目录 Mac OS cd -/.vscode/extensions/monokai.t ...

  10. k8s的核心对象

    一.Deployment的概念 K8S本身并不提供网络的功能,所以需要借助第三方网络插件进行部署K8S中的网络,以打通各个节点中容器的互通. POD,是K8S中的一个逻辑概念,K8S管理的是POD,一 ...