Hadoop 配置单元-指向同一元存储的多个群集

Hadoop 配置单元-指向同一元存储的多个群集,hadoop,amazon-web-services,hive,metastore,Hadoop,Amazon Web Services,Hive,Metastore,我们有两个集群,一个是旧集群,另一个是新集群。他们都在AWS-EMR上。这些集群上的配置单元指向RDS上的同一配置单元元存储。我们正在从旧的迁移到新的 现在的问题是,如果我停止旧集群,那么访问旧表会有任何问题吗?“所有的数据都在S3上。所有的表都是外部的。但是数据库仍然在HDFS上..就像 hdfs://old:1234/user/hive/warehouse/myfirst.db 如果我停止旧集群,这个位置将无效,这使得db无效,并且表也无效?尽管它们是外部的 我真的不确定这是否会成为一个问

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

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

hdfs://old:1234/user/hive/warehouse/myfirst.db
如果我停止旧集群,这个位置将无效,这使得db无效,并且表也无效?尽管它们是外部的

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


谢谢!

只要您的所有表都将位置设置为S3,取消数据库/架构的位置将不会影响对元数据的访问

它对新集群的唯一影响是,在没有显式位置的自定义数据库(“示例中的myfirstdb”)中执行的CREATE TABLE语句将无法到达从数据库位置继承的默认HDFS路径

在“默认”架构中创建的表不会失败,因为配置单元会将新表的位置解析为属性“Hive.metastore.warehouse.dir”的值,该属性在弹性MapReduce中为“/user/Hive/warehouse”

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

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

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