集群如何动态添加节点和个性化配置

(PS:本文基于CentOS7.x + HDP3.1进行描述)

前几天看到讨论群有小伙伴提到,大数据集群如何针对个别机器做个性化配置这个问题。

正好这两天因为工作需要,要把当前的大数据测试集群做个扩容,也就是新增加几台服务器,以提高原本集群的计算和存储能力。

特此写下这篇文章,也许可以帮到有需要的小伙伴们。

因为我们用的是HDP全家桶(CDH或者CDP亦同理),像这种发行版的大数据平台软件,因为有厂家出面做了版本整合,将其打包成一个整体、于是其中的组件之间都是做了版本适配的,所以我们在使用的时候基本不需要担心兼容性问题

而这,便是发行版大数据软件相比完全散装的社区版最大的优势之一。

像这种自带集群管理功能,提供集群服务操作界面的大数据平台,通过动态方式对集群规模进行扩容,是一件非常方便的事情。

但是在现实操作中,我们不得不面临一些比较棘手的难题。

比如,你集群后续要增加(扩容)的机器的配置跟之前的机器配置不一样,这里的不一样,既有内存、CPU、还会有硬盘等硬件指标。

如果你为了省事,整个集群服务器都只用一个统一的配置,当然也可以把集群给跑起来,但是这样会让那些硬件资源异构的服务器之间,缺少了一种个性化的关怀、以及几分管理该有的温度。

这种“一视同仁”的资源分配策略,虽然够简单,但是也让集群在工作的时候总显得不那么优雅。

那么面对这种因为前后服务器硬件资源不一致,但是又不得不在同一个集群中共存的情况,该如何解决?

答案是:通过分配不同的配置组来进行

下面就以HDP集群为例,利用其集群管理工具Ambari,来操作增加一台配置异构的机器,该如何操作?



0.基础软件的安装

拿到机器后,第一步一定是安装必要的一些软件,以此来符合作为存储和计算服务器的基础要求,软件安装步骤大致如下:

  1.  操作系统部署,要求版本最好跟之前集群版本一致(如果条件不允许,至少需要子版本保持一致,比如同为CentOS7.x),且建议部署英文版本,避免后续出现一些恼人的乱码显示问题,另外不要安装桌面版;

  2.  磁盘挂载,因为是大数据应用,因此对于磁盘的规划可以用最简单的方式,即每块硬盘只需要划分一个分区,然后将其依次挂载就可以了,数据盘不用做LVM管理,这样反而麻烦;

  3.  安装基础软件,比如Python环境和JDK,Python是ambari管理需要(一般CentOS7.x默认会安装Python2.7),因为集群所有服务的启停都是用ambari用Python脚本实现的,而JDK则不用解释(建议1.8就可以了),所有大数据服务和应用都需要依赖它;

  4. 关闭防火墙和selinux,因为集群之间工作时需要非常多的端口间通信,这个必须要关闭;

5. 修改机器hostname,这个在部署集群的时候需要,而且后续集群之间服务的通信也是根据hostname来识别的,起名字时尽可能正规一点,别太随意,显得不专业;

6. 将新增机器的hostname和ip映射写入到集群中所有机器的hosts文件中,以此让所有机器都能通过hostname来识别新增加的机器。

以上步骤因为非常简单,只做大致说明,详细步骤网上遍地都是,不再赘述。


1.设置免密SSH

因为Ambari要跟新加的机器进行通信,且这个过程中会涉及到非常多的ssh操作进行数据之间的传递,因此这个步骤必不可少。

  • 在新增加的机器上用root用户生成秘钥:

    用ssh-keygen命令,然后一路回车,这样就在新机器中生成了root用户的公钥和私钥;

  • 在Ambari server机器(Ambari主节点),通过运行如下命令:

    一路yes,然后输入新机器的root密码。

    这个命令的作用在于:将新增加的机器(hdp05.pcl-test.com)的公钥给拿过来保存到Ambari server机器上,这样,Ambari server就可以无密码直接ssh连接到新机器上了;

  • 如果不放心,用命令测试一下试试看:



2. 添加新机器

以上准备工作做好后,就可以开始添加新服务器了。

第一步:打开Ambari界面,点击Hosts:

然后看到左边的Actions按钮,点击去,然后选择Add New Hosts:

之后便弹出如下图的这样一个对话框:
这里要注意,第一个框框必须是新增机器的的hostname,而不是IP。

第二个框框是Ambari server这台机器上的私钥,私钥文件为: /root/.ssh/id_rsa, 把里面的整个内容都拷贝进去,注意是整个内容

然后点击右下角的按钮,进行新增机器的登记和确认操作。

这个时候,Ambari会对新机器进行各种环境检查,注意这里只会出现warnning,不会阻塞下一步操作,虽然如此,但还是建议你将告警的步骤都逐一完善,以免对后续的集群运行产生影响。


3. yum源文件准备

在上面步骤准备就绪之后,就要着手组件的安装准备工作了。

我们知道在Linux上安装软件,你得先有源,也就是这个软件你是从哪下载过来的,你要提供这样的下载地址,如果是对于一般的Linux软件,比如安装个httpd服务之类的,这个时候,你的Linux系统是本身自带这种源(地址)的,而且如果你的服务器刚好能联通外网的情况下,一个简单的yum命令就搞定了。

但是,我们现在要做的,是要对一台新增加的机器安装大数据组件,于是这个组件从哪下载,我们就必须要事先考虑清楚。

既然知道这些组件的源,Linux系统本身是不可能自带的,那么我们就需要去额外配置。

怎么配? 用本地源方案(关于HDP3.1的所有组件我都放在了云上,有兴趣的小伙伴可以自行下载),而且只能是本地源方案,如果你想尝试用服务器联网,去官网下载的方式去安装部署,相信我,这个过程可能比你现在阳了还要痛苦。

至于如何配置本地源,全套的安装包都给你了,配置就非常简单了,这里同样不赘述,网上一堆资料(考验你Linux基础的时候)。

因为集群之前就是用的本地源方案,因此那些需要配置的repo文件(yum源文件)在之前的集群中就已经存在了,现在只需要把这些repo文件给copy到这台新增机器的/etc/yum.repo.d/目录下就可以了。

而需要的repo文件是这4个:

至于里面的内容,就是你配置的本地源地址。


4. 部署必要的大数据组件 

既然添加了新机器到集群中,且告知了本地源地址,那么让该机器承担哪些角色,也就是安装哪些组件,就需要你提前想好,然后在对话框中勾选对应的选项。

但是由于这一步骤我已经做过了,这里暂时不能截图,操作也非常简单,相信你一看就会。

选中必要的组件按钮后,接下来就是一路的Next,开始安装各种必要的组件。

由于配置了本地源,因此新机器在安装的时候会非常的轻松,一路高歌,几分钟就安装好了需要的组件,而且Ambari会自动将安装的组件全部启动。

但是,这里面有个问题:前面说过新机器的配置跟旧机器是不一样的,但是在前期安装的时候,我们没有去理会这一点,因此这台新机器部署完成后,所有的运行参数设置都是跟原来老机器一样

这个不是我想要的,因此需要对其进行特别的修改。


5. 新建配置组

怎么改?新建配置组。

在Ambari的集群管理策略中,是可以通过这种方式来对不同配置规格的机器进行分组管理的,以达到“区别对待”的目的

具体配置操作也很简单,在Ambari管理界面选择任意一个服务名称,比如我选择HDFS:

根据图中箭头所指步骤,选择管理配置组。

然后在弹出的对话框中,根据下图的提示进行新建配置组,和对应的机器:

配置好之后,在对应的配置界面,就多出了一个额外的配置选项:

根据新机器的配置情况,重新配置合适的参数就可以了。

我这个新机器因为内存更大,且磁盘挂载的情况跟老的不一样,因此需要做上图你看到的个性化配置。

配置好之后,保存重启就可以让新配置在新机器上生效了(只用重启新加的机器)。

这里需要说明一点的就是:配置组是根据每个服务来的,比如HDFS可以新增一个配置组,那么YARN也可以照葫芦画瓢,新增一个YARN的配置组来适配新加的机器在yarn服务上的运行参数,操作方式类似,这里不再赘述。


最后

以上所有的动作,都可以在集群正常运行情况下进行,不需要重启集群的任何服务(新增机器除外)。

当然,以上情况是在环境以及各项配置都顺利的前提下,才能如此一帆风顺,但是现实往往是残酷的,你总能或多或少遇到些坑爹的意外情况,而且可能每次遇到的意外都不一样。

而这就是考验你Linux底子的时候了,我一直认为,作为一个合格的程序员,Linux的一些常见问题,都必须要学会解决。

如果不幸遇到报错,不要烦躁、不要气馁,静下心来认真分析问题,总能找到解决办法的,因为这些,网上也都有答案。


你可以添加我的私人微信,拉你入技术讨论群,跟一群热爱技术的小伙伴一起成长...




请使用浏览器的分享功能分享到微信等