设置 EMR Notebooks 以访问 Lake Formation 数据 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

设置 EMR Notebooks 以访问 Lake Formation 数据

在您选择在 Amazon EMR 上进行数据筛选并创建与 Lake Formation 集成的集群后,您可以使用 Apache Zeppelin 和 EMR Notebooks 访问数据。

要访问这两个笔记本应用程序,您必须首先确保集群的 EC2 安全组或 VPC 网络访问控制列表(ACL)已配置为允许从您的桌面访问代理程序(端口 8442)。

注意

默认情况下,EMR 集群上的代理程序使用自签名传输层安全性 (TLS) 证书,并且浏览器将提示您接受该证书,然后再继续。如果您希望为代理程序使用自定义证书,请参阅“自定义代理程序证书”部分。

Apache Zeppelin

要访问 Apache Zeppelin,请使用 EMR 控制台从集群的 Summary (摘要) 选项卡中找到 Master public DNS (主节点公有 DNS)。使用浏览器导航到 https://MasterPublicDNS:8442/gateway/default/zeppelin/。确保 URL 的结尾包括尾斜杠。

接受了代理程序的证书之后,浏览器会将您重定向到身份提供商(IdP)以进行身份验证。经过身份验证之后,系统将您重定向到 Zeppelin。

创建第一个 Zeppelin 笔记本

要开始使用,请依次选择 Notebook (笔记本)Create new note (创建新笔记本) 来创建一个新笔记本。指定笔记本的名称并使用默认 livy 解释器。

要查看 Lake Formation 数据库的列表,请使用以下 Spark SQL 命令。

spark.sql("show databases").show()

要查询特定 Lake Formation 表,请使用以下 Spark SQL 命令。将 database.table 替换为 Lake Formation 中的实际数据库和表:

spark.sql("SELECT * FROM database.table limit 10").show()

EMR Notebooks

EMR Notebooks 可以使用 Amazon EMR 控制台创建,并用于现有与 Lake Formation 集成的 EMR 集群。

创建 EMR Notebooks

  1. 通过以下链接打开 Amazon EMR 控制台:https://console.aws.amazon.com/elasticmapreduce/

  2. 依次选择 Notebooks (笔记本)Create notebook (创建笔记本)

  3. Notebook name (笔记本名称) 中输入一个名称,在 Notebook description (笔记本描述)(可选)中输入相关描述。

  4. 依次选择 Choose an existing cluster (选择现有集群)Choose (选择)

  5. 选择与 Lake Formation 集成的现有 EMR。

  6. 选择 Create notebook (创建笔记本) 以创建笔记本。

创建笔记本之后,选择该笔记本并单击 Open (打开)。您将重定向 Amazon EMR 集群上的代理程序。在您接受代理程序的证书之后,浏览器会将您重定向到身份提供商(IdP)以进行身份验证。经过身份验证之后,系统将您重定向到 EMR Notebooks。

有关更多信息,请参阅《Amazon EMR 管理指南》中的在Amazon EMR 中使用 EMR Notebooks

自定义代理程序证书

代理程序默认使用自签名传输层安全性 (TLS) 证书。您必须使用委托代理的自定义证书替换默认证书。为此,您必须首先从证书颁发机构获取证书、证书链和私有密钥。通过这些项目,PKCS12 文件将用于保护密钥材料,以便将其导入到代理程序的密钥存储。代理程序基于 Apache Knox。

请按照以下步骤将默认证书替换为您的自定义证书。将 MasterPublicDNS 替换为在 Cluster Details (集群详细信息) 窗格的 Summary (摘要) 选项卡上为 Master public DNS (主节点公有 DNS) 显示的值。例如,ec2-11-222-33-44.compute-1.amazonaws.com

  1. 要从证书、证书链和私有密钥创建 PKCS12 文件,请在具有证书文件并安装了 openssl 的主机上运行以下命令。

    openssl pkcs12 -export -out proxy_agent_certificate.pfx -inkey private.key -in certificate.cer -certfile certchain.cer
  2. proxy_agent_certificate.pfx 文件复制到您集群主节点上的 /home/hadoop 目录。

    scp -i EC2KeyPair.pem proxy_agent_certificate.pfx hadoop@MasterPublicDNS:/home/hadoop
  3. 通过 SSH 连接到集群的主节点。

    ssh -i EC2KeyPair.pem hadoop@MasterPublicDNS
  4. 使用以下命令查找您的集群特定主密钥。

    less /etc/knox/conf/gateway-site.xml

    查找 gateway.master.secret 属性并复制 value 标签的内容,因为接下来的步骤中需要这些信息。

  5. 使用以下命令,创建现有代理程序密钥存储的备份副本。

    sudo -s cd /mnt/var/lib/knox/data/security/keystores mkdir backups mv gateway.jks __gateway-credentials.jceks backups/
  6. 使用以下命令将您的自定义证书导入到新的密钥存储。

    sudo -s cd /mnt/var/lib/knox/data/security/keystores keytool -importkeystore \ -srckeystore /home/hadoop/proxy_agent_certificate.pfx \ -srcstoretype pkcs12 -destkeystore gateway.jks \ -deststoretype jks \ -srcalias 1 \ -destalias gateway-identity

    系统提示 Enter destination keystore password 时,使用 gateway-site.xml 文件中的 Knox 主密钥。

    使用以下命令确保新创建的 gateway.jks 文件由 knox 用户拥有。

    chown knox:knox gateway.jks

    如果您的私有密钥由密码保护,请确保 Knox 知道该密码。

    sudo -u knox bash cd /usr/lib/knox bin/knoxcli.sh create-cert create-alias gateway-identity-passphrase

    在提示时,输入保护您的私有密钥的密码。

  7. 使用以下命令重新启动 Knox。

    sudo -u knox bash cd /usr/lib/knox bin/gateway.sh stop

    Knox 应自动重新启动,您可以通过查看 /var/log/knox/gateway.log 来检查 Knox 的状态。

  8. 要确保代理程序使用了新证书,请导航到 Apache Zeppelin https://MasterPublicDNS:8442/gateway/default/zeppelin/。您可以使用浏览器来检查证书,确保这是您的自定义证书。