hive本身不存储数据,借助hdfs存储数据,hive和关系型数据库一样是有表结构的,这些信息hive也存储在第三方软件中,如derby、mysql。

根据元数据的存储方式,hive的部署可以分为三种:

一,local模式

采用内置的derby数据库存储元数据,这种方式只能有一个客户端访问hive,多个客户访问会报错,适合开发测试。

hive服务和metastore服务运行在同一个进程中,derby服务也运行在该进程中。

配置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

二,本地模式

使用mysql存储元数据。

hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以在同一台机器上,也可以在远程机器上。

该模式配置hive-site.xml如下:

<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存储元数据,客户端不直接访问mysql,而是通过metaserver元数据服务访问MySQL,元数据服务允许并发访问,生产环境都是这种模式。

这种存储方式需要在远端服务器运行一个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>

上面把客户端和服务端配置在一起,生产环境中,通常客户端和服务端是分开的,配置也要分开。

服务端配置:

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

四,总结

远程的mysql并不能称之为“远程模式”,是否远程指的是metastore和hive服务是否在同一进程内,换句话说,“远”指的是metastore和hive服务离得“远”。

hive三种元数据存储方式相关推荐

  1. asp.net session 介绍一三种Session存储方式

    asp.net session 介绍一三种Session存储方式 www.firnow.com 时间:2009-03-04 作者:匿名 编辑:sky 点击: 1478 [评论] 对于asp.net的程 ...

  2. DAS、SAN和NAS三种服务器存储方式

    一.存储的分类 根据服务器类型分为:封闭系统的存储和开放系统的存储, 内置存储 外挂存储  外挂存储根据连接的方式分为: 网络接入存储(Network-Attached Storage,简称NAS) ...

  3. 前端三种本地存储方式+indexedDB浏览器数据库存储

    1.cookie存储: 特征:1.不同的浏览器存放的cookie位置不一样,也是不能通用的.2.cookie的存储是以域名形式进行区分的,不同的域下存储的cookie是独立的.3.我们可以设置cook ...

  4. 数据存储方式有哪些?这3种数据存储方式了解吗?

    数据存储具有很强的现实意义,只有采取合理的数据存储方式,才能够有利于数据的管理.检索等.为增进大家对数据存储方式的认识,本文将对三种数据存储方式予以介绍.如果你对数据存储方式具有兴趣,不妨继续往下阅读 ...

  5. Hive的三种建表方式

    Hive的三种建表方式 1.直接建表法: 2.抽取(as) 建表: 3.like建表 1.直接建表法: create table movies (uid string,iid string,score ...

  6. lvs的调度算法有几种_LVS:三种负载均衡方式比较

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

  7. LVS:三种负载均衡方式比较+另三种负载均衡方式

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  8. LVS:三种负载均衡方式比较

    1.什么是LVS?   首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具 ...

  9. LVS:三种负载均衡方式与八种均衡算法

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

最新文章

  1. 微生物样本取样及微生物基因组DNA提取建议
  2. 剑指offer:字符流中第一个不重复的字符
  3. git如何利用分支进行多人开发
  4. Django框架(19.Django中获取url的参数(位置参数以及关键字参数))
  5. 10 操作系统第二章 进程管理 死锁、死锁的处理策略 银行家算法
  6. 了不起的女子力:美妆消费蓝海与趋势赛道
  7. AOSP6.0.1 launcher3入门篇-解析DeviceProject.java及相关文件
  8. 微课|玩转Python轻松过二级(1.3节):编码规范与代码优化建议1
  9. Shell基本应用(学习笔记)
  10. C语言排序方法------堆排序
  11. MDT2010学习(八),MDT结合WDS部署Win7 x86企业版
  12. 程序员养猫,并不是用来撸的!
  13. 智慧小区智能物业管理系统综合解决方案
  14. 微信小程序自定义导航栏样式
  15. Cadence PSpice 仿真3: 电容器充放电瞬态仿真图文教程
  16. unity交通仿真_自动驾驶仿真该怎么玩
  17. Linux与数据结构 2019-2-1
  18. 易基因|RNA m7G甲基化测序(m7G-MeRIP-seq)
  19. 【红包雨】活动红包雨实现逻辑(ionic+springboot)
  20. ibm服务器怎么安装win7系统安装,thinkpad如何安装win7系统

热门文章

  1. 我们测了30款移动硬盘,却如此尴尬
  2. 亿图图示专家 - 专业流程图,网络拓扑图,组织结构图设计软件
  3. 信息安全数学基础 Chapter 4——二次剩余与方根
  4. 300元买什么蓝牙耳机性价比高?300左右性价比高的蓝牙耳机推荐
  5. 拓展欧几里得+例题~
  6. FinalShell 连接出现 chanel is not opened解决方案记录
  7. WSL上安装Mysql-server
  8. 浙江金华 | “双龙杯”创业创新大赛
  9. 转:EDW的建模思想
  10. 学习Java需要先学C语言吗-不学c直接学java