zookeeper安装笔记

软件版本
CentOS 7.2
jdk 1.8
zookeeper 3.4.12

查看CentOS版本

cat /etc/os-release
rpm -q centos-release

1 安装JDK

1.1 检测系统中的JDK版本

java -version

返回

openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

1.2 检测JDK安装包

rpm -qa | grep java

返回

tzdata-java-2015g-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64

1.3 卸载openjdk

rpm -e --nodeps tzdata-java-2015g-1.el7.noarch
rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64

或者

yum remove *openjdk*

1.4 安装官方JDK

在官网下载页找到相应包的下载链接,执行下载

wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1539075881_cfb11a2b6b70013104eaf21f8b293c27

解压到安装目录

tar -zxvf /mnt/softs/jdk-8u181-linux-x64.tar.gz

配置JDK
新建文件 /etc/profile.d/java.sh,添加如下内容:

# jdk 1.8 configuration
export JAVA_HOME=/mnt/softwares/jdk1.8.0_181
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin

加载配置文件 /etc/profile.d/java.sh

source /etc/profile.d/java.sh

1.5 检测 JDK 安装

java -version

显示返回

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

至此,JDK安装完成。

2 SSH免密登录

查看服务器所有用户

cat /etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性,被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

2.1 创建 hadoop 用户

useradd hadoop

给 hadoop 用户设置密码为 hadoop

passwd hadoop

2.2 创建 SSH 密钥(切换到 hadoop 用户)

如需修改主机名,请参照 修改Linux主机名

2.2.1 在第一台服务器上执行

产生公钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

回显

Generating public/private rsa key pair.
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
36:37:f0:70:c0:57:07:7a:87:34:5e:b8:06:cb:53:75 hadoop@im-test-hadoop01
The key's randomart image is:
+--[ RSA 2048]----+
|       ..  .=++ E|
|        ..o+o= . |
|        ooo++..  |
|         =+.o.   |
|        S +o     |
|       . o .     |
|                 |
|                 |
|                 |
+-----------------+

拷贝公钥到授权文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改 ~/.ssh 的权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

修改 /etc/hosts 文件,添加集群所有节点的映射

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

192.168.3.198   im-test-hadoop01 hadoop3198
192.168.3.199   im-test-hadoop02 hadoop3199
192.168.3.200   im-test-hadoop03 hadoop3200

2.2.2 在第二台服务器上执行

