使用 Apache Livy 启用 HTTPS - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Apache Livy 启用 HTTPS

如果您运行的是Amazon EMR 7.3.0 或更早版本,则此主题是相关的。从 7.4.0 版本开始,Apache Livy 默认启用 HTTPS。

  1. 在启用了传输加密的情况下预置 Amazon EMR 集群。要了解有关加密的更多信息,请参阅加密静态数据和传输中的数据

  2. 创建以下内容的名为 livy_ssl.sh 的文件。

    #!/bin/bash KEYSTORE_FILE=`awk '/ssl.server.keystore.location/{getline; print}' /etc/hadoop/conf/ssl-server.xml | sed -e 's/<[^>]*>//g' | tr -d ' \t\n\r\f'` KEYSTORE_PASS=`awk '/ssl.server.keystore.password/{getline; print}' /etc/hadoop/conf/ssl-server.xml | sed -e 's/<[^>]*>//g' | tr -d ' \t\n\r\f'` KEY_PASS=`awk '/ssl.server.keystore.keypassword/{getline; print}' /etc/hadoop/conf/ssl-server.xml | sed -e 's/<[^>]*>//g' | tr -d ' \t\n\r\f'` echo "livy.keystore $KEYSTORE_FILE livy.keystore.password $KEYSTORE_PASS livy.key-password $KEY_PASS" | sudo tee -a /etc/livy/conf/livy.conf >/dev/null sudo systemctl restart livy-server.service
  3. 作为 Amazon EMR 步骤运行以下脚本。此脚本将修改 /etc/livy/conf/livy.conf 以激活 SSL。

    --steps '[{"Args":["s3://amzn-s3-demo-bucket/livy_ssl.sh"],"Type":"CUSTOM_JAR","ActionOnFailure":"CONTINUE","Jar":"s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar","Properties":"","Name":"Custom JAR"}]'
  4. 重新启动 Apache Livy 服务,以使更改生效。要重新启动 Apache Livy,请参阅停止和重新启动进程

  5. 测试客户端现在是否可以使用 HTTPS 进行通信。例如,要提交任务,请运行以下代码。

    curl -k -X POST --data '{"file": "local:///usr/lib/spark/examples/jars/spark-examples.jar", "className": "org.apache.spark.examples.SparkPi"}' \ -H "Content-Type: application/json" \ https://EMR_Master_Node_Host:8998/batches

    如果您已成功启用 HTTPS,Livy 会发送一个响应,指示该命令已被接受且批处理任务已提交。

    {"id":1,"name":null,"owner":null,"proxyUser":null,"state":"starting","appId":null,"appInfo": {"driverLogUrl":null,"sparkUiUrl":null},"log":["stdout: ","\nstderr: ","\nYARN Diagnostics: "]}