Hadoop 从S3读取超过500GB的数据并将400GB的输出保存到S3是一个好主意吗?

Hadoop 从S3读取超过500GB的数据并将400GB的输出保存到S3是一个好主意吗?,hadoop,amazon-web-services,amazon-s3,hadoop2,aws-opsworks,Hadoop,Amazon Web Services,Amazon S3,Hadoop2,Aws Opsworks,我的MR任务从AWS S3读取500GB的数据,同时将中间数据保存在S3中,并将减速机的输出(大约400GB)写入S3,这是一个好的设计吗 还有其他更便宜、更稳定的解决方案吗?谢谢大家! HDFS上的map reduce设计用于获取输入并执行少量操作,然后写入。因为它是并行完成的,所以设计并不像你想象的那么糟糕。你能不能更详细一点,便宜一点,稳定一点。HDFS绝对是稳定的。HDFS上的map reduce设计用于获取输入并执行少量操作,然后写入。因为它是并行完成的,所以设计并不像你想象的那么糟糕

我的MR任务从AWS S3读取500GB的数据,同时将中间数据保存在S3中,并将减速机的输出(大约400GB)写入S3,这是一个好的设计吗


还有其他更便宜、更稳定的解决方案吗?谢谢大家!

HDFS上的map reduce设计用于获取输入并执行少量操作,然后写入。因为它是并行完成的,所以设计并不像你想象的那么糟糕。你能不能更详细一点,便宜一点,稳定一点。HDFS绝对是稳定的。

HDFS上的map reduce设计用于获取输入并执行少量操作,然后写入。因为它是并行完成的,所以设计并不像你想象的那么糟糕。你能不能更详细一点,便宜一点,稳定一点。HDFS绝对稳定。

我们的ETL作业在AWS中运行。我们使用Oozie进行工作流管理

在EMR(Elastic MapReduce)内部运行时,您可以选择写入
s3
或本地
HDFS

将数据存储在
s3
HDFS
中的决定取决于各种因素,如:

  • 数据的性质:临时(使用
    HDFS
    )或永久(使用
    s3
  • 成本:存储在
    s3
    中需要花费几美分/美元
  • 带宽:当您将数据上传到
    s3
    时,您会消耗一些带宽,AWS会为此向您收费
  • 限制:到
    s3
    的上传/下载被限制。如果您在短时间内上载/下载了太多数据,则某些请求可能会失败。我记得在我们的一个工作流程中提到了这个问题
  • 作业效率:在本地
    HDFS
    中存储数据比在
    s3
    中存储数据快。因此,如果希望作业运行更快,最好将结果存储在
    HDFS
一般而言,我们遵循以下指南:

  • 在工作流中完成一个作业后,如果数据将由工作流中的另一个作业使用,则将其存储在本地
    HDFS
    中,并在使用后删除数据(这样您就不会在
    HDFS
    中耗尽空间)
  • 如果特定作业的数据不是用于最终消耗(临时数据),则将其存储在
    HDFS
    中。否则直接将输出写入
    s3
  • 如果最终消费需要中间输出,则直接将结果存储在
    s3
    中,这样在集群停机时不会丢失数据

  • 由于本地HDFS中的空间很容易耗尽,因此需要规划HDFS集群的容量。此处的AWS链接提供了计算HDFS容量并相应确定EMR集群大小的指南。

    我们的ETL作业在AWS中运行。我们使用Oozie进行工作流管理

    在EMR(Elastic MapReduce)内部运行时,您可以选择写入
    s3
    或本地
    HDFS

    将数据存储在
    s3
    HDFS
    中的决定取决于各种因素,如:

    • 数据的性质:临时(使用
      HDFS
      )或永久(使用
      s3
    • 成本:存储在
      s3
      中需要花费几美分/美元
    • 带宽:当您将数据上传到
      s3
      时,您会消耗一些带宽,AWS会为此向您收费
    • 限制:到
      s3
      的上传/下载被限制。如果您在短时间内上载/下载了太多数据,则某些请求可能会失败。我记得在我们的一个工作流程中提到了这个问题
    • 作业效率:在本地
      HDFS
      中存储数据比在
      s3
      中存储数据快。因此,如果希望作业运行更快,最好将结果存储在
      HDFS
    一般而言,我们遵循以下指南:

  • 在工作流中完成一个作业后,如果数据将由工作流中的另一个作业使用,则将其存储在本地
    HDFS
    中,并在使用后删除数据(这样您就不会在
    HDFS
    中耗尽空间)
  • 如果特定作业的数据不是用于最终消耗(临时数据),则将其存储在
    HDFS
    中。否则直接将输出写入
    s3
  • 如果最终消费需要中间输出,则直接将结果存储在
    s3
    中,这样在集群停机时不会丢失数据

  • 由于本地HDFS中的空间很容易耗尽,因此需要规划HDFS集群的容量。此处的AWS链接提供了计算HDFS容量并相应确定EMR群集大小的指南。

    您所说的“它将中间数据保存在S3中”是什么意思?映射器和还原器之间的数据通常保存在本地文件系统上(我相信)——您是如何将其配置为保存在S3上的?您所说的“它将中间数据保存在S3中”是什么意思?映射器和还原器之间的数据通常保存在本地文件系统上(我相信)--您是如何将其配置为保存在S3上的?嗨,Manjunath,谢谢您的回复。我正在考虑将输出存储在
    localhdfs
    上,然后通过
    awss3
    命令将输出推送到S3。但我担心EMR上的本地HDF可能没有足够的空间来保存这么多数据,因为它用于同时运行MR作业。请您谈谈您是如何将数据存储在本地HDF中的?非常感谢。我已经更新了答案。对我同意在HDFS中存储可能会导致空间限制。这就是为什么在我的生活中