[hadoop@im-test-hadoop02 ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
f7:1e:18:43:5e:94:f5:8b:7c:62:e2:c6:f6:0f:c0:de hadoop@im-test-hadoop02
The key's randomart image is:
+--[ RSA 2048]----+
|            .o.  |
|           ..  . |
|          . .   .|
|         o... . .|
|        S =+ = o |
|         .+== o  |
|          .*oE   |
|          o....  |
|            .... |
+-----------------+

从第一台机器上拷贝授权文件 ~/.ssh/authorized_keys 到本地

[hadoop@im-test-hadoop02 ~]$ scp im-test-hadoop01:~/.ssh/authorized_keys ~/.ssh/
The authenticity of host 'im-test-hadoop01 (192.168.3.198)' can't be established.
ECDSA key fingerprint is 8d:32:c9:14:b2:f8:b4:21:9a:ed:ec:2e:00:75:d0:6f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'im-test-hadoop01,192.168.3.198' (ECDSA) to the list of known hosts.
hadoop@im-test-hadoop01's password: 
authorized_keys

此时,第二台机器 ~/.ssh/ 目录下已经有了文件 authorized_keys 和 known_hosts

[hadoop@im-test-hadoop02 ~]$ ll .ssh/
总用量 16
-rw-------. 1 hadoop hadoop  405 10月 10 10:47 authorized_keys
-rw-------. 1 hadoop hadoop 1679 10月 10 10:43 id_rsa
-rw-r--r--. 1 hadoop hadoop  405 10月 10 10:43 id_rsa.pub
-rw-r--r--. 1 hadoop hadoop  192 10月 10 10:45 known_hosts

复制公钥到授权文件 authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2.2.3 同理在第三、四、… 台机器上重复执行上面的操作

每在一台新服务器上执行时,要先将上一台服务器上的授权文件 authorized_keys 复制到本地,以确保最后一台服务器的授权文件包含之前所有服务器的公钥,在最后一台服务器上执行完成后,将授权文件同步到之前所有服务器上。

scp ~/.ssh/authorized_keys im-test-hadoop01:~/.ssh/
scp ~/.ssh/authorized_keys im-test-hadoop02:~/.ssh/

2.3 在服务器间执行首次SSH登录

在没有进行SSH登录的服务器间进行首次SSH登录,之后就可以进行服务器间SSH免密登录了。

3 安装 zookeeper

3.1 下载解压安装包

从官方下载网址下载安装包

wget -O /mnt/softs/zookeeper-3.4.12.tar.gz http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

解压安装包

tar zxf zookeeper-3.4.12.tar.gz -C /mnt/softwares/

3.2 配置文件

复制 conf/zoo_sample.cfg 为 conf/zoo.cfg

[root@im-test-hadoop01 zookeeper-3.4.12]# cp conf/zoo_sample.cfg conf/zoo.cfg

修改配置为

tickTime=2000
dataDir=/mnt/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=im-test-hadoop01:2888:3888
server.2=im-test-hadoop02:2888:3888
server.3=im-test-hadoop03:2888:3888
配置 描述
tickTime 每个tick的时长,单位毫秒
dataDir snapshot 数据存放目录
clientPort 监听客户端连接的端口
initLimit 允许follower连接和同步到leader时间数,计数单位 tick。如果zookeeper管理的数据比较多,根据需要调大该值
syncLimit 允许 followers 与 ZooKeeper 同步的时间数,单位 tick。如果 followers 落后于 leader 太多,将被舍弃
server.x 组成zookeeper集群的服务器。当一个服务器启动时,它通过在data目录中查找文件myid来确定是自己哪个服务器,myid文件包含服务器编号,该编号匹配server.x中的x。由客户端使用的组成zookeeper集群的服务器列表必须和每个zookeeper服务器拥有的服务器列表相匹配。配置中有两个端口号,第一个是 followers 连接 leader 时用,第二个是 leader选择时用。

zookeeper集群的每台机器需要知道该集群中所有其他的机器。我们通过多行这种形式 server.id=host:port:port 的配置来实现。我们通过为每个 server 创建一个 myid 文件来设定 server id,myid 文件创建在服务的 data 目录,该目录由配置文件配置项 dataDir指定。

在目录 /mnt/data/zookeeper 下创建文件 myid

touch /mnt/data/zookeeper/myid

文件内容只有一行内容标识 server id,除此之外不含任何其他内容。

1

或者

echo 1 > /mnt/data/zookeeper/myid

该 id 必须是 1 到 255 之间的值,且在整个集群中唯一

3.3 在集群其他机器上安装 zookeeper

将 3.1 和 3.2 步骤中的 zookeeper 安装成果复制到需要安装的其他机器上,并修改相应的 myid 中的 server id。

第一步,创建目录 /mnt/data, /mnt/softwares,并给hadoop用户赋予这些目录的写权限。

mkdir -p /mnt/softwares /mnt/data/zookeeper
chmod -R 775 /mnt/data /mnt/softwares

第二步,复制已安装的 zookeeper 文件

scp -r /mnt/softwares/zookeeper-3.4.12 im-test-hadoop02:/mnt/softwares/

或则复制安装包,解压之后再覆盖配置文件

scp /mnt/softs/zookeeper-3.4.12.tar.gz im-test-hadoop03:/mnt/softwares/

解压

[root@im-test-hadoop03 softwares]# tar zxf zookeeper-3.4.12.tar.gz

覆盖配置文件

scp /mnt/softwares/zookeeper-3.4.12/conf/zoo.cfg im-test-hadoop03:/mnt/softwares/zookeeper-3.4.12/conf/

创建 myid 文件并写入 server id


可能用到的操作命令

# 修改文件所属用户和用户组
chown -R hadoop:adminuser /mnt/data
# 修改文件权限
chmod -R 775 /mnt/data /mnt/softwares
# 替换文件内容
echo 3 > /mnt/data/zookeeper/myid

4 启动 zookeeper

4.1 配置 PATH 环境变量

将 zookeeper的bin目录添加到 PATH 环境变量中
创建文件 /etc/profile.d/zookeeper.path.sh

export PATH=$PATH:/mnt/softwares/zookeeper-3.4.12/bin

使上面的文件生效

source /etc/profile.d/zookeeper.path.sh

4.2 启动 zookeeper 服务

在集群所有节点上执行自动命令

# 前台启动
zkServer.sh start-foreground
# 后台启动
zkServer.sh start

后天启动日志默认在 ./zookeeper.out.

查看启动状态

[root@im-test-hadoop01 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /mnt/softwares/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@im-test-hadoop02 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /mnt/softwares/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@im-test-hadoop03 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /mnt/softwares/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader

至此,zookeeper 安装完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章