【问题标题】:External hive metastore for EMREMR 的外部配置单元元存储
【发布时间】:2018-01-17 13:10:27
【问题描述】:

我正在创建一个具有默认配置单元元存储的 EMR 集群,之后我将使用一些将 aws rds 实例指向配置单元元存储的属性覆盖 hive-site.xml,一切都很好,但是在重新启动配置单元服务器后,我无法将 RDS 用作配置单元元存储。它仍在使用 EMR 创建的默认配置单元元存储。

【问题讨论】:

  • 听起来您没有正确覆盖文件。你是手动编辑的吗? EMR 应该有一个部分来设置 hive 站点配置,并且它应该在集群关闭时持续存在
  • 您是否也重新启动了 Hive Metastore 守护程序?在 4.x.x/5x.x AMI 集群上,您可以通过“sudo stop hive-hcatalog-server”和“sudo start hive-hcatalog-server”来完成此操作

标签: mysql hadoop hive amazon-rds emr


【解决方案1】:

您可以通过在创建集群时为应用程序提供配置对象来覆盖应用程序的默认配置。配置对象被引用为 JSON 文件。配置对象由分类、属性和可选的嵌套配置组成。属性是您要在该文件中更改的设置。您可以在单个 JSON 对象中为多个应用程序指定多个分类。

要使用您的外部 mysql 元存储信息覆盖 hive-site.xml,请创建一个名为 hiveConfiguration.json 的配置文件,其中包含对 hive-site.xml 的编辑:

[
    {
      "Classification": "hive-site",
      "Properties": {
        "javax.jdo.option.ConnectionURL": "jdbc:mysql:\/\/hostname:3306\/hive?createDatabaseIfNotExist=true",
        "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver",
        "javax.jdo.option.ConnectionUserName": "username",
        "javax.jdo.option.ConnectionPassword": "password"
      }
    }
]

使用 hiveConfiguration.json 和以下 AWS CLI 命令来创建集群:

aws emr create-cluster --release-label emr-5.11.0 --instance-type m3.xlarge --instance-count 2 \
--applications Name=Hive --configurations ./hiveConfiguration.json --use-default-roles

参考:

https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-external.html

【讨论】:

    【解决方案2】:

    为什么要重启 Hive-server2 ?如果要更改 hive.metastore.* 之类的属性,则需要重新启动 Hive Metastore 守护程序,它在 EMR 上是 Hcatalog 的一部分。实际上,您甚至可能不需要重新启动任何东西来更新元存储数据库。您可以只运行离线 schematool -initSchema 以指向新数据库。 见https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 2016-08-13
      • 2021-05-21
      • 2023-02-17
      相关资源
      最近更新 更多