阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

在 Amazon EMR 中构建由 Spark 支持的 Amazon SageMaker Notebook

  • 2019-10-31
  • 本文字数:3016 字

    阅读完需:约 10 分钟

在 Amazon EMR 中构建由 Spark 支持的 Amazon SageMaker Notebook

在 2017 年 AWS re:Invent 上介绍的 Amazon SageMaker 可以为数据科学和机器学习工作流程提供完全托管服务。Amazon SageMaker 的其中一个重要组成部分是功能强大的 Jupyter Notebook 接口,该接口可用来构建模型。通过将 Notebook 实例连接到 Amazon EMR 上运行的 Apache Spark 集群,可以增强 Amazon SageMaker 的功能。Amazon EMR 是一个用于处理大量数据的托管框架。通过将二者结合,可以基于大量数据构建模型。


Spark 是一个可以快速处理大数据的开源集群计算框架,并且包含适用于机器学习工作负载的 MLlib。为了方便在 Amazon SageMaker Notebook 与 Spark EMR 集群之间建立连接,需要使用 Livy。Livy 是一个开源 REST 接口,无需 Spark 客户端便可从任何位置与 Spark 集群交互。


本博文将向您介绍如何运行 Spark EMR 集群,如何配置必要的安全组以便在 Amazon SageMaker 与 EMR 之间进行通信,以及如何打开 Amazon SageMaker Notebook,最后还会介绍如何使用 Livy 将该 Notebook 连接到 EMR 上的 Spark。此设置将使用 PySpark、PySpark3、Spark 和 SparkR notebook。

设置 EMR Spark 和 Livy

打开 AWS 管理控制台,然后从屏幕顶部的服务菜单中选择“分析”部分下的 EMR。选择创建集群。转到高级选项 (位于顶部,其旁边是 Create Cluster – Quick Options (创建集群 – 快速选项)),取消选中所有选项。然后,专门选中 LivySpark。选择 Next



网络下方,选择您的 VPC。在本博文示例中,我的 VPC 名为 sagemaker-spark。此外,您还需要记下您的“EC2 子网”,因为稍后需要该信息。



选择下一步,然后选择创建集群。可以根据需要随意将您认为可能适合的其他任何选项加入集群中,例如,向集群添加用于对节点进行远程访问的密钥对,或者是自定义名称。


现在,您需要为您的 Spark 集群的节点获取私有 IP 地址。


依次选择服务EMR。等到您的集群被标记为正在等待 (绿色) 后选择所创建的集群。选择 Hardware (硬件) 选项卡。



选择您的主 ID,然后向右滚动,找到私有 IP 地址。保存该信息供稍后使用。在本博文示例中,我的私有 IP 地址为 10.0.0.65,但您的地址会有所不同。


设置安全组并打开端口

下面,我们需要设置安全组并打开相关端口,这样一来,Amazon SageMaker Notebook 方能通过端口 8998 上的 Livy 与 Spark 集群进行通信。


在控制台中,依次选择服务EC2。在左侧导航窗格中,选择安全组。然后,选择创建安全组按钮。


设置安全组名称 (我的是 sagemaker-notebook)、描述以及用于您的 EMR 集群的 VPC (我的是 sagemaker-spark)。



选择创建


这将创建安全组,使我们能够仅打开此组中的实例的端口。我们仍需要在 ElasticMapReduce-master 组中打开该端口。


仍然在安全组中,获取您的 SageMaker notebook 安全组的组 ID。我的是 sg-35610640,但您的将会有所不同。保存该值供稍后使用。



我们需要修改在创建 EMR 集群时自动创建的 EMR 主安全组。选择您的 ElasticMapReduce-master 组,然后选择入站选项卡。选择编辑按钮,然后选择添加规则按钮。


我们需要在端口 8998 上创建自定义 TCP 规则,然后将安全组 ID 设置为我们先前收集的 SageMaker notebook 安全组中的“组 ID”。请记住,我的是 sg-35610640。以下示例是完成操作后字段的显示情况:



