EMR Studio 要点梳理

news2024/11/29 0:46:56

文章目录

  • 1. 关系梳理
  • 2. 网络配置
    • 2.1 必须是在私有子网中的EMR集群才可以被EMR Studio连接吗?
    • 2.2 关于网络安全组:DefaultEngineSecurityGroup 和 DefaultWorkspaceSecurityGroupGit
    • 2.3 18888端口
    • 2.4 无法访问Github的解决方法
  • 3. 集成Windwos AD身份认证
  • 4. 内置的Notebook Examples
    • 4.1 使用 SparkSQL 操作 Hudi 数据集
    • 4.2 使用 PySpark 进行数据处理和分析,期间使用 Matplotlib 进行数据可视化
    • 4.3 使用 Pandas 进行数据处理和分析,期间使用 Matplotlib 进行数据可视化
    • 4.4 使用 PySpark 进行机器学习(基于Spark ML)
  • 5. EMR Studio的作业调度(与工作流引擎集成)
  • 6. 安装自定义Kernel和库
  • 7. EMR Studio 和 EMR on EKS 的集成
  • 8. 完整的Workshop
  • 8. EMR Studio or Sagemaker Studio?

1. 关系梳理

一个Account下可以创建多个EMR Studio,一个EMR Studio下又可以创建多个Workspace,EMR Studio和Workspace均拥有独立公网地址,两者已经类似于SaaS服务。

EMR Studio的核心配置是网络和身份认证(Authentication),可以简单地说:一个EMR Studio对应一个VPC + 一种身份认证方式,从这个角度上看,一个空的EMR Studio(没有任何Workspace)相当于一个“门户”(一个Studio会有独立的公网DNS!),这个“门户”对内接通了网络,对外提供登录入口(身份认证),在这样一个统一的环境里,建立的是一个一个的Workspace;Workspace可视作一个独立的Jupyter Server,它的核心配置是attach一个EMR集群(EMR on EC2 or EMR on EKS)。一个Workspace相当于一个EMR集群的Gateway或Client。

2. 网络配置

由于EMR Studio需要联通到EMR集群,所以网络配置必须正确。在官方文档中,对网络部分有这样几处需要注意的地方:

2.1 必须是在私有子网中的EMR集群才可以被EMR Studio连接吗?

在EMR Studio的官方文档中,数次提到:EMR集群必须位于私有子网中:

在这里插入图片描述

在这里插入图片描述

经过测试可以确认:并非如此,公有子网中的EMR集群一样可以attach到EMR Studio的Workspace中去。

2.2 关于网络安全组:DefaultEngineSecurityGroup 和 DefaultWorkspaceSecurityGroupGit

在创建EMR Studio时,如果在“Security and access”一节选择了“Default security group”,则EMR Studio会自动创建两个网络安全组:

  • DefaultEngineSecurityGroup:这个安全组是将要赋给被attach的EMR集群的Master节点上的,它只有一个inbound规则:允许外部访问内部的18888端口
  • DefaultWorkspaceSecurityGroupGit:这个安全组是将要赋给Workspace的,它有两个outbound规则:允许向外部的18888和443端口发出请求

两个安全组,一个(DefaultEngineSecurityGroup)作用于集群主节点,一个(DefaultWorkspaceSecurityGroupGit)作用于集群的客户端(Workspace),通信端口是18888,前者允许进,后者允许出,这样:Worspace和EMR集群的网络就打通了,走的是18888端口。

至于Workspace的outbound 443端口,是用于连接外部Git Repo的,例如Github,基本都是https协议,所以要开443端口。

补充一个细节:只有在Workspace里执行attach操作时,EMR集群的主节点才会被追加到DefaultEngineSecurityGroup安全组中,当EMR集群被dettach时,也会自动移除主节的efaultEngineSecurityGroup安全组。下图即为一个被attach到Workspace的EMR集群的安全组配置:
在这里插入图片描述

2.3 18888端口

如上所述,18888端口是Workspace和EMR集群之间通信的唯一接口,在个端口是开在EMR主节点上的,其所属的进程是nginx,而这个nginx只是一个反向代理,它将各种请求转发给了EMR上对应的各项服务,这一点,从nginx的反向代理配置中即可知晓:

在这里插入图片描述

2.4 无法访问Github的解决方法

测试环境:VPC,3 AZ,3 Public Subnet + 3 Private Subnet

  • 测试一

    在新建Workspace时,同时创建新的EMR集群情况下,可以访问外网Git(Github),其中,在选择新建EMR集群的子网时,公有子网和私有子网均可;新建后,attach本子网以及其他子网中的其他EMR集群,都可以访问外网Git(Github)

  • 测试二

    在新建Workspace时,选择一个已存在的EMR集群,无法访问外网Git(Github);挂载其他集群尝试,依然无法访问外网Git(Github)

  • 测试三

    在新建Workspace时,不选择挂载任何集群,进入后,可以访问外网Git(Github);之后挂载任意集群,依然可以访问外网Git(Github)

