Hive MetaStore同步方法

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介:

我们知道,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的时候会默认把数据也导出,这个会徒增我们的操作量,不推荐。

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
SQL 分布式计算 DataWorks
同步Hive表数据报block文件不存在问题 java.io.FileNotFoundException: File does not exist
同步Hive表数据报block文件不存在问题 java.io.FileNotFoundException: File does not exist
|
4月前
|
SQL 负载均衡 监控
|
4月前
|
SQL 存储 关系型数据库
|
5月前
|
SQL DataWorks 监控
DataWorks产品使用合集之同步数据到Hive时,如何使用业务字段作为分区键
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
SQL 分布式计算 HIVE
实时计算 Flink版产品使用问题之同步到Hudi的数据是否可以被Hive或Spark直接读取
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 存储 SQL
实时计算 Flink版产品使用问题之kafka2hive同步数据时,如何回溯历史数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
SQL 分布式计算 Java
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
|
SQL 分布式计算 Ubuntu
【Hive】Hive开启远程连接及访问方法
【Hive】Hive开启远程连接及访问方法
2654 0
|
7月前
|
SQL Java HIVE
Hive 远程连接的方法
Hive 远程连接的方法
108 1
|
7月前
|
SQL 存储 分布式计算
Hive的性能优化有哪些方法?请举例说明。
Hive的性能优化有哪些方法?请举例说明。
161 0