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

时间:2018-01-12 09:09:54

标签: amazon-web-services etl amazon-emr aws-glue

从Masters澄清一个简单的问题,因为AWS Glue作为ETL工具,可以为公司提供诸如最小化或无服务器维护,通过避免过度配置或资源配置不足而节省成本等优势,此外还可以运行如果AWS Glue可以取代EMR,我正在寻找一些澄清吗?

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

谢谢&问候

YUVA

6 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

您实际上可以在AWS Glue上“无服务器”运行常规Spark作业。我们将AWS Glue用作自动扩展的“无服务器Spark”解决方案:作业会自动从托管的AWS Spark集群池中获取分配的集群。可以忽略AWS Glue SDK和Glue目录,可以将自动生成的脚本替换为常规的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

答案 2 :(得分:1)

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-数据处理单元),请参考此链接Configuring DPUs

要用特定答案回答您的问题:

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

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

是的,它们都可以共存。如果它们共存,则Glue可以充当ETL 数据源,转换并存储在S3中并维护的框架 “胶水目录”中该数据集的表格定义。电子病历罐 使用“ EMRFS”和Glue Catalog从S3使用/访问该数据集。使用 EMR生态系统,您可以分析数据(带有表定义)

答案 3 :(得分:0)

到目前为止,我对Glue的经验没有提供......与EMR相比显着。此外,我在Glue中看到了一些限制,例如库,临时存储等。此外,虽然Glue位于Spark上,但它的行为与核心Spark不同;例如,读取1行CSV文件,如果缺少标题则忽略整个文件等。

我还在研究Glue是否根据查询负载动态调整集群。如果我找不到......好的,我想我会推荐我的公司更灵活地转移EMR。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

顺便说一句,您还可以通过将参数传递给胶水作业来配置所有内置配置:
例如

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

这可以帮助使“胶水作业”更加灵活。