选择保存按钮。现在,您已经打开了重要端口,因此,您的 SageMaker Notebook 实例可以通过 Livy 与您的 EMR 集群进行通信。

设置 SageMaker Notebook

现在,我们可以使用通过 Livy 运行的 EMR Spark 集群以及相关端口。接下来,我们来启动和运行 Amazon SageMaker Notebook 实例。


依次选择服务Amazon SageMaker。选择 Create Notebook Instance (创建 Notebook 实例) 按钮。


您需要设置 Notebook instance name (Notebook 实例名称),然后选择 Notebook instance type (Notebook 实例类型)。请注意,Notebook 实例名称有一些命名约束:最多包含 63 个字母数字字符,可以包含连字符但不能包含空格,并且在 AWS 区域中您的帐户内必须是唯一的。您还需要设置一个 IAM 角色,该角色具有 AmazonSageMakerFullAccess 权限,并且还有权访问任何必要的 Amazon Simple Storage Service (Amazon S3) 存储桶。您需要指定该角色对哪些存储桶具有访问权限,但可以让 Amazon SageMaker 为您生成该角色。



之后,您需要确保设置的 Notebook 实例与 EMR 集群位于相同的 VPC 中 (我的是 sagemaker-spark)。另外,还要选择与 EMR 集群相同的子网 (之前在创建 EMR 时,您应该已经记下了该信息)。最后,将您的安全组设置为之前为 Notebook 实例创建的组 (我的是 sagemaker-notebook)。


选择 Create Notebook Instance (创建 Notebook 实例)



耐心等待,直到 EMR 完成集群配置,SageMaker Notebook 状态显示 InService (正在服务)

将 Notebook 连接到 Amazon EMR

现在,我们的 EMR Spark 集群和 Amazon SageMaker Notebook 均已运行,但它们彼此还无法通信。下一步是在 SageMaker 中设置 Sparkmagic,以便它知道如何找到我们的 EMR 集群。


仍然在 Amazon SageMaker 控制台中,转到 Notebook Instances (Notebook 实例),然后在已配置的实例上选择打开


在 Jupyter 控制台中,依次选择 New (新)Terminal (终端)



键入以下命令:




然后,您需要编辑 config.json,并将“localhost”的各个实例替换为之前使用的 EMR 主实例的私有 IP。我的是 10.0.0.65,之前我们看到过,但您的会有所不同!


我使用了以下命令:


  • nano config.json

  • ctrl+\

  • localhost

  • <您的 EMR 主实例的私有 IP>

  • a

  • ctrl+x

  • y

  • enter


这样应该会替换三个内核凭证的“url”字段中 localhost 的三个实例。您可以根据自己的喜好随意使用任何编辑器,然后保存更改。



继续操作之前,我们应该先测试通过 Livy 与 EMR 的连接。为此,我们运行以下命令 (将 EMR 主实例私有 IP 替换为您实例的 IP 地址):


  • curl <EMR 主实例私有 IP>:8998/sessions


您的输出应类似以下内容:



如果出现错误,可能意味着您的端口尚未在安全组中打开,因此,建议您返回检查这些设置!


我们将终端关闭。键入 exit,然后关闭浏览器选项卡和终端。打开 Jupyter 的选项卡,依次选择 New (新)Sparkmagic (PySpark) 以打开 PySpark notebook。为了进行确认,我们依次选择内核重启以重新启动内核。



让我们在第一个单元中使用以下命令来测试连接:


  • %%info


同时键入 shiftenter 以运行该单元,显示的输出应该如下所示:



恭喜您!Sparkmagic 内核现在已在您的 Jupyter Notebook 中运行,因而可以使用 Livy 与您的 EMR Spark 集群进行通信。


作者介绍


Thomas Hughes 是 AWS 专业服务组织的一名数据科学家。他获得了加州大学圣巴巴拉分校的博士学位,解决了社会科学、教育学和广告学方面的诸多难题。目前正致力于解决机器学习在遇到大数据时出现的一些最为棘手的问题。



