hadoop生产基础设施-存储dilema

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

几个月前,我设法建立了一个非常基本的hadoop集群,只使用3台虚拟机2作为namenode(active和standby),1作为datanode。我甚至安装了zookeeper来为namenode启用ha。另外,我使用namenode作为datanode(我知道这在生产环境中是不重要的),我只是为了测试而做的。我所做的安装基本上是通过下载hadoop和其他二进制文件,而不是使用任何cdh安装,只是为了了解底层配置文件以及它如何影响安装。
这三个vm的存储空间被Map到一个来自nfs的专用卷共享(我们已经安装并使用了nfs基础设施)。
现在在玩了所有的设置和安装,我们已经决定移动固件和设置一个生产环境。首先,这是一个非常基本的集群,最多有4-5个数据节点。我计划购买两台高端服务器作为namenode和备用namenode。而对于datanode,我很困惑。
我们不会使用mapreduce框架,而是计划使用ApacheSpark。因此,我们的工作将是记忆密集型的Spark被使用。因此,我的基本理解是,这些datanode的内存(ram)应该位于更高端,以便运行spark worker守护进程。那么datanode的存储空间呢?是否必须使用本地硬盘空间在datanode中存储数据?或者我可以像在测试环境中那样将存储Map到nfs卷。
有人能告诉我通过nfs而不是物理本地存储在datanode上设置存储的利弊吗?特别是当我计划运行spark作业时。这会影响处理速度吗?
此外,nfs基础设施还具有raid功能。所以在这种情况下,我甚至应该费心在hadoop中设置复制因子—如果我最终使用nfs进行存储的话。
对不起,这些问题,希望有人能澄清这个歧义。

i86rm4rw

i86rm4rw1#

与使用集中式存储(如san、nas)相比,本地存储(或das-直连存储)提供了更好的iops(好吧,我知道,hadoop是在每个节点都有本地计算、内存和存储的商用硬件的前提下诞生的)。
因此,我想说,如果您对从nfs获得的iops没有问题,那么一定要记住,您必须将其表示为hdfs。如果您的raid满足您的要求,那么可以使用1作为复制因子,并节省存储成本。
如果您不打算使用mapreduce和nfs作为存储,并且对spark感兴趣,那么您不需要hadoop/hdfs,您可以直接在裸机(或vm)上安装spark,而不需要hadoop,并且做任何您想做的事情。

相关问题