zookeeper集群配置

注意事项

  1. 需要注意每一步执行的顺序,例如如果在生成了ssh密钥后修改了主机名,则需要重新在生成密钥,还有许多类似的细节需要注意,不然会做出很多重复无用的工作。
  2. 注意权限问题大部分操作都需要加sudo,但是sudo也只是获取root的部分权限,😂😂一开始切换到root用户就行了,不需要每个命令加sudo,切换su root如果出现其他权限问题的话,只能自行百度了。
  3. 虚拟机真的很容易崩(可能是因为我穷的原因。。。),如果出现问题一定要耐心耐心,搜一搜,等一等,多试试总是能解决的,毕竟我这个小集群也配了四五天,每天都有新问题呢。。。。头有点秃。。。

下面是完整步骤。。

1. 安装虚拟机

本篇博客用的是VMWare和CentOS7

在这里插入图片描述

开启虚拟机

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1579666446811

开始安装。。。等很久

设置root密码

在这里插入图片描述

在这里插入图片描述

2. 复制虚拟机

在创建了一个虚拟机后,找到存放地址,直接将虚拟机复制粘贴即可复制虚拟机
1579143238122

打开文件夹中的.vmx文件即可打开复制后的虚拟机,会跳出一个选项,选择复制虚拟机即可

在这里插入图片描述

在VMware中可以对虚拟机重命名,直接右键可以看到选项

1579143520789
由于是直接复制的虚拟机,所以三个虚拟机的MAC地址是相同的,后面需要对其进行修改

3. 设置IP和MAC地址

首先需要查看不同虚拟机的mac地址,路径为:虚拟机->设置->网络适配器->高级
在这里插入图片描述

点击生成按钮就可以自动生成新的mac地址

3.1 更改mac地址

sudo vim /etc/udev/rules.d/70-persistent-ipoib.rules 

在这里插入图片描述

将文件中的MAC地址更改为虚拟机对应的mac地址即可

3.2 更改ip地址

本篇博客使用的网络连接方式是桥接模式,桥接网络是wlan,因此ip应该与WLAN在一个网段,在cmd中输入ipconfig即可查询本地WLAN的ip及其他网络信息。

在这里插入图片描述

更改配置文件地址为

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 

需要注意的是CentOS6中没有ifcfg-ens33 文件,对应的是ifcfg-eth0文件,因此如果找不到ifcfg-ens33 文件则需要修改ifcfg-eth0文件

在这里插入图片描述

重启网络

service network start

需要ifconfig和ping一下验证网络配置是否好了。

4. 关闭防火墙和SELinux

4.1 关闭防火墙

sudo service iptables stop

报错Failed to stop iptables.service: Unit iptables.service not loaded.

在这里插入图片描述

参考博客https://blog.csdn.net/zhou_438/article/details/86761398 找到的解决方法如下(大概还是CentOS版本问题,如果是7以上可以用上面的命令完成,7以后的需要用下面的命令完成):

systemctl stop firewalld
systemctl disable firewalld.service

CentOS7中关于防火墙的命令有下面这些:

# 查看防火墙状态
firewall-cmd --state

# 停止防火墙
systemctl stop firewalld.service

# 禁止防火墙开机启动
systemctl disable firewalld.service

4.2 关闭selinux

SELinux是Linux中的一种安全子系统,在文件权限外增加了对进程的限制,进程只能在进程允许的范围内操作资源。如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux 。

SELinux的工作模式:

  • enforcing 强制模式
  • permissive 宽容模式
  • disabled 关闭

修改配置文件

# 修改selinux的配置文件
sudo vim /etc/selinux/config

将工作模型从强制模式改为关闭

在这里插入图片描述

5. 虚拟机免密登陆

Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦

免密登陆利用SSH密钥:

  • 先在B节点 配置 A节点 的公钥
  • A节点请求B节点 要求登录
  • B节点使用A节点的公钥, 加密一段随机文本
  • B节点使用 A节点的公钥, 加密一段随机文本
  • B节点 验证文本是否正确

首先需要修改主机名,配置文件路径如下,将主机名修改为自己需要的名称

sudo vim /etc/hostname

修改后可以通过hostnamectl命令查看主机名是否被修改

5.1 生成公钥和私钥

ssh-keygen -t rsa

如果这条命令执行后生成了id_rsa id_rsa.pub两个文件,需要加入授权

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

