- 分析›
- Amazon EMR›
- EMR 上的 Apache Spark
Amazon EMR 上的 Apache Spark
为什么选择 EMR 上的 Apache Spark?
Amazon EMR 非常适合运行 Apache Spark。您可以快速且轻松地从 AWS 管理控制台、AWS CLI 或 Amazon EMR API 中创建托管的 Spark 集群。此外,您还可以利用其他 Amazon EMR 功能,包括使用 Amazon EMR 文件系统(EMRFS)快速连接 Amazon S3、与 Amazon EC2 Spot 市场和 AWS Glue Data Catalog 集成,以及使用 EMR Managed Scaling 在集群中添加或移除实例。 AWS Lake Formation 提供精细粒度的访问控制,同时与 AWS Step Functions 集成有助于编排数据管道。 EMR Studio(预览版)是一个集成式开发环境(IDE),使数据科学家和数据工程师能够轻松地开发、可视化和调试用 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。EMR Studio 提供完全托管的 Jupyter Notebook,以及 Spark UI 和 YARN Timeline Service 等工具,可简化调试。 EMR Notebooks 可便于您使用 Spark 进行试验和构建应用。如果您愿意,可以使用 Apache Zeppelin 创建交互式协作 notebook,以使用 Spark 进行数据探索。
功能和益处
EMR 具有适用于 Apache Spark 的 Amazon EMR 运行时,这是一种针对 Apache Spark 进行性能优化的运行时环境,默认情况下在 Amazon EMR 集群上处于活动状态。适用于 Apache Spark 的 Amazon EMR 运行时的速度可比没有 EMR 运行时的集群快 3 倍以上,并且与标准 Apache Spark 具有 100% 的 API 兼容性。此项提升性能可提高工作负载的运行速度,并节省计算成本,无需更改应用程序。
通过使用有向无环图 (DAG) 执行引擎,Spark 可以创建针对数据转换的高效查询计划。Spark 还会将输入内容、输出内容以及内存中的中间数据存储为弹性数据帧,从而实现快速处理(不会产生 I/O 成本)并提高迭代式或交互式工作负载的性能。
Apache Spark 原生支持 Java、Scala、SQL 和 Python,可为您提供多种应用程序构建语言。此外,您还可以使用 Spark SQL 模块提交 SQL 或 HiveQL 查询。除了运行应用程序以外,您还可以在集群上的 Spark shell 中,或者通过 EMR Studio 或 Jupyter Notebook 以交互方式直接结合使用 Spark API 和 Python 或 Scala。EMR 6.0 中 Apache Hadoop 3.0 的支持提供了 Docker 容器支持,以简化管理依赖项。您也可以利用独立于集群的 EMR Notebooks(基于 Jupyter)或使用 Zeppelin 创建交互式协作 notebook,用于数据探索和可视化。您可以调整和调试 EMR 控制台中的工作负载,该控制台具有集群外的持久Spark History Server。
Apache Spark 包括多个库,可帮助构建针对以下方面的应用程序:机器学习 (MLlib)、流处理 (Spark 流传输) 和图形处理 (GraphX)。这些库紧密集成在 Spark 生态系统中,可即时用于处理各种使用案例。此外,您还可以将 Apache MXNet 等深度学习框架用于 Spark 应用程序。与 AWS Step Functions 集成可让您向应用程序中添加无服务器工作流自动化和编排。
借助 EMR Step API 提交 Apache Spark 作业,结合使用 Spark 和 EMRFS 以直接访问 S3 中的数据,使用 EC2 Spot 容量节约成本,使用 EMR Managed Scaling 动态添加和移除容量,并根据您的工作负载启动长期运行的集群或瞬态集群。您还可以使用 EMR 安全配置轻松配置 Spark 加密和 Kerberos 身份验证。此外,您可以使用 AWS Glue Data Catalog 存储 Spark SQL 表元数据,或与 Spark 机器学习管道配合使用 Amazon SageMaker。EMR 在 Hadoop YARN 上安装和管理 Spark,您还可以在集群中添加其他大数据应用程序。EMR with Apache Hudi 可简化记录删除,让您更高效地管理更改数据捕捉(CDC),并有助于遵守 GDPR 和 CCPA 等隐私法规。单击此处了解有关 EMR 功能的更多详细信息。
Apache Spark 升级代理可自动识别 PySpark 和 Scala 应用程序中的 API 变更和行为修改。工程师可以借助 MCP(Model Context Protocol)兼容性直接从 SageMaker Unified Studio 或其选择的 IDE 启动升级。在升级过程中,代理将分析现有代码并提出具体变更建议,工程师可以在实施之前进行审核和批准。代理将通过数据质量验证来验证功能正确性。代理当前支持从 Spark 2.4 升级到 3.5,并在整个升级过程中保持数据处理的准确性。
使用案例
借助 EMR 上的 Spark Streaming,使用和处理来自 Amazon Kinesis、Apache Kafka 或其他数据流的实时数据。采用容错方式执行流分析,并将相应结果写入到 S3 或基于集群的 HDFS 中。
EMR 上的 Apache Spark 包括适用于各种可扩展的机器学习算法的 MLlib,或者您也可以使用自己的库。通过在作业过程中在内存中存储数据集,Spark 可针对机器学习工作负载中常见的迭代查询提供出色的性能。您可以将 Notebook 实例与 Amazon EMR 上运行的 Apache Spark 集群连接,从而增强 Amazon SageMaker 的功能,通过 Amazon SageMaker Spark 轻松训练和托管模型。
使用 Spark SQL 进行低延迟的 SQL 或 HiveQL 交互式查询。EMR 上的 Spark 可以利用 EMRFS,因此您可以临时访问 S3 中的数据集。此外,您可以通过 ODBC 和 JDBC 连接来使用 EMR Studio、EMR Notebooks、Zeppelin Notebooks 或 BI 工具。
客户成功案例
Yelp
Yelp 的广告定位团队设计了一些预测模型来确定用户与广告互动的几率。通过使用 Amazon EMR 上的 Apache Spark 处理大量数据来训练机器学习模型,Yelp 提高了收入和广告点击率。
The Washington Post
《华盛顿邮报》使用 Amazon EMR 上的 Apache Spark 构建模型,为其网站的推荐引擎提供强大支持,从而提高读者的参与度和满意度。他们利用 Amazon EMR 与 Amazon S3 的完美连接,以近乎实时的方式更新模型。
Krux
作为用于管理客户信息的数据管理平台的一部分,Krux 使用 Apache Spark 运行许多机器学习和常规处理工作负载。Krux 结合使用临时 Amazon EMR 集群和 Amazon EC2 Spot 容量来节约成本,并将 Amazon S3 与 EMRFS 用作 Apache Spark 的数据层。 阅读更多
GumGum
图像内和屏幕内广告平台 GumGum 使用 Amazon EMR 上的 Spark 预测库存、处理点击流日志以及临时分析 Amazon S3 中的非结构化数据。Spark 的增强性能为 GumGum 节省了处理这些工作流程的时间和资金。 阅读更多
Hearst Corporation
Hearst Corporation 是一家大型多元化媒体信息公司,客户可查看 200 多个网站上的内容。利用 Amazon EMR 上的 Apache Spark 流传输,Hearst 的编辑人员可以实时了解哪些文章反响良好以及哪些主题是热门话题。 阅读更多
CrowdStrike
CrowdStrike 提供端点防护以防止出现违例。它们结合使用 Amazon EMR 和 Spark 来处理数百 TB 的事件数据,并将其汇总到主机上更高级别的行为描述中。通过这些数据,CrowdStrike 可以将事件数据汇集在一起并确定是否存在恶意活动。 阅读更多