安装了几次hadoop系统后终于开始有了一点感觉,对程序文件的管理有了一点想法,这里先记着。等搞完了再仔细地总结一下。
- 网络上的基本教程都是从0开始,建用户,建目录,拷贝压缩包,然后再解压,再修改配置文件,再修改系统配置文件;然后从一个机器(基本是master node)同步到其他的nodes上去,再统一启动。
- 整个过程中,其实除了很少的一些配置不一样(比如zookeeper里面的id文件内容不一样),其他的东西都是一样的,而且系统的配置也都一样。
- 我原来的部署脚本都是按照从0开始的动作来编写的,每个机器都要跑一遍。完成一台机器,然后同步到其他机器上去。碰到配置不同的,还需要单独手工来一条命令一条命令的运行。
基于上面对于这些程序的安装理解,其实整个集群的配置可以这样来实现。
- 设置一个文件服务器(可以考虑主备两台),用来存放程序源文件,以及按照实际软件的安装结构已经解压缩的文件,包括配置文件。
- 部署脚本根据每个软件编写,基本思路是:
- 在每个需要安装软件的节点运行;
- 检查节点是否按照软件的需要建立起了合适的基础目录结构以及目录权限;
- 从文件服务器上远程scp整个软件的目录结构和文件到本节点
- 根据节点的属性,动态的设定配置,比如id数等。
- 安装部署过程就变成了远程拷贝和本地配置两个部分。
目前看,对于hadoop/yarn以及spark集群,只需要同步即可文件目录即可。配置文件无需修改。zookeeper还要加单独配置每个journalnode的id。
另外,由于有些软件还有dependency,比如Java是几乎所有系统都需要的。那么就必须有一个安装的先后顺序。
不过,最近流行的Docker技术可能就会改变这个思路,不过对于物理机和虚拟机系统,上述的思路还是可以使用的。