2018年9月29日
阅读本文档者需要具备一定的linux、大数据平台架构经验,关键一点你需要一个VPN账号和堡垒机账号(单位管理规定)。
因为产品上线,临时申请了三台云服务器(有点措手不及),从晚上8点开始,和同事(小韩)一块进行服务器配置和应用部署,到第二天凌晨3点多,完全部署完成,并进行了服务测试,一切ok!有点小兴奋,晚上吃了个饭,到凌晨5点才在会议室睡着了(是不是有点贱)。
下面记录一下整个流程,以便自己后续遇到类似情况少犯错误(服务器平台环境不同,还是会遇到新的问题),另外,也希望能够帮助有需要的小伙伴。
整体的内容包括(1)云服务器配置(因为每个人用到服务器及服务器安装的软件、系统配置是不一样的,仅供参考)、(2)集群搭建之前的设置、(3)安装zookeeper、(4)安装hadoop集群、(5)安装spark集群、(6)安装kafka、(7)安装redis、(8)配置深度学习环境。
云服务器配置
搭建过程中可能需要在线安装一些软件,服务器首先要配置上网代理,并进行磁盘挂载操作。
1. 上网代理设置
上网代理设置比较简单,打开终端并执行下述命令即可:
echo -e "export http_proxy=http://ip:port\nexport http_proxy" >> /etc/profile && source /etc/profile
echo -e "export https_proxy=http://ip:port\nexport https_proxy" >> /etc/profile && source /etc/profile
2. 服务器磁盘挂载
新分配的云服务器的数据盘需要手动挂载,过程稍微复杂一些,这里参考运维中心提供的操作说明。
- 查看数据盘是否需要挂载
在终端输入df -h命令,如果看不到数据盘(在没有分区和格式化数据盘之前,是看不到数据盘),执行fdisk -l命令,如果发现存在/dev/vdb,则表示存在需要挂载的数据盘,否则,表示没有数据盘需要挂载,具体操作如下图所示,显示信息因服务器不同会有所差别,比如vdb是待挂载数据盘名称,也有可能是其他名称。
- 对数据盘进行分区
运行 fdisk /dev/vdb,对数据盘进行分区操作。根据提示,依次输入 n,p,1,两次回车,wq,分区就开始了。
- 查看新的分区
运行 fdisk -l 命令,查看新的分区。如果新分区 vdb1 已经创建好,会显示如下面示例中的/dev/vdb1。
- 对新分区进行格式化
运行 mkfs.ext3 /dev/vdb1,对新分区进行格式化。格式化所需时间取决于数据盘大小。您也可自主决定选用其他文件格式,如 ext4 等。
- 写入新分区信息
运行 echo /dev/xvdb1 /mnt ext3 defaults 0 0 >> /etc/fstab 写入新分区信息。完成后,可以使用 cat /etc/fstab 命令查看。
- 挂载新分区
运行 mount /dev/vdb1 /mnt 挂载新分区,然后执行 df -h 查看分区。如果出现数据盘信息,说明挂载成功,可以使用新分区了。
集群搭建之前的准备工作
这一步主要是对服务器做必要的设置,方便后续集群搭建工作。主要包括服务器主机名修改,添加主机名和IP地址映射,设置主机之间的免口令登陆,安装JDK。
首先,确定三台主机的主机名分别为:risbigdata5、risbigdata6、risbigdata7;
其次,在risbigdata5的/mnt目录下,新建software文件夹,用来存在相关软件(本人习惯);
再次,将搭建集群所需要的软件拷贝到risbigdata5的/mnt/software下,接下来开始其它的工作。
1. 设置主机名
查看当前的主机名,在终端输入hostname;
设置新的主机名,在终端输入hostname risbigdata5,主机名被设置为risbigdata5。其它修改主机名的方法如下:
- 也可以通过编辑network文件,来修改主机名,不过这种情况下需要重启服务器才能生效。具体操作如下:
vi /etc/systconfig/network
添加或修改的内容为:HOSTNAME=risbigdata5
- 通过编辑hosts文件,给127.0.0.1添加主机名来实现。具体操作如下:
vi /etc/hosts
添加或修改的内容为:127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6 risbigdata5
2. 添加主机名和IP地址映射
打开终端,编辑/etc/hosts,添加集群中所有主机的ip和主机名映射(每一台主机的设置相同),本文配置的三台主机的ip和主机名设置如下:
3. 设置主机之间的免口令登陆
- 关闭selinux防火墙
通过vi /etc/selinux/config打开文件编辑,将SELINUX=enforcing修改为SELINUX=disabled, 重启机器可生效。最好执行一下防火墙停止命令(有不可以预知的原因),systemctl stop firewalld.service --停止firewall。
- 设置免口令登陆
生成ssh密钥
查看当前账户下是否存在.ssh目录(通过cd ~/.ssh,如果没有,会提示不存在,可通过mkdir创建,也可以不创建,在执行ssh-keygen -t rsa时会自动生成),然后通过ssh-keygen -t rsa为每个主机生成ssh密钥,遇到提示,直接按entor健就可以了。
生成授权文件
进入.ssh目录,cd ~/.ssh,通过密钥文件生成授权文件:cat id_rsa.pub>>authorized_keys,此时可以通过使用ssh无密码登陆本机了。
生成所有主机的授权文件
将三台主机的密钥都加入到授权文件authorized_keys中,然后将授权文件分发到每台主机的.ssh目录下。可以使用远程拷贝命令scp,需要知道主机的密码。
在每台主机上,执行ssh 主机名命令,如果不需要输入密码,则表示ssh无密码登陆设置成功。
4. 安装并配置Java运行环境
将准备好的jdk文件解压到/usr/local目录下,在终端执行tar -zxvf /mnt/software/jdk1.8.0_91.tar.gz命令,然后配置jdk环境变量,通过编辑/etc/profile,在done这一行的下一行添加如下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_91
ClASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/tools.jar
export JAVA_HOME=$PATH:$JAVA_HOME/bin
然后,将profile和jak1.8.0_91文件将拷贝到risbigdata6、risbigdata7对应目录下,通过在终端执行java -version来验证安装配置是否正确,如果能够显示java版本信息表示安装配置正常。
Zookeeper集群搭建
1. 在/mnt下新建program目录,用来放置安装文件(深受windows影响)。
2. 将zookeeper文件解压到/usr/local目录下,在终端执行如下命令:
tar -zxvf /mnt/software/zookeeper-3.4.10.tar.gz -C /mnt/program
3. 配置zookeeper
- 通过zoo_sample.cfg新建一个zoo.cfg文件,在终端执行cp zoo_sample.cfg zoo.cfg命令;
- 修改zoo.cfg文件内容,具体修改如下:
其中,tickTime表示Zookeeper服务器心跳时间,单位毫秒
dataDir表示数据持久化路径,存储内存数据库快照、日志等数据
clientPort=2181 连接端口
server.1=risbigdata5:2888:3888 集群中第一个节点
server.2=risbigdata6:2888:3888 集群中第二个节点
server.3=risbigdata7:2888:3888 集群中第三个节点
server.1、server.2、server.3表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。
- 创建myid文件,设置zookeeper服务器唯一标志
在zkdata目录下,创建myid文件,设置一行内容,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。本次配置中,三台服务器的myid分别设置为1、2和3。
注意:一定要把防火墙关闭掉。(经常会忽落掉,泪!)
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service (查看关闭状态)
4. 配置环境变量
在/etc/profile文件中添加如下内容:
export ZOOKEEPER_HOME=/mnt/program/zookeeper3410
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
5. 检查安装配置是否成功
- 将/etc/profile和/mnt/program/zookeeper3410拷贝到其它两个主机对应目录下。
- 打开终端,在zookeeper安装目录下,执行下列命令:
启动zookeeper
./bin/zkServer.sh start
#正常启动将会显示如下信息
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
通过JPS查看zookeeper线程
查看zookeeper状态
./bin/zkServer.sh status
#正常情况下会显示如下信息
ZooKeeper JMX enabled by default
Using config: /mnt/program/zookeeper3410/bin/../conf/zoo.cfg
Mode: follower(三台机器应该有一台是Leader)
停止zookeeper
./bin/zkServer.sh stop
#正常情况下会显示如下信息
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper3.4.10/bin/../conf/zoo.cfg