我们能否将 AWS Glue 视为 EMR 的替代品?

Can we consider AWS Glue as a replacement for EMR?

Masters 需要澄清一个简短的问题,因为 AWS Glue 作为一种 ETL 工具,可以为公司带来好处,例如,服务器维护最少或无需维护,通过避免过度配置或配置不足的资源来节省成本,此外运行 关于 spark,我正在寻找一些说明,如果 AWS Glue 可以取代 EMR?

如果两者可以共存,EMR 如何与 AWS Glue 一起发挥作用?

感谢和问候

尤瓦

据我了解,胶水不能替代 EMR。这实际上取决于您的用例。 胶水 ETL 有一些限制;

  • 不支持 --packages.
  • 您没有用于存储临时数据的内部存储器。

使用 glue catalog 您可以在 Athena 中查看数据,但它也有一些限制,例如无法将 table 创建为 select,无法创建视图等。您可以在 EMR 中使用 Glue 数据目录来克服雅典娜的局限性。

因此,目前胶水可以替代持久元数据存储。

到目前为止,与 EMR 相比,我对 Glue 的体验并没有提供任何显着的优势。此外,我还看到了 Glue 中的几个限制,例如库、临时存储等。此外,尽管 Glue 位于 Spark 上,但它的行为与核心 Spark 不同;例如读取 1 行 CSV 文件,如果缺少 header 则忽略整个文件,等等

有一件事我仍在调查 Glue 是否会根据查询负载动态调整集群。如果找不到好的东西,我想我会推荐我的公司更灵活地转移EMR。

AWS Glue 不允许我们配置很多东西,例如执行程序内存或驱动程序内存。它是一项完全托管的服务,5Gb 作为默认驱动程序内存,5Gb 作为默认执行程序内存。 另一方面,AWS EMR 不是完全托管的服务,需要我们进行配置。更适合有经验的工程师。

顺便说一句,您还可以通过将参数传递给 Glue Job 来配置所有内置配置:
前任。

--conf value: spark.yarn.executor.memoryOverhead=1024   
--conf value: spark.driver.memory=10g  

这有助于使 Glue Job 更加灵活。

您实际上可以在 AWS Glue 上 运行 常规 Spark 作业 "serverless"。我们使用 AWS Glue 作为自动扩展 "serverless Spark" 解决方案:作业自动从托管 AWS Spark 集群池中分配一个集群。可以忽略 AWS Glue SDK 和 Glue Catalog,自动生成的脚本可以替换为常规 Spark 代码。依赖可以打包推送到S3。

但是,配置选项是有限的。缩放参数仅限于 WorkerTypeNumberOfWorkers,或者神奇的 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

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- 数据处理单元)请参阅此 link Configuring DPUs

要用具体答案回答您的问题:

Glue cannot replace EMR, EMR has more functional capabilities than Glue.

您可以将 EMR 视为“具有生态系统(包括 spark)的 Hadoop 框架”,并且 仅粘贴为“具有 Hive 元存储功能的 Spark ETL”

yes, they both can co-exist. If they co-exist, Glue can act as ETL framework to source the data, transform and store in S3 and maintain table definition of that data set in "Glue Catalog". EMR can use/access that dataset from S3 using "EMRFS" and Glue Catalog. Using EMR ecosystems, you can analyze the data (with table definitions)