几个月前,我设法设置了一个非常基本的Hadoop集群,只使用3个虚拟机,2个作为Namenode (活动和备用),1个作为DataNode。我甚至安装了Zookeeper来为Namenode启用HA。此外,我使用Namenode作为Datanode (我知道这在生产环境中是不可能的),我只是为了测试。我所做的安装基本上是通过下载Hadoop和其他二进制文件,而不是使用任何CDH安装,只是为了了解底层配置文件以及它对安装有什么影响。
这三个虚拟机的存储空间从NFS映射到专用卷共享(我们已经设置并使用了NFS基础架构)。
现在,在尝试了所有的设置和安装之后,我们决定移动fwd并设置一个生产环境。首先,这将是非常基本的集群,最多有4-5个数据节点。我计划购买两台高端服务器作为Namenode和备用Namenode。而对于Datanode,我感到困惑。
我们不会使用MapReduce框架,而是计划使用Apache Spark。所以当Spark被使用时,我们的工作将是内存密集型的。所以我的基本理解是,这些Datanode的内存(RAM)应该在更高端才能运行Spark Worker守护进程。那么Datanode的存储呢?是否强制使用本地硬盘空间在Datanode中存储数据?或者,我是否可以像在测试环境中那样将存储映射到NFS卷。
有人能告诉我通过NFS而不是物理本地存储在Datanode上设置存储的优缺点吗?特别是当我计划运行Spark Job时。这会影响处理速度吗?
此外,NFS基础架构还设置了RAID功能。因此,在这种情况下,如果我最终将NFS用于存储目的,我是否应该费心在Hadoop中设置复制因子。
对于这些问题,很抱歉,希望有人能澄清这个模棱两可的问题。
发布于 2016-11-18 07:17:49
与使用集中式存储(如SAN、NAS)相比,本地存储(或DAS -直接连接存储)提供了更好的IOPS (好的,我可以肯定,hadoop是在商用硬件的前提下诞生的,每个节点都有计算、内存和存储)。
因此,我想说,如果您对从NFS获得的IOPS没意见,当然,但请记住,您必须将其表示为HDFS。如果您的RAID满足您的要求,您可以选择1作为复制因子,从而节省存储成本。
如果您不打算使用MapReduce并使用NFS作为存储,并且对Spark感兴趣,那么您不需要Hadoop/HDFS,您可以直接在裸机(或VM)上安装Spark,而不需要Hadoop,并且可以做任何您想做的事情。
https://stackoverflow.com/questions/40622981
复制相似问题