我们可以将AWS Glue视为EMR的替代品吗?

22

向Masters澄清一个问题,由于AWS Glue作为ETL工具可以为公司提供诸如最小化或无需服务器维护、避免过度或不足配备资源的成本节省等好处,再加上它可以在Spark上运行。我想了解一些澄清问题,即AWS Glue是否可以替代EMR?

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

谢谢&问候

Yuva


Glue非常适合ETL工作。如果您只使用EMR来运行ETL作业,那么Glue将是一个很好的替代品。但是,您也可以使用EMR在数据上运行自定义算法、机器学习等。您无法使用Glue实现这一点,因此请将EMR视为更复杂但更灵活的服务。 - niczky12
6个回答

10

据我了解,胶水无法替代EMR。这实际上取决于您的用例。胶水ETL存在一些限制:

  • 它不支持--packages选项。
  • 您没有内部存储用于存储临时数据。

使用胶水目录可以在Athena中查看数据,但它也有一些限制,例如无法创建表作为选择,无法创建视图等。您可以在EMR中使用胶水数据目录以克服Athena的限制。

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


感谢yalcinmn1和ashutoshs的意见。我正在评估AWS Glue与EMR的能力差异。到目前为止,我已经成功设置了一个本地zeppelin实例,连接到AWS Glue以运行我的ETL代码,并最终通过jdbc连接将数据存储到AWS Redshift集群中。还在继续评估工作中。谢谢。 - Yuva
我遇到了存储redshift查询结果的问题。如果我能联系上你并询问有关连接的问题,那就太好了。谢谢。 - Andres Urrego Angel
AWS Glue不是EMR的直接替代品。两者用途不同。 1)Glue仅用于ETL目的和短暂数据的业务用例。EMR可用于除ETL之外的操作,如ML、在hive、presto、zeppelin等中存储数据。 2)由于其无服务器特性,Glue比EMR更昂贵,但由于需要EMR全天候运行,因此情况会有所不同。 还有很多... :) - abhijitcaps

7

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


3

顺便提一下,您也可以通过将参数传递给Glue作业来配置所有内置配置:
例如。

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

这可以帮助使Glue Job更加灵活。


2
由于AWS Glue是完全托管的,因此最大内存限制为16GB,因此在AWS Glue中可以设置的spark.driver.memory配置有限。在EMR中,您可以根据需要决定集群类型,并且在EMR中实际上没有spark.driver.memory配置的限制。 - Sandeep Fatangare

3

迄今为止,我使用Glue的经验与EMR相比并没有提供任何显著优势。此外,我在Glue中看到了一些限制,如库、临时存储等。此外,尽管Glue坐落在Spark上,但其行为与核心Spark不同;例如读取1行CSV文件,如果缺少标题,则忽略整个文件等。

有一件事我仍在调查,那就是Glue是否根据查询负载动态调整集群。如果找不到更好的解决方案,我认为我将建议我的公司转向具有更大灵活性的EMR。


目前Glue中还没有自动扩展功能。 - Sandeep Fatangare
自动扩展不可用,但您可以设置最大 DPU(上限值)。 Glue 计算所需的容量并仅使用所需的容量,它可以扩展到配置的最大 DPU 值。(收费仅针对已使用的容量,而非最大 DPU 容量) - Anandkumar
自动扩展功能可从AWS Glue 3.0中获得,并目前处于预览阶段。https://docs.aws.amazon.com/glue/latest/dg/auto-scaling.html - Yuva
读取只有1行的CSV文件,如果缺少标题则忽略整个文件 - 这是你需要在pySpark中处理的事情。 - abhijitcaps

3

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)。您可以通过选择DPU 1.X或2.X以及DPU数量来选择Glue高级配置的集群大小(DPU-数据处理单位),请参阅此链接Configuring DPUs

针对您提出的问题,给出如下具体答案:

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

你可以将EMR视为“具有生态系统(包括Spark)的Hadoop框架”,而Glue仅为“具备Hive元存储功能的Spark ETL”

是的,它们两者可以共存。如果它们共存,Glue可以作为ETL框架来获取数据、转换数据并将其存储在S3中,并在"Glue目录"中维护数据集的表定义。EMR可以通过"EMRFS"和Glue目录从S3中使用/访问该数据集。使用EMR生态系统,您可以分析具有表定义的数据。


2
您可以在AWS Glue上“无服务器”运行常规Spark作业。我们使用AWS Glue作为自动扩展的“无服务器Spark”解决方案:作业会自动从托管的AWS Spark集群池中分配一个集群。 AWS Glue SDK和Glue Catalog可以忽略,自动生成的脚本可以替换为常规Spark代码。依赖项可以打包并推送到S3。
但是,配置选项有限。缩放参数仅限于WorkerType和NumberOfWorkers,或者神奇的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接