文章目录
软件版本
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 安装完成。