本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动 Spark 历史记录服务器
您可以使用 Spark 历史记录服务器在自己的基础设施上可视化显示 Spark 日志。对于在 AWS Glue 4.0 或更高版本上运行并以标准(而不是传统)格式生成日志的 AWS Glue 任务,您可以在 AWS Glue 控制台中看到相同的可视化效果。有关更多信息,请参阅 使用 Apache Spark Web UI 监控作业。
您可以使用在 EC2 实例上托管服务器的 AWS CloudFormation 模板启动 Spark 历史记录服务器,也可以使用 Docker 在本地启动 Spark 历史记录服务器。
使用 AWS CloudFormation 启动 Spark 历史记录服务器并查看 Spark UI
您可以使用 AWS CloudFormation 模板启动 Apache Spark 历史记录服务器并查看 Spark Web UI。这些模板是您应修改以满足要求的示例。
使用 AWS CloudFormation 启动 Spark 历史记录服务器并查看 Spark UI
-
选择下表中的 Launch Stack (启动堆栈) 按钮之一。这将在 AWS CloudFormation 控制台上启动堆栈。
-
在 Specify template (指定模板) 页面上,选择 Next (下一步)。
-
在 Specify Stack details (指定堆栈详细信息) 页面上,输入 Stack name (堆栈名称)。在 Parameters(参数)下输入其他信息。
-
Spark UI 配置
提供以下信息:
-
IP address range (IP 地址范围) – 可用于查看 Spark UI 的 IP 地址范围。如果要限制来自特定 IP 地址范围的访问,则应使用自定义值。
-
History server port (历史记录服务器端口) – 用于 Spark UI 的端口。您可以使用默认值。
-
Event log directory (事件日志目录) – 选择用于存储来自 AWS Glue 任务或开发终端节点的 Spark 事件日志的位置。您必须将
s3a://
用于事件日志路径模式。 -
Spark package location (Spark 包位置) – 可以使用默认值。
-
Keystore path (密钥库路径) – HTTPS 的 SSL/TLS 密钥库路径。如果要使用自定义密钥库文件,则可在此处指定 S3 路径
s3://path_to_your_keystore_file
。如果将此参数保留为空,则会生成并使用基于自签名证书的密钥库。 -
Keystore password(密钥库密码)– 输入 HTTPS 的 SSL/TLS 密钥库密码。
-
-
EC2 实例配置
提供以下信息:
-
Instance type (实例类型) – 托管 Spark 历史记录服务器的 Amazon EC2 实例的类型。由于此模板在您的账户中启动 Amazon EC2 实例,因此,将向您的账户单独收取 Amazon EC2 费用。
-
Latest AMI ID (最新 AMI ID) – Spark 历史记录服务器实例的 Amazon Linux 2 的 AMI ID。您可以使用默认值。
-
VPC ID – Spark 历史记录服务器实例的 Virtual Private Cloud(VPC)ID。可以使用您的账户中可用的任何 VPC。建议不要将默认 VPC 用于默认网络 ACL。有关更多信息,请参阅《Amazon VPC 用户指南》中的默认 VPC 与默认子网和创建 VPC。
-
Subnet ID (子网 ID) – Spark 历史记录服务器实例的 ID。您可以使用 VPC 中的任意子网。您必须能够从客户端访问子网。如果要通过 Internet 访问,则必须使用在路由表中具有 Internet 网关的公有子网。
-
-
选择下一步。
-
-
在 Configure stack options(配置堆栈选项)页面上,要使用当前用户凭证确定 CloudFormation 如何在堆栈中创建、修改或删除资源,请选择 Next(下一步)。您还可以在权限部分中指定要使用的角色,而不是当前用户权限,然后选择下一步。
-
在 Review (检查) 页面上,检查模板。
选择 I acknowledge that AWS CloudFormation might create IAM resources (我确认 Amazon CloudFormation 可能创建 IAM 资源),然后选择 Create stack (创建堆栈)。
-
等待创建堆栈。
-
打开 Outputs (输出) 选项卡。
-
如果您使用的是公有子网,请复制 SparkUiPublicUrl 的 URL。
-
如果您使用的是私有子网,请复制 SparkUiPrivateUrl 的 URL。
-
-
打开 Web 浏览器,然后将 URL 粘贴到其中。这样一来,您便能在指定端口上使用 HTTPS 访问服务器。您的浏览器可能无法识别服务器的证书,在这种情况下,您必须重写其保护并继续进行。
使用 Docker 启动 Spark 历史记录服务器并查看 Spark UI
如果您更喜欢本地访问(不需要 Apache Spark 历史记录服务器的 EC2 实例),也可以使用 Docker 启动 Apache Spark 历史记录服务器并在本地查看 Spark UI。此 Dockerfile 是一个示例,您应修改该示例以满足您的要求。
先决条件
有关如何在笔记本电脑上安装 Docker 的信息,请参阅 Docker Engine 社区
使用 Docker 启动 Spark 历史记录服务器并在本地查看 Spark UI
-
从 GitHub 下载文件。
从 AWS Glue 代码示例
下载 Dockerfile 和 pom.xml
。 -
确定是要使用您的用户凭证还是联合身份用户凭证来访问 AWS。
-
要使用当前用户凭证访问 AWS,请获取要用于
docker run
命令中的AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
的值。有关更多信息,请参阅《 IAM 用户指南》中的管理 IAM 用户的访问密钥。 -
要使用 SAML 2.0 联合身份用户访问 AWS,请获取
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和AWS_SESSION_TOKEN
的值。有关更多信息,请参阅 请求临时安全凭证。
-
-
确定事件日志目录的位置,以在
docker run
命令中使用。 -
使用名称
glue/sparkui
和标签latest
以及本地目录中的文件构建 Docker 镜像。$ docker build -t glue/sparkui:latest .
-
创建并开启 docker 容器。
在以下命令中,使用先前在步骤 2 和步骤 3 中获得的值。
-
要使用您的用户凭证创建 docker 容器,请使用类似于以下内容的命令
docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://
path_to_eventlog
-Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID
-Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY
" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer" -
要使用临时凭证创建 docker 容器,请使用
org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider
作为提供程序,并提供在步骤 2 中获得的凭证值。有关更多信息,请参阅 Hadoop:与 Amazon Web Services 集成文档中的 将会话凭证与 TemporaryAWSCredentialsProvider 配合使用。 docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://
path_to_eventlog
-Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID
-Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY
-Dspark.hadoop.fs.s3a.session.token=AWS_SESSION_TOKEN
-Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
注意
这些配置参数来自 Hadoop-AWS模块
。您可能需要根据自己的使用案例添加特定的配置。例如:隔离区域的用户需要配置 spark.hadoop.fs.s3a.endpoint
。 -
-
在浏览器中打开
http://localhost:18080
以在本地查看 Spark UI。