Hive MetaStore同步方法

简介:

我们知道,Hive在方便的用SQL方式管理Hadoop的数据的时候,使用了MetaStore来保存所有表的信息,例如表名,字段名,类型,分隔符,序列化的方式等等。当我们使用OSS作为我们的数据存储的时候,我们会创建很多的外表,例如

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,
     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User')
 COMMENT 'This is the page view table'
 PARTITIONED BY(dt STRING, country STRING)
 LOCATION 'OSS://bucket/path/dt/country'

当我们在处理这样的数据的时候,这些表是可以通用的,也就是说我可以更换集群,但是这些表都是一样的,不需要变更。

然而如果我们使用集群内部的数据库来保存这些元信息,那么如果我们新建了集群,就无法共享到这些数据,需要在另一个集群上重新执行一遍创建数据表的Hive语句,或者把所有的表信息都同步到新集群上,这里我们会介绍几个方法来完成这个任务。

A. Mysql dump

一般Hive都会使用Mysql来作为它的默认元数据库,我们可以通过Mysql的dump功能将整个Hive的库dump出来,并同步到另一个Mysql数据库中。

  1. 登录到需要元数据库所有的节点,执行如下命令:
mysqldump --databases <databaseName> --single-transaction > hive_databases.sql –p

这里的是指Hive的元数据库的名字,默认情况下是hivemeta
在执行以后需要您输入root账号的密码,如果您不是以root账号操作,请加上-u指定操作的Mysql账号。如下:

mysqldump --databases <databaseName> --single-transaction > hive_databases.sql -u <user> –p

成功运行以后,会在当前目录下得到一个hive_databases.sql的文件。

  1. 将这个文件复制到您需要同步的目标Hive元数据库节点上
  2. 将所有的表信息同步到目标数据库中,执行如下命令:
 mysql <databaseName> < hive_databases.sql

这里的是指Hive的元数据库的名字,默认情况下是hivemeta

这个是一个不错的方式,很方便。理论上其他类型的数据,只要有自己的导入导出的支持,也可以这样做。

B. Hive Import/Export

Hive从0.8.0开始支持Import和Export命令,可以将需要同步的表以及它的数据一同导出,然后导入到目标位置。
参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport

  1. 导出表信息
export table <tablename> to '<path>';

是需要导出的表的名字
是要导出的位置,默认使用hdfs的路径

  1. 复制所有的信息到目标集群
    将path下的数据复制到目标集群中,可以通过oss来做中转。
  2. 导入表信息
    将数据存放到目标集群的hdfs目录中,然后执行
import from '<path>';

是数据存放的位置,默认使用hdfs的路径

使用这个方式,不是很方便,首先需要一张一张表的来操作导出,不能直接批量。
然后它在export的时候会默认把数据也导出,这个会徒增我们的操作量,不推荐。

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
SQL 存储 分布式计算
CDP的Hive3系列之Hive Metastore介绍
CDP的Hive Metastore (HMS) 是一种服务,用于在后端 RDBMS(例如 MySQL 或 PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据。Impala、Spark、Hive 和其他服务共享元存储。与 HMS 的连接包括 HiveServer、Ranger 和代表 HDFS 的 NameNode。
1642 0
CDP的Hive3系列之Hive Metastore介绍
|
SQL 缓存 分布式计算
SparkSQL与Hive metastore Parquet转换
Spark SQL为了更好的性能,在读写Hive metastore parquet格式的表时,会默认使用自己的Parquet SerDe,而不是采用Hive的SerDe进行序列化和反序列化
SparkSQL与Hive metastore Parquet转换
|
6月前
|
SQL 分布式计算 Java
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
|
4月前
|
SQL Java HIVE
Hive 远程连接的方法
Hive 远程连接的方法
33 1
|
6月前
|
SQL 运维 大数据
如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
|
8月前
|
SQL 存储 大数据
关于数据仓库的Hive的Hive架构的MetaStore元数据服务
随着大数据技术的不断发展,数据仓库成为了企业中不可或缺的一部分。而Hive作为一种开源的数据仓库系统,因其易于使用和高效处理等特点,成为了许多企业的首选。然而,对于普通用户来说,直接使用Hive的命令行工具进行操作并不方便。因此,开发者社区中涌现出了大量的Hive GUI工具,其中最为流行的就是Web GUI工具。
205 2
|
10月前
|
SQL Java 数据库
hive添加永久udf方法
hive添加永久udf方法
74 0
|
SQL 存储 分布式计算
Hive 2.1.1 MetaException(在metastore中找不到消息:版本信息)
Hive 2.1.1 MetaException(在metastore中找不到消息:版本信息)
214 0
|
SQL 存储 缓存
hive metastore 3.0介绍
我们说到Hive 3.0.0版本开始,其单独提供了standalone metastore服务以作为像presto等处理引擎的元数据管理中心。
|
SQL HIVE
解决启动Hive报错Hive Schema version 2.3.0 does not match metastore‘s schema version 1.2.0 Metastore is not
解决启动Hive报错Hive Schema version 2.3.0 does not match metastore‘s schema version 1.2.0 Metastore is not
142 0