结论:就目前看(2023年2月),EMR Studio在新建Workspace时如果选择attach一个已有的EMR集群,则建成后Workspace无法访问外网Git(Github),这可能是一个Bug。而只要在新建Workspace时不选择attach集群,进入后就可以访问外网Git(Github),可以检查代码之后,再attach集群。此外,如果在新建Workspace时选择同时新建一个集群的话,建成后也能正常访问外网Git(Github)!

3. 集成Windwos AD身份认证

在这里插入图片描述

4. 内置的Notebook Examples

参考项目:

https://github.com/aws-samples/emr-studio-notebook-examples

4.1 使用 SparkSQL 操作 Hudi 数据集

参考示例:

https://github.com/aws-samples/emr-studio-notebook-examples/blob/main/examples/query-hudi-0.9.0-dataset-with-spark-sql.ipynb

4.2 使用 PySpark 进行数据处理和分析,期间使用 Matplotlib 进行数据可视化

参考示例:

https://github.com/aws-samples/emr-studio-notebook-examples/blob/main/examples/install-notebook-scoped-libraries-at-runtime.ipynb

关键技术点:df.toPandas()

配套文章:

https://aws.amazon.com/cn/blogs/big-data/install-python-libraries-on-a-running-cluster-with-emr-notebooks/

4.3 使用 Pandas 进行数据处理和分析,期间使用 Matplotlib 进行数据可视化

参考示例:

https://github.com/aws-samples/emr-studio-notebook-examples/blob/main/examples/visualize-data-with-pandas-matplotlib.ipynb

注意:%pip install xxx仅限于将Python包安装于Master节点!

4.4 使用 PySpark 进行机器学习(基于Spark ML)

参考示例:

https://github.com/aws-samples/emr-studio-notebook-examples/blob/main/examples/machine-learning-with-pyspark-linear-regression.ipynb

5. EMR Studio的作业调度(与工作流引擎集成)

不管是step function还是airflow,都是通过notebook的API(Python or Cli)集成进工作流的。参考:

通过CLI触发Notebook:

https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-headless-cli.html

通过Python API触发Notebook:

https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-headless-python.html

上述两种方式均可顺滑集成到Airflow中。

6. 安装自定义Kernel和库

EMR Studio的Workspace所以依赖的notebook基础设施就是EMR集群内置的notebook,所以,在EMR Studio的Workspace上安装自定义Kernel和库都是去Master节点上操作,操作方法与在EMR notebooks上安装自定义Kernel和库完全一样

参考:

EMR Studio关于安装Kernel和库官方的文档

EMR Notebook关于安装Kernel和库官方的文档

7. EMR Studio 和 EMR on EKS 的集成

参考此文:

Configure Amazon EMR Studio and Amazon EKS to run notebooks with Amazon EMR on EKS

8. 完整的Workshop

EMR Studio Workshop

8. EMR Studio or Sagemaker Studio?

如果你的AI/ML程序是基于Spark Mlib / Spark ML编写的,那么EMR Studio无疑是最佳选择!
如果你的AI/ML程序依赖Tensorflow、Pytorch,Sagemaker可能更合适一些,至少在Sagemaker中有TF和Pytorch的镜像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【王道数据结构】第六章(上) | 图详解

目录 一、图的基本概念 二、图的存储 1、邻接矩阵法 2、邻接表法(顺序链式存储) 3、十字链表存储 4、邻接多重表 三、图的基本操作 四、图的遍历 1、广度优先遍历 2、深度优先遍历 一、图的基本概念 1、图的定义 2、无向图 若E是无向边 简称边) 的有限集合时&#xff…

如何使用MongoDB?

一:与MySQL区别 RDBMS 与 MongoDB 对应的术语: 类似于mysql,刚开始数据库、集合都是要创建之后才有的。 但是每次插入数据时都是插入一个对象,整个对象就是文档,对象的属性名就是字段。字段是不需在提前创建时声明的…

linux基本功之fsck命令详解

💓 大家好,我是沐风晓月,双一流院校英语计算机双专业在读; 💓 想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命…

理解Keil编译器中编译程序时出现的Code、RO-data、RW-data和ZI-data的含义

** 1:Code、RO-data、RW-data和ZI-data ** STM32单片机在keil开发环境下编译完成后,会显示: Program Size: Codexxxx RO-dataxxxx RW-dataxxxx ZI-dataxxxx 编译后的显示窗口如图所示: 其中Code、RO-data、RW-data和ZI-data是什么意思呢&…

