我的mr任务从awss3读取500gb的数据,同时将中间数据保存在s3中,并将减速机的输出(大约400gb)写入s3,这是一个好的设计吗?还有其他更便宜、更稳定的解决方案吗?谢谢您!
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集群大小的指南。
s3
HDFS
myss37ts2#
hdfs上的map reduce被设计成接收输入并执行少量操作,然后进行写操作。因为它是并行完成的,所以设计并不像你想象的那么糟糕。你能不能再详细一点,便宜一点,稳定一点。hdfs绝对稳定。
2条答案
按热度按时间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集群大小的指南。
myss37ts2#
hdfs上的map reduce被设计成接收输入并执行少量操作,然后进行写操作。因为它是并行完成的,所以设计并不像你想象的那么糟糕。你能不能再详细一点,便宜一点,稳定一点。hdfs绝对稳定。