需要更改.ssh和authorized_keys的权限

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

5.2 复制公钥到同一台机器
给每台虚拟机设置ip和域名映射

sudo vim /etc/host
192.168.88.120 hadoop1
192.168.88.130 hadoop2
192.168.88.140 hadoop3

本博客是以三台虚拟机为例搭建hadoop集群,将hadoop1作为Master,hadoop2和hadoop3分别为Slave1、Slave2

将hadoop1的公钥复制给hadoop2

ssh-copy-id -i zoe@hadoop2

报错ERROR: ssh: Could not resolve hostname hadoop2: Name or service not known

在这里插入图片描述

解决方法:将hadoop2和hadoop3的ip加到hadoop1的etc/hosts中

例如192.168.80.100 hadoop0

成功

在这里插入图片描述

再次确认ssh hadoop2
在这里插入图片描述

6. 安装SecureCRT并连接虚拟机

参考博客https://blog.csdn.net/qq_39052513/article/details/100272502

在这里插入图片描述

7. 安装jdk

通过SecureCRT连接三台虚拟机,SecureCRT可以打开交互窗口同时给三台虚拟机发送命令。View->Command Window->right click->send commands to all sessions

7.1 卸掉自带的java

# grep是查找含java的文件
rpm -qa | grep java

# 把上面搜索到的文件都删除,--nodeps是跳过依赖检查
sudo rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps

7.2 创建安装目录

sudo mkdir -p /export/softwares #软件包存放目录
sudo mkdir -p /export/servers #安装目录

7.3 上传jdk包并解压

使用rz -E从本地上传文件,如果报错,则需要安装lrzsz配置工具。

sudo yum -y install lrzsz

将压缩包放到上面建好的安装目录下

# 将压缩包放到软件包存放目录下
sudo mv jdk-8u141-linux-x64.tar.gz /export/softwares/
#上传jdk到/export/softwares路径下去,并解压
sudo tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/

7.4 配置环境变量

vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH

修改后要让文件生效

source /etc/profile
# 查看Java是否安装
java -version

一个虚拟机安装好后可以直接复制到其他虚拟机中

scp -r jdk1.8.0_141/ hadoop2:/export/services/

8. 安装ZooKeeper

8.1 下载zookeeper压缩包

http://archive.apache.org/dist/zookeeper/

8.2 解压压缩包

使用rz -E从本地上传文件

sudo rz -E

解压文件

sudo tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/

8.3 修改配置文件

第一台服务器修改配置文件

cd /export/servers/zookeeper-3.4.9/conf/
sudo cp zoo_sample.cfg zoo.cfg
sudo mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
sudo vim zoo.cfg

修改配置文件
注意服务器配置不能用主机名要用ip,否则后面可能报错

dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=192.168.88.120:2888:3888
server.2=192.168.88.130:2888:3888
server.3=192.168.88.140:2888:3888

8.4 添加myid配置

将第一台机器上的安装包传给其他两台机器

scp -r /export/servers/zookeeper-3.4.9/ hadoop2:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ hadoop3:/export/servers/

在第一台服务器的/export/servers/zookeeper-3.4.9/zkdatas /这个路径下创建一个文件,文件名为myid ,文件内容为1

sudo sh -c 'echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid'

第二台服务器myid改为2,第三台改为3

sudo sh -c 'echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid'
sudo sh -c 'echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid'

8.5 启动zookeeper服务

三台机器都启动服务

sudo /export/servers/zookeeper-3.4.9/bin/zkServer.sh start

如果报错看zookeeper.out文件,文件在/export/servers/zookeeper-3.4.9/zkdatas/下

刚开始报错nohup: 无法运行命令"java": 没有那个文件或目录这大概是因为之前把自带的jdk删掉了重新下载的,Java能运行也没有用,必须在/export/servers/zookeeper-3.4.9/bin/zkServer.sh下增加JAVA_HOME=/export/servers/jdk1.8.0_141,注意要加在最前面,我刚开始加后面也没有用。
然后又报错。。。。。。
在这里插入图片描述

在配置文件zoo.cfg中添加

quorumListenOnAllIPs=true

查看状态

/export/servers/zookeeper-3.4.9/bin/zkServer.sh status

在这里插入图片描述

发布了87 篇原创文章 · 获赞 32 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章