基于OpenCV 的车牌识别

基于OpenCV 的车牌识别 车牌识别是一种图像处理技术,用于识别不同车辆。这项技术被广泛用于各种安全检测中。现在让我一起基于 OpenCV 编写 Python 代码来完成这一任务。 车牌识别的相关步骤 1. 车牌检测:第一步是从汽车上检测车牌所在位置。我们将使用…

基于matlab模拟雷达海杂波PPI

一、前言此示例演示如何在海洋环境中模拟旋转天线阵列的计划位置指示器 (PPI) 雷达图像。您将配置雷达方案和光谱海面模型,使用点散射体集合模拟扩展目标,生成返回信号,并绘制结果的 PPI 图像。二、配置雷达方案设置 R…

Word操作与应用

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.Office中Word简介 二.word工作环境 1.WPS简介 2.启动Word …

通过环境变量来绕过Windows Defender和隐藏混淆行为

什么是环境变量 关于什么是环境变量,我这篇文章介绍的很清楚 https://blog.csdn.net/qq_45894840/article/details/128622314?spm1001.2014.3001.5502这里在扩展一点 env env是英文单词environment的缩写,其功能是用于显示和定义环境变量&#xff0…

Mybatis源码(一) Mybatis是如何与spring框架整合的

Mybatis是现在最流行的数据库中间件之一,用mybatis的好处在于让开发者更专注在SQL本身,能与多种数据库兼容,而spring框架又是java最强大的框架,对于java来讲,万物是基于spring 的,因此我们有必要去理解myba…

若依框架---PageHelper分页(十三)

我们介绍了PageHelper中的cache包以及简单介绍了包中各个类的属性与方法;还介绍了Java中一种加载类的方式:Class.forName,并且通过查看com.mysql.jdbc.Driver代码,我们知道,可以通过这种方式可以执行类中的静态代码段。…

python进阶——自动驾驶寻找车道

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

设计模式-策略模式详解

1. 背景在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某…

Java数据结构中栈和队列深度解析

栈和队列使用的范围很广,本篇用来深度解析Java数据结构中的栈和队列的深度解析,栈和队列都能用单向或双向链表来实现哦,希望可以帮助各位! 文章目录 目录 一、栈 1.1栈的概念 1.2栈的使用 1.3栈的自定义顺序栈实现 1.4栈的练习题…

本机信息收集

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 : 内网安全 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…

【JavaEE】Java中复杂的Synchronized关键字

目录 一、synchronized的特性 (1)互斥 (2)刷新内存 (3)可重入 二、synchronized的使用 (1)修饰普通方法 (2)修饰静态方法 (3)修…

计网之初识网络(理解网络传输的基本流程)

文章目录一. 网络发展史二. IP地址和端口号三. 计算机网络分层1. 什么是网络协议2. OSI七层网络模型3. TCP/IP五层网络模型4. 数据在各个层的传输过程5. 网络设备所在分层一. 网络发展史 🍂独立模式(单机模式) 我们最初的计算机是在单机模式下使用的, 此时的计算机…

遇到“独自开”,开发出属于自己一套专属系统的时代还会远吗?

目录 一、前言 二、介绍 三、详细介绍 四、总结 一、前言 哈喽,大家好,我是追,看到标题独自开时,可能此处会有疑问了。独自开?半山居士王安石的“墙角数枝梅,凌寒独自开”?哈哈,…

北京化工大学2/7寒假集训题解(>1800)

目录 A-Fence B-D again​ C-Cut the Sequence D-Parade E-trade A-Fence #include<algorithm> #include<string.h> #include<stdio.h> #include<queue> using namespace std; struct nob {int v,p;bool operator <(const nob &a)const{retu…

网络协议(四):网络分类、ISP、上网方式、公网私网、NAT

网络协议系列文章 网络协议(一)&#xff1a;基本概念、计算机之间的连接方式 网络协议(二)&#xff1a;MAC地址、IP地址、子网掩码、子网和超网 网络协议(三)&#xff1a;路由器原理及数据包传输过程 网络协议(四)&#xff1a;网络分类、ISP、上网方式、公网私网、NAT 目录…

【沁恒WCH CH32V307V-R1开发板两路ADC读取实验】

【沁恒WCH CH32V307V-R1开发板两路ADC读取实验】1. 前言2. 软件配置2.1 安装MounRiver Studio3. ADC项目测试3.1 打开ADC工程3.2 编译项目4. 下载验证4.1 接线4.2 演示效果5. 小结1. 前言 ADC 模块包含 2 个 12 位的逐次逼近型的模拟数字转换器&#xff0c;最高 14MHz 的输入时…