Stefano Stefani 是 AWS 的首席高级工程师,也是 AWS 众多服务领域的主管技术专家:Amazon SimpleDB、Amazon DynamoDB、Amazon Redshift 和 Amazon Aurora。目前,他在以下 Amazon AI 领域担任相同的职位:Amazon Lex、Amazon Rekognition、Amazon SageMaker、Amazon Transcribe 等。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/


2019-10-31 08:00546

评论

发布
暂无评论
发现更多内容

组合框架:融合创新技术,实现一次编码多平台运行

FinFish

flutter 跨端开发 小程序容器 跨端框架 跨端应用开发

谁是家居智能化时代“头号玩家”? 小度全屋智能将登陆中国建博会

新消费日报

如何用Java校验SQL语句的合法性?有这5种解决方案

高端章鱼哥

Java sql

营销SaaS SemRush 2.9 亿美元年收入的五个经营数据分析

B Impact

扫光动效在移动端应用实践

百度Geek说

动效 移动端 企业号 7 月 PK 榜

火山引擎 DataLeap 构建Data Catalog系统的实践(一):背景与调研思路

字节跳动数据平台

手把手带你搭建企业低成本万能架构

EquatorCoco

架构 软件架构 低成本

揭秘元宇宙背后的最炫科技风

华为云PaaS服务小智

云计算 华为云 元宇宙

数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘。图算法,搜索算法等

汀丶人工智能

人工智能 数据挖掘 机器学习 深度学习 决策树

合作、参与、让开源更易用 | 亚马逊的开源文化

亚马逊云科技 (Amazon Web Services)

云计算

软件DevOps云化发展的趋势 【课程限时免费】

华为云PaaS服务小智

云计算 DevOps 云原生 华为云 华为开发者大会2023

大模型加速学科升级,飞桨赋能北邮“X+大模型”特色小学期

飞桨PaddlePaddle

人工智能 百度 paddle 百度飞桨

如何自动化测试你的接口?—— Rest Assured

不在线第一只蜗牛

自动化 自动化测试 API

算法复杂度介绍

宁静知行者

算法

华为开发者大会2023(Cloud):华为云邀您共话开源

华为云开源

开源 云原生 HDC.Cloud

追击策略?微软云服务器业务2022年规模少于亚马逊AWS一半

B Impact

代码随想录训练营 Day06 - 哈希表(上)

jjn0703

第九届“互联网+”大赛产业赛道百度命题正式公布!57道命题,等你揭榜!

飞桨PaddlePaddle

人工智能 百度

和鲸科技 ModelWhale 入选北京市人工智能行业赋能典型案例(2023)丨2023全球数字经济大会人工智能高峰论坛

ModelWhale

人工智能 AI 数字化 大模型 论坛

Flink-Learning 实战营在升级!更多精美好礼等你来!

Apache Flink

大数据 flink 实时计算

2023-07-03:讲一讲Redis缓存的数据一致性问题和处理方案。

福大大架构师每日一题

redis 底层原理 福大大架构师每日一题

一篇文章带你上手性能测试框架K6

QE_LAB

自动化测试框架 测试自动化 #性能测试

inBuilder今日分享丨系统集成系列之异构接入

inBuilder低代码平台

集成

高性能存储SIG月度动态:io_uring支持nvme直通,DSMS完成开发测试

OpenAnolis小助手

开源 io_uring 高性能存储 anck 龙蜥sig

多项目管理难在哪,多项目同时进行该如何做好进度管理?

优秀

项目管理 项目进度管理

POCO库的安装与基础知识说明

二哈侠

SQL 优化(四):如何使用 join

hungxy

2023 MWC上海:移动云勇担新基建国家队 引领算网新趋势

Geek_2d6073

通过容器化实现前端微服务化架构设计

FinFish

小程序容器 小程序化 小程序技术 前端服务化

时序数据库 TDengine 与 DBeaver 达成合作,生态系统再壮大

爱倒腾的程序员

涛思数据 tdengine 时序数据库

用ChatGPT搞定K8s!

互联网工科生

k8s kubernetes 运维 ChatGPT

在 Amazon EMR 中构建由 Spark 支持的 Amazon SageMaker Notebook_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章