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 数据目录集成,以及使用 EMR Managed Scaling 在集群中添加或移除实例。 AWS Lake Formation 提供精细粒度的访问控制,同时与 AWS Step Functions 集成有助于编排数据管道。 EMR Studio(预览版)是一个集成式开发环境(IDE),使数据科学家和数据工程师能够轻松地开发、可视化和调试用 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。EMR Studio 提供完全托管的 Jupyter 笔记本电脑,以及 Spark UI 和 YARN Timeline Service 等工具,可简化调试。 EMR Notebooks 可便于您使用 Spark 进行试验和构建应用。如果您有需要,则可以借助 Spark,您还可以使用 Apache Zeppelin 创建交互式和协作式 notebooks 以进行数据探索。

请在此处了解有关 Apache 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 创建交互式协作 notebooks,用于数据探索和虚拟化。您可以调整和调试 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 功能的更多详细信息。

使用案例

借助 EMR 上的 Spark Streaming,使用和处理来自 Amazon KinesisApache Kafka 或其他数据流的实时数据。采用容错方式执行流分析,并将相应结果写入到 S3 或基于集群的 HDFS 中。

EMR 上的 Apache Spark 包括适用于各种可扩展的机器学习算法的 MLlib,或者您也可以使用自己的库。通过在作业过程中存储内存中的数据集,Spark 可针对机器学习工作负载中常见的迭代查询提供出色的性能。您可以将笔记本电脑实例与 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 可以将事件数据汇集在一起并确定是否存在恶意活动。

    阅读更多 »