管理(Hadoop)集群的最佳实践

管理(Hadoop)集群的最佳实践

我最近一直在玩 Hadoop。我有一个六节点集群正在运行 - 使用 HDFS,并且已经运行了许多 MapRed 作业。到目前为止,一切顺利。但是,我现在希望更系统地使用更多节点来执行此操作。我们的基础系统是 Ubuntu,当前设置已使用 apt(安装正确的 java 运行时)和 ssh/scp(传播各种 conf 文件)进行管理。这显然无法随着时间的推移进行扩展。

有没有人有使用良好系统自动管理(可能略有不同:磁盘大小不同,每个节点上的 CPU 数量不同)Hadoop 集群的经验?我会考虑无盘启动 - 但想象一下,对于大型集群,启动和运行集群可能会在为操作系统提供服务的机器上遇到瓶颈。或者某种形式的分布式 Debian apt 来保持机器本机环境同步?人们如何成功管理多台(可能不同)机器上的 conf 文件?

首先十分感谢,

亚历克斯

答案1

我建议让节点尽可能相似。正如您所发现的,每个节点的不同设置会让事情变得困难。

我目前运行的集群中的每个盒子都完全相同,这意味着我对每个节点的所有配置都是相同的。配置存储在 NFS 主目录中。机器安装为标准 CentOS,然后应用 CFengine 策略来处理 CDH hadoop/hbase 包的安装,设置为使用共享配置。一旦守护程序启动,机器将自动成为集群的一部分。

总的来说,我强烈建议使用 CFengine、puppet、chef 或其他配置系统之一。这会让生活变得简单很多,尤其是当你的所有配置都不同的时候。这也意味着你可以只安装一个操作系统的标准基础版本,然后应用策略来处理所有的安装和配置。无需网络启动。

不同配置的稍微令人沮丧之处在于配置文件喜欢hdfs-site.xml并且mapred-site不能使用继承,例如提供通用文件,然后为特定节点提供一些特定设置,例如 datadir 或映射槽数量。因此,您可能需要做的是拥有一个通用文件并将其与节点的特定设置合并,然后将其作为节点的配置推出。

相关内容