【问题标题】:Hive - Multiple clusters pointing to same metastoreHive - 指向同一个元存储的多个集群
【发布时间】:2017-11-08 09:48:50
【问题描述】:

我们有两个集群,一个是旧的,一个是新的。他们都在 AWS - EMR 上。这些集群上的 Hive 指向 RDS 上的相同 Hive 元存储。我们正在从旧迁移到新。

现在的问题是,如果我停止旧集群,访问旧表会有任何问题吗? " 所有的数据都在 S3 上。所有的表都是外部的。但是数据库仍然在 HDFS 上......就像

hdfs://old:1234/user/hive/warehouse/myfirst.db

如果我停止旧集群,这个位置是无效的,这会使 db 和表无效?尽管它们是外部的。

我真的不确定这是否会成为一个问题,但这是在生产中,所以我试图找出是否有人已经遇到过这个问题。

谢谢!

【问题讨论】:

    标签: hadoop amazon-web-services hive metastore


    【解决方案1】:

    只要所有表的 LOCATION 都设置为 S3,丢失 DATABASE/SCHEMA 的位置不会影响对元数据的访问。

    它将对您的新集群产生的唯一影响是在没有明确 LOCATION 的自定义数据库(在您的示例中为“myfirstdb”)中执行的 CREATE TABLE 语句将无法到达从 DATABASE 继承的默认 HDFS 路径地点。

    在“默认”模式中创建的表不会失败,因为 Hive 会将新表的位置解析为属性“hive.metastore.warehouse.dir”的值,即“/user/hive/warehouse”在 Elastic MapReduce 中。

    同样,这不会影响在创建时设置了显式 LOCATION 的表。

    一般来说,要实现一个完全“可移植”的 Metastore,您需要做的是:

    • 确保所有 TABLES 的 LOCATION 都设置为 S3(HDFS 中的任何数据显然都绑定到集群生命周期)。 这可以通过以下方式实现:
      • 在 CREATE TABLE 语句中显式设置 LOCATION 或
      • 将所有 DATABASE/SCHEMAS(“默认”除外)的 LOCATION 设置为 S3 中的路径
    • 可选(但强烈建议)使用 EXTERNAL(用户管理,也称为非管理)表来防止由于 DDL 语句导致的意外数据丢失

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 1970-01-01
      • 2019-11-12
      • 2019-01-09
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多