大数据环境部署时的本地源问题


0.


最近有球友反映在部署我的大数据项目时,被直接卡在了第一步的集群部署上了,而具体的卡点,然是HDP安装包的本地源问题。


确实,对于一个如果Linux基础比较一般的同学来说呢,这个步骤还是有那么点点难度的(我当年第一次接触也是花了很多时间),而我提供的那份部署文档中,在这块确实没有说清楚。


关于这部分内容,很多年前团队的一个同事写的,然后去年又被一个群里的小伙伴整理过,可能经过这么来回几次倒腾,部署步骤没有那么严谨了,导致很多同学都栽了跟头。


那么今天这篇文章,我准备系统性、细致性地给大家聊一下这个本地源部署的必要性、部署过程和部署原理。



1. 本地源的必要性


对于很多公司或者项目来说,一般情况下服务器是无法直接上外网的,或者对于一些国外的软件,服务器即便有外网,也会因为网速受限或者因为“墙”的缘故,而无法顺畅的下载我们想要的安装包。


该怎么办?最好的办法就是部署公司内部本地源环境。


说到本地源呢,其种类其实有很多,比较让大家熟知的本地源种类有如下3种:


1. 提供Linux操作系统下载安装的各种rpm软件包源,可直接通过yum的方式从本地仓库进行下载安装;


2. 提供软件工程项目中需要用到的第三方依赖软件包,比如大数据开发过程中需要引入的第三方jar包依赖,一般我们可以通过创建nexus的私服来提供本地源,通过maven来下载;


3. 如果项目用到docker,需要频繁下载镜像文件,还可以创建本地的docker仓库来构建基于docker镜像的本地源。


以上3种,是我认为在目前的软件研发项目中用最多的,本地源能够解决的两大痛点问题:一个是网络限制;另一个就是下载效率。


而今天我们要聊的,是第1种,以下部署环境在CentOS7.x_X86-64进行

 


1. 部署过程及原理说明


本地源的玩法,其实就是一个典型的C/S架构,C(client)就是每一台需要下载软件包的客户端(服务器),只需要通过配置yum的地址就可以实现,这一步,没难度。


而S(server)则是部署本地源的服务器,我们把需要安装的各种rpm包,给扔到这台机器,然后给他创建一个用于本地源管理的索引,再配上个http服务,就搞定了。


而我们所谓的部署,其实指的是本地源server的部署,既然上面提到了需要创建本地源管理的索引,那么第一步,自然就是要安装这个管理的工具。


1.1 安装本地源管理工具


既然要创建一个软件仓库,那么就需要对这个仓库的内容进行管理,否则的话,客户端在需要安装哪个软件的时候,它就不知道往哪找,这个就有点类似我们对数据库的数据创建索引是一个道理。


有了这个索引,客户端在想要安装任何一个仓库中的软件,都可以非常高效地找到。


具体部署方式,在命令行用yum安装:


yum insatall -y createrepo (用root用户,或者sudo权限)


当然,如果你的服务器没有外网,那就稍微麻烦一点,需要把这个rpm包手动下载下来,然后给传到你的服务器中,可以到这个地址进行手动下载:



下载之后,用命令安装:rpm -ivh createrepo-*.


安装之后,不需要启动任何服务,因为它只是一个命令,后续会用上。


PS:对于有的系统来说,如果你当初的系统安装选择的是最大化安装,可能这个软件本身就有。



1.2 安装http服务


管理仓库的工具有了,那么如何将仓库里的软件包传递出去,便是http这个传输协议要干的事情了,所以要部署http服务。


具体做法,在命令行下载httpd:


yum install -y httpd  (用root用户,或者sudo权限)


同样,如果你服务器没有外网,下面这个截图是你通过windows机器下载的途径:



因为http是个服务,因此需要手动开启该服务。


执行命令:systemctl enable httpd; systemctl start httpd.


开启这服务之后呢,因为我们没有修改任何关于这个服务的配置,因此就只能用它的默认配置方式,当然,如果你愿意,你是可以对它的配置进行修改的。


配置文件位置: /etc/httpd/conf/httpd.conf


对于这个http服务来说,有两处可能值得你注意的地方,一个是服务端口:


另一个则是,服务的路径,也就是你要放置软件包的位置:


一般情况下来说,是不需要修改的,就这么地吧。


那为了验证这一步部署成功,可以打开你的浏览器,输入当前http服务器的ip地址(不用加端口,默认就是80端口),看能否有如下画面:


如果没有,可能是服务器的防火墙没有关,关上再试试。



1.3 放置安装包


前面的两个准备工作做好了,接下来就是放置软件包了,刚才看到http服务的默认配置中,服务的目录为:/var/www/html。


那么我们就把这个软件包给放到这个目录下,那具体怎么放呢,先来看下我给你们提供的软件包:


对于一般的同学来说,下载我框出来的这4个就可以了。


这4个软件包,代表了在部署HDP时不同的4个模块,把他们下载下来之后,放到/var/www/html目录下,然后逐个解压:


运行解压命令:tar -zxvf xxxxx.tar.gz


解压后,把原的.tar.gz压缩包给删除,或者移走,然后看到下面这样一个目录结构:


有同学可能会好奇,不是4个压缩包吗?为什么有5个文件夹。


因为,最后一个文件夹OS-RPM是我自己额外加进去的(你也可以忽略),是CentOS7的操作系统相关的所有RPM包,放到这里的目的在于:


如果在安装HDP过程中,需要依赖一些OS的基础包(我之前用的最小化安装),这个就能派上用场了,就能顺带从这个源里把依赖包也给安装了,如果你不喜欢这么玩,也可以不用。



1.4 创建仓库索引


接下来,就需要在当前目录下创建一个本地源仓库的索引,目的在于,当我的http路径指向这里的时候,是可以识别到当前路径下的所有软件包资源的。


创建命令为:


createrepo .  (注意,需要cd到当前目录下,注意命令后面有个.号,代表当前目录)


然后你会看到创建好索引的目录结构为:


此时,多了一个repodata目录,该目录就记录了当前目录下所有的软件信息,提供客户端下载软件时的索引服务。


这样一来,其实本地源就已经做好了,但是呢,为了让这个URL更优雅,我建议你再向上包一层目录。


现在这些文件夹不是在系统的/var/www/html目录下吗,可以像我一样,再添加一个子目录,比如我的目录结构是这样的:



增加了一层HDP/3.1.0.0这个子目录,原因在于告诉当前本地源的URL路径是什么源,什么版本。

这样,向外提供的URL就是:http://本地源服务器ip:80/HDP/3.1.0.0


1.5 配置本地源客户端

接下来就可以在需要安装部署的客户端机器上配置本地源地址了。

在各个客户端机器的/etc/yum.repo.d/目录下,创建如下4个本地源地址,其文件名,和文件内容分别如下:


配置好之后,在任何一台客户端机器上运行yum安装命令测试一下,看是否能读取到源信息:


以上就是整个本地源的部署过程。



2. 


本地源的部署,其实是一个很基础的Linux能力,很多开发人员可能在工作中压根就不会涉及到。


因此第一次部署,会觉得很难,有的同学会觉得这个HDP部署也太复杂了吧,但这个不是HDP的锅,任何大数据平台想要高效部署,都要建立本地源。


而这一步,我希望你能玩会。



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


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