hadoop—从s3读取超过500gb的数据并将400gb的输出保存到s3是个好主意吗?

6l7fqoea  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(405)

我的mr任务从awss3读取500gb的数据,同时将中间数据保存在s3中,并将减速机的输出(大约400gb)写入s3,这是一个好的设计吗?
还有其他更便宜、更稳定的解决方案吗?谢谢您!

h7wcgrx3

h7wcgrx31#

我们的etl作业在aws中运行。我们使用oozie进行工作流管理。
当您在emr(elasticmapreduce)中运行时,您可以选择写入其中一个 s3 或者去当地 HDFS .
将数据存储在 s3 或者 HDFS 取决于各种因素,如:
数据性质:临时(使用) HDFS )或永久性(使用 s3 )
成本:储存在 s3 花了你几美分/美元
带宽:当你上传数据到 s3 你消耗了一些带宽,aws为此向你收费。
限制:上传/下载到/从 s3 被节流。如果您在短时间内上载/下载了太多数据,则某些请求可能会失败。我记得在我们的一个工作流程中碰到过这个问题。
工作效率:在本地存储数据 HDFS 比存储在 s3 . 所以,如果你想让你的工作运行得更快,把结果存储在 HDFS 总的来说,我们遵循以下指南:
在工作流中完成作业后,如果数据将由工作流中的另一个作业使用,则将其存储在本地 HDFS 并在消费后删除数据(这样您就不会在 HDFS ).
如果特定作业的数据不是用于最终消费(临时数据),则将其存储在 HDFS . 否则直接将输出写入 s3 .
如果最终消费需要中间输出,则直接将结果存储在 s3 ,这样在集群崩溃时不会丢失数据
因为在本地hdfs中很容易耗尽空间,所以需要规划hdfs集群的容量。这里的aws链接[计算集群的hdfs容量],提供了计算hdfs容量以及相应地确定emr集群大小的指南。

myss37ts

myss37ts2#

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

相关问题