几个月后我设法建立一个非常基本的Hadoop集群,只使用3个虚拟机2作为Namenode(活动和待机),1个作为DataNode。我甚至安装了Zookeeper来为Namenode启用HA。我也使用Namenode作为Datanode(我知道这在生产环境中是BIG NO),我只是为了测试。我做的安装基本上是通过下载Hadoop和其他二进制文件,而不是使用任何CDH安装,只是为了了解底层配置文件以及它如何影响设置。
这三个VM的存储空间已映射到NFS的专用卷共享(我们已经设置并使用了NFS基础结构)。
现在玩完所有的设置&安装,我们决定移动fwd并设置一个生产环境。首先,这将是非常基本的群集,最多有4-5个Datanode。我计划购买两台高端服务器作为Namenode& amp;待机Namenode。对于Datanode,我很困惑。
我们不会使用MapReduce框架并计划使用Apache Spark。因此,当使用Spark时,我们的工作将是内存密集型。所以我的基本理解是,这些Datanode的内存(RAM)应该在更高端运行Spark Worker守护进程。那么Datanode存储怎么样?是否必须在Datanode中使用本地硬盘空间存储数据?或者我可以将存储映射到NFS卷,就像我测试环境一样。
有人能告诉我通过NFS而不是物理本地存储在Datanode上设置存储的优点和缺点 - 特别是当我计划运行Spark Jobs时。这会影响处理速度吗?
此外,NFS Infrastructure还具有RAID功能。所以在这种情况下,我甚至不愿意在Hadoop中设置复制因子 - 如果我最终使用NFS进行存储。
对不起这些问题,希望有人能清除这种含糊之处。
答案 0 :(得分:0)
本地存储(或DAS - 直接连接存储)提供更好的IOPS(好吧,我知道可以说,hadoop诞生于商用硬件的前提下,每个节点都有本地计算,内存和存储),与使用集中存储相比(像SAN,NAS)。
所以我想说如果你确定你从NFS获得的IOPS肯定但是记住你必须把它作为HDFS呈现。如果您的RAID符合您的要求,您可以使用1作为复制因子并节省存储成本。
如果您不打算使用MapReduce并使用NFS作为存储并且对Spark感兴趣,那么您不需要Hadoop / HDFS就可以在没有Hadoop的情况下直接在裸机(或VM)上安装Spark并执行您想要的任何操作。