spark作为mapreduce的存储层

inb24sb2  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(304)

我正面临着一个独特的问题,我想听听你的意见。
我有一个遗留的map reduce应用程序,其中多个map reduce作业按顺序运行,中间数据来回写入hdfs。由于将中间数据写入hdfs,具有小数据的作业从hdfs的特性中损失的比获得的多,并且花费的时间比非hadoop等效程序要多得多。最终我计划把我所有的MapReduce工作都转换成SparkDAG,然而这是一个巨大的变化,所以我有理由拖延。
我真正想要的短期解决方案是,改变存储层,使我继续受益于map reduce并行性,但不必为存储层付出太多代价。在这个方向上,我正在考虑使用spark作为存储层,map reduce作业将通过spark上下文将其输出存储在spark中,并从spark上下文再次读取输入(通过创建spark input split,每个spark将有自己的spark rdd)。
通过这种方式,我将能够以内存速度操作中间数据读/写,这在理论上会给我带来显著的性能改进。
我的问题是,这个建筑方案有意义吗?有人遇到过这样的情况吗?我是否遗漏了一些重要的东西,即使在解决方案的这个初步阶段,我也应该考虑这些东西?
提前谢谢!

tvz2xvvm

tvz2xvvm1#

这个建筑方案有意义吗?
没有。spark没有独立的存储层,所以这里没有可以使用的东西。如果说它的核心还不够的话,那就是使用标准的hadoop输入格式来读写数据。
如果你想减少存储层的开销,你应该考虑加速存储(比如alluxio)或者内存网格(比如ignite hadoop accelerator)。

相关问题