所用软件 版本号
zookeeper zookeeper-3.4.10.tar.gz
jdk jdk-8u171-linux-x64.tar.gz
第一章:基本环境搭建以及zookeeper安装
本次集群搭建共有三个节点,(这里是远程的模式)包括一个主节点 master和两个从节点 slave1 和 slave2。
首先使用VB建立三个Centos7的虚拟机,我认为使用VB的一个好处是,使用桥接模式联网后IP相当于固定,后期不用很麻烦的去设置静态IP,桥接网络设置方法参考virtualbox四种网络连接方式及其设置方法。
图1 虚拟机安装一、修改主机名(三台机器均执行)
(1)以主机点 master 为例,首次切换到 root 用户:su
(2)修改主机名为 master:
set-hostname master
(3)永久修改主机名,编辑/etc/sysconfig/network文件,内容如下:
NETWORKING=yes
HOSTNAME=master
注意保存退出。(补充一句,可能有用,Linux中vi编辑,需要使用esc退出编辑模式,然后:wq! 表示保存并退出。)
(4)下载相关工具
yum install -y net-tools
(5)保存该文件,重启计算机:reboot
(6)查看是否生效:hostname
二、配置 hosts 文件(三台机器)
(1)可以通过 ifconfig/ip addr 命令进行查看机器的IP。
(2)查看节点地址之后将三个节点的 ip 地址以及其对应的名称写进hosts文件。这里我们设置为 master、slave1、slave2。
图2 hosts文件配置注意保存退出。
三、关闭防火墙(三台机器)
centos7 中防火墙命令用 firewalld 取代了 iptables,当其状态是 dead 时,即防火墙关闭。
图3 关闭防火墙关闭防火墙:systemctl stop firewalld
查看状态:systemctl status firewalld
四、时间同步
(1)时区一致。要保证设置主机时间准确,每台机器时区必须一致。实验中我们需要同步网络时间,因此要首先选择一样的时区。先确保时区一样,否则同步以后时间也是有时区差,可以使用 date 命令查看自己的机器时间。
(2)选择时区:tzselect
图4 时间同步(3)由于 hadoop 集群对时间要求很高,所以集群内主机要经常同步。我们可以使用 ntp 网络时间协议进行时间同步,master 作为 ntp 服务器,其余的当做 ntp 客户端,下载 ntp(三台机器)
yum install –y ntp
(4)master 作为 ntp 服务器,修改 ntp 配置文件。(master 上执行)
vi /etc/ntp.conf
server127.127.1.0 #local clock
fudge127.127.1.0stratum 10 #stratum设置为其它值也是可以的,其范围为0~15
重启 ntp 服务 /bin/systemctl restart ntpd.service
(5) 其他机器同步(slave1,slave2)
等待大概五分钟(这时候一定要等一会才成功的哦),再到其他机上同步该 master 服务器时间。
ntpdate master
如果配置平台式没有外网连接可以将三台机器设为统一时间,输入命令:
date -s 10:00(时间)
五、配置 ssh 免密
SSH 主要通过 RSA 算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop 集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop 采用的是 ssh 的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果 hadoop 对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH 免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。
(1) 每个结点分别产生公私密钥:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa(三台机器)
秘钥产生目录在用户主目录下的.ssh 目录中,进入相应目录查看:cd .ssh/
( 2 )id_dsa.pub 为公钥, id_dsa 为私钥,紧接着将公钥文件复制成 authorized_keys 文件:(仅 master)
cat id_dsa.pub >> authorized_keys(注意在.ssh/路径下操作)
在主机上连接自己,也叫做 ssh 内回环:ssh master
(3)让主结点 master 能通过 SSH 免密码登录两个子结点 slave。(slave 中操作)
为了实现这个功能,两个 slave 结点的公钥文件中必须要包含主结点的公钥信息,这样 master 就可以顺利安全地访问这两个 slave 结点了。slave1 结点通过 scp 命令远程登录 master 结点,并复制 master 的公钥文件到当前的目录下,且重命名为 master_das.pub,这一过程需要密码验证。
scp master:~/.ssh/id_dsa.pub ./master_das.pub
将master 结点的公钥文件追加至authorized_keys 文件:
cat master_das.pub >>authorized_keys
这时,master 就可以连接 slave1 了,同理 slave2 中也是这么操作。
图5 ssh免密登录六、安装 JDK(三台机器)
(1)首先建立工作路径/usr/java
mkdir -p /usr/java
tar -zxvf /opt/soft/jdk-8u171-linux-x64.tar.gz -C /usr/java/
划重点了,记住本文介绍的所有的解压包都是放在/opt/soft目录下。
(2).修改环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
(3)生效环境变量:source /etc/profile
查看 java 版本:java -version
(4)同理 slave 节点,相同安装步骤,修改环境变量。
图6 jdk安装以及环境配置scp -r /usr/java root@slave1:/usr/
scp -r /usr/javaroot@slave2:/usr/
七、安装 zookeeper
(1)修改主机名称到 IP 地址映射配置。
vi /etc/hosts
192.168.15.104 master master.root
192.168.15.127 slave1 slave1.root
192.168.15.124 slave2 slave2.root
(2)修改 ZooKeeper配置文件。在其中 master 机器上,用 tar -zxvf命令解压缩 zookeeper-3.4.10.tar.gz。
创建工作目录:mkdir -p /usr/zookeeper
解压:tar -zxvf /opt/soft/zookeeper-3.4.10.tar.gz -C/usr/zookeeper/
(3)修改配置文件conf/zoo.cfg
这时候需要用 cd 命令进入 zookeeper-3.4.10/conf 目录下,将 zoo_sample.cfg 文件拷贝一份,命名为为“zoo.cfg”。
scp zoo_sample.cfg zoo.cfg
Zoo.cfg 文件配置如下:
图7.1 zoo.cfg配置文件修改tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata
clientPort=2181
dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
(4)在 zookeeper-3.4.10的目录中,创建 zkdata 和 zkdatalog 两个文件夹,zkdatalog 文件夹,是为了指定 zookeeper 产生日志指定相应的路径。
mkdir zkdata
mkdir zkdatalog
(5)进入 zkdata 文件夹,创建文件 myid。
图7.2 主节点myid编辑(6)远程复制分发安装文件,上面已经在一台机器 master 上配置完成 ZooKeeper,现在可以将该配置好的安装文件远程拷贝到集群中的各个结点对应的目录下:
scp -r /usr/zookeeper root@slave1:/usr/
scp -r /usr/zookeeper root@slave2:/usr/
(7)设置 myid。在我们配置的 dataDir 指定的目录下面,创建一个 myid 文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg 文件中配置的 server.X 中 X 为什么数字,则 myid 文件中就输入这个数字,slave1 中为 2,slave2 中为 3。
图7.3 子节点myid编辑cd /usr/zookeeper/zookeeper-3.4.10/zkdata
(8)配置环境变量并启动 ZooKeeper。在每台机器上操作如下:
vi /etc/profile
#set zookeeper environment
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
PATH=$PATH:$ZOOKEEPER_HOME/bin
生效:source /etc/profile
(9)启动 ZooKeeper 集群
在 ZooKeeper 集群的每个结点上,执行启动ZooKeeper 服务的脚本,如下所示:
图7.4 zookeeper状态确定cd /usr/zookeeper/zookeeper-3.4.10
bin/zkServer.sh start
bin/zkServer.sh status
通过上面状态查询结果可见,一个节点是 Leader,其余的结点是Follower。
说明:此系列文章是为了记录本人学习过程,以此来加深理解,希望各位大神路过!!!
网友评论