只需向 Masters 澄清一个简单的问题,因为 AWS Glue 作为 ETL 工具,除了在 spark 上运行之外,还可以为公司提供诸如最少或无需服务器维护、通过避免过度供应或供应不足资源来节省成本等好处,我如果 AWS Glue 可以替代 EMR,我正在寻找一些说明?
如果两者可以共存,那么 EMR 如何与 AWS Glue 一起发挥作用?
感谢和问候
尤瓦
只需向 Masters 澄清一个简单的问题,因为 AWS Glue 作为 ETL 工具,除了在 spark 上运行之外,还可以为公司提供诸如最少或无需服务器维护、通过避免过度供应或供应不足资源来节省成本等好处,我如果 AWS Glue 可以替代 EMR,我正在寻找一些说明?
如果两者可以共存,那么 EMR 如何与 AWS Glue 一起发挥作用?
感谢和问候
尤瓦
据我了解,胶水不能替代 EMR。这实际上取决于您的用例。胶水 ETL 有一些限制;
使用胶水目录您可以在 Athena 中查看数据,但它也有一些限制,例如无法创建表作为选择,无法创建视图等。您可以使用 EMR 中的胶水数据目录来克服 Athena 的限制。
因此,目前胶水可以替代持久性元数据存储。
AWS Glue 不允许我们配置很多东西,例如执行程序内存或驱动程序内存。它是一个完全托管的服务,默认驱动程序内存为 5Gb,默认执行程序内存为 5Gb。另一方面,AWS EMR 不是完全托管的服务,需要我们进行配置。更适合有经验的工程师。
到目前为止,我使用 Glue 的经验与 EMR 相比并没有提供任何明显的优势。此外,我看到了 Glue 的一些限制,例如库、临时存储等。此外,虽然 Glue 位于 Spark 上,但它的行为与核心 Spark 不同;例如读取 1 行 CSV 文件,如果缺少标题则忽略整个文件等。
我仍在调查 Glue 是否根据查询负载动态调整集群的一件事。如果我找不到好的东西,我想我会推荐我的公司以更灵活的方式转移 EMR。
顺便说一句,您还可以通过将参数传递给 Glue Job 来配置所有内置配置:
例如。
--conf value: spark.yarn.executor.memoryOverhead=1024
--conf value: spark.driver.memory=10g
这有助于使胶水作业更加灵活。
EMR 可以充当“交互式”和“批处理”数据处理框架(EMR 是 hadoop 框架)。Glue 只是具有以下附加功能的“批处理”模式数据处理 (ETL) 框架 (Spark ETL)。
Glue has many capabilities, some of them are
1.Glue Metadata catalog (Data Catalog - Database and tables)
2.Glue Crawler - Parse the data and create table definitions
3.Glue Jobs - ETL
4.Glue Workflows - Combined multiple ETL flow
5.Glue ML transforms - ML related transforms
6. Glue devendpoints - for developing Glue jobs in Notebooks
Glue 是无服务器 AWS 服务,这意味着您无需花时间设置底层服务器和节点。(尽管,Glue 在幕后使用了 EMR)。您可以使用 Glue 高级配置选择集群大小(通过选择 DPU 1.X 或 2.X 以及 DPU 的数量 DPU-数据处理单元)请参阅此链接配置 DPU
要使用特定答案回答您的问题:
Glue cannot replace EMR, EMR has more functional capabilities than Glue.
您可以将 EMR 视为“具有生态系统(包括 spark)的 Hadoop 框架”,而 Glue 仅视为“具有 Hive Metastore 功能的 Spark ETL”
是的,它们都可以共存。如果它们共存,Glue 可以充当 ETL 框架来获取数据、转换和存储在 S3 中,并在“Glue 目录”中维护该数据集的表定义。EMR 可以使用“EMRFS”和 Glue 目录从 S3 使用/访问该数据集。使用 EMR 生态系统,您可以分析数据(使用表定义)
您实际上可以在 AWS Glue 上“无服务器”运行常规 Spark 作业。我们使用 AWS Glue 作为自动扩展的“无服务器 Spark”解决方案:作业自动从托管的 AWS Spark 集群池中获取分配的集群。AWS Glue 开发工具包和 Glue 目录可以忽略,自动生成的脚本可以替换为常规 Spark 代码。可以将依赖项打包并推送到 S3。
但是,配置选项是有限的。缩放参数仅限于WorkerType
andNumberOfWorkers
或 magic MaxCapacity
。集群大小不会随着在 Glue SDK 之外打开的文件而自动缩放。
CloudFormation 配置片段示例:
MyJob:
Type: "AWS::Glue::Job"
Properties:
Command:
Name: "glueetl"
ScriptLocation: "SOME_S3_MAIN_CLASS_LOCATION"
AllocatedCapacity: 3
DefaultArguments:
"--job-language": scala
"--class": some.class.path.inside.jar.MyJob
"--enable-metrics": true
"--extra-jars": "SOME_S3_JAR_LOCATION"
更多配置选项可以在 Glue CloudFormation 文档中找到:https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-defaultarguments