使用外部 “我的SQL数据库” 或 Amazon Aurora - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用外部 “我的SQL数据库” 或 Amazon Aurora

要使用外部 “我的SQL数据库” 或 Amazon Aurora 作为 Hive 元数据仓,可以覆盖 Hive 中元数据仓的默认配置值,以指定外部数据库位置,无论是在 Amazon M RDS y SQL 实例上还是 Amazon Aurora P 上。ostgreSQLinstance

注意

Hive 既不支持对元存储表的并发写入访问权限,也不阻止此权限。如果要在两个集群间共享元数据仓信息,您必须确保不会同时写入同一元数据仓表,除非您要写入同一元数据仓表的不同分区。

以下步骤介绍了如何覆盖 Hive 元数据仓位置的默认配置值和使用重新配置的元数据仓位置启动集群。

创建位于集群外部的元数据仓 EMR
  1. 创建 My SQL 或 Aurora Postgre SQL 数据库。如果您使用 PostgreSQL,则必须在配置集群后对其进行配置。创建集群时SQL仅支持 “我的”。有关 Aurora My SQL 和 Aurora Postgre 之间区别的信息SQL,请参阅亚马逊 Aurora M y 概述SQL和使用亚马逊 Auror a Post SQL gre。有关如何创建 Amazon RDS 数据库的总体信息,请参阅https://aws.amazon.com/rds/

  2. 修改您的安全组以允许您的数据库和 ElasticMapReduce-Master 安全组之间JDBC建立连接。有关如何修改安全组以供访问的信息,请参阅使用 Amazon EMR 托管的安全组

  3. 在以下JDBC位置设置配置值hive-site.xml

    重要

    如果您向 Amazon EMR 配置提供诸如密码之类的敏感信息API,则会显示具有足够权限的账户的这些信息。如果您担心这些信息可能会显示给其他用户,请使用管理帐户创建集群,并通过创建一个明确拒绝elasticmapreduce:DescribeClusterAPI密钥权限的角色来限制其他IAM用户(用户或具有委派凭据的用户)访问集群上的服务。

    1. 创建一个名为 hiveConfiguration.json 的配置文件,该文件包含对 hive-site.xml 的编辑,如以下示例所示。

      Replace(替换) hostname 使用运行数据库的 Amazon RDS 实例DNS的地址,以及 username 以及 password 以及您的数据库的凭证。有关连接到 My SQL 和 Aurora 数据库实例的更多信息,请参阅《亚马逊RDS用户指南》中的连接到运行 “我的SQL数据库引擎” 的数据库实例连接 Athena 数据库集群。 javax.jdo.option.ConnectionURL是JDBC元数据仓的JDBC连接字符串。 javax.jdo.option.ConnectionDriverName是JDBC元数据仓的驱动程序类名。

      我的SQLJDBC驱动程序由 Amazon 安装EMR。

      值属性不能包含任何空格或回车。所有内容应显示在一行中。

      [ { "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" } } ]
    2. 创建集群时引用该hiveConfiguration.json文件,如以下 Amazon CLI 命令所示。在此命令中,此文件存储在本地,您也可将此文件上传到 Amazon S3 并在此对其进行引用,例如 s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json

      注意

      为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号 (^)。

      aws emr create-cluster --release-label emr-7.3.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
  4. 连接到集群的主节点。

    有关如何连接到主节点的信息,请参阅 Amazon EMR 管理指南SSH中的使用连接到主节点

  5. 通过输入类似以下内容的命令,创建在 Amazon S3 上指定位置的 Hive 表:

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
  6. 将 Hive 脚本添加到正在运行的集群。

您的 Hive 集群使用位于亚马逊的元数据仓运行。RDS通过指定该元数据仓位置,启动共享该元数据仓的所有其他 Hive 集群。