一、集群部署规划
环境Linux+centos8
注意:NameNode和SecondaryNameNode不要安装在同一台服务器
注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置
因为环境不允许,所以有点重叠的部署组件
主机名 | namenode | datanode | JobHistoryServer | Resourcemanager | NodeManager | ZK | JournalNode | ZKFC |
---|---|---|---|---|---|---|---|---|
master | √ | √ | √ | √ | √ | |||
salve1 | √ | √ | √ | √ | √ | |||
salve2 | √ | √ | √ | √ | √ | |||
salve3 | √ | √ | ||||||
salve4 | √ | √ |
二、zookeeper安装部署以及脚本使用说明
2.0 将zookeeper安装包到/opt/software
[appview@master ~]$ cd /opt/software/ [appview@master software]$ [appview@master software]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/moudle/
2.1配置服务器编号
[appview@master software]$ cd /opt/moudle/zookeeper-3.7.1/ #### 创建zData目录 [appview@master software]$ mkdir zData [appview@master zData]$ vim myid ###### 添加 1 如下 [appview@master zData]$ cat myid 1 [appview@master zData]$
2.2配置zoo.cfg文件
[appview@master conf]$ pwd /opt/moudle/zookeeper-3.7.1/conf [appview@master conf]$ ll 总用量 12 -rw-r--r-- 1 appview appview 535 5月 7 2022 configuration.xsl -rw-r--r-- 1 appview appview 3435 5月 7 2022 log4j.properties -rw-rw-r-- 1 appview appview 1246 3月 29 08:45 zoo_sample.cfg [appview@master conf]$ [appview@master conf]$ mv zoo_sample.cfg zoo.cfg [appview@master conf]$ vim zoo.cfg
########## 修改数据路径 dataDir=/opt/moudle/zookeeper-3.7.1/zData ########## 添加以下内容 #######################cluster########################## server.1=master:2888:3888 server.2=salve1:2888:3888 server.3=salve2:2888:3888
2.3分发安装包
[appview@master conf]$ xsync-1-3 /opt/moudle/zookeeper-3.7.1
修改slave1、salve2路径/opt/moudle/zookeeper-3.7.1/zData/myid,分别改为对应的2、3
2.4添加环境变量
[appview@master software]$ vim ~/.bashrc
添加以下内容
#ZK_HOME export ZK_HOME=/opt/moudle/zookeeper-3.7.1 export PATH=$PATH:$ZK_HOME/bin
2.5 一键启动zookeeper脚本
[appview@master bin]$ vim zk.sh
脚本内容如下:
#!/bin/bash case $1 in "start"){ for i in master salve1 salve2 do echo --------zookeeper-3.7.1 $i ----------------- ssh $i "/opt/moudle/zookeeper-3.7.1/bin/zkServer.sh start" done };; "stop"){ for i in master salve1 salve2 do echo --------zookeeper-3.7.1 $i ----------------- ssh $i "/opt/moudle/zookeeper-3.7.1/bin/zkServer.sh stop" done };; "status"){ for i in master salve1 salve2 do echo --------zookeeper-3.7.1 $i ----------------- ssh $i "/opt/moudle/zookeeper-3.7.1/bin/zkServer.sh status" done };; esac
启动zookeeper服务
#####启动 [appview@master bin]$ zk.sh start #####停止 [appview@master bin]$ zk.sh stop #####状态 [appview@master bin]$ zk.sh status
2.6 脚本说明以及使用
rsync是一个强大的文件同步工具,可以在远程或本地之间同步文件和目录,并且在同步时可以实现增量传输,只传输变更的部分,从而节约带宽和时间
### 基本格式 rsync [选项] 源目录/文件 -a 归档模式(保留目录机构及权限) -v 显示详细输出信息 -r 递归复制整个目录 -u 仅在源文件比目标文件新或者不存在时进行复制 -z 传输时压缩文件 -e 指定远程shell程序 --delete 删除目标目录中不存在于源文件中的文件 --exclude = PATTERN:排除匹配指定模式的文件或目录
在家目录下创建bin目标,在里面放脚本可以在任意地方调用
分发脚本xsync如下
[appview@master ~]$ cd bin/ [appview@master bin]$ vim xsync #### 内容如下,根据自己需要分发的几个节点进行修改 #!/bin/bash # 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi # 遍历集群所有机器 for host in master salve1 salve2 salve3 salve4 do echo ================ $host ========================== # 遍历所有目录,挨个发送 for file in $@ do # 判断文件是否存在 if [ -e $file ] then # 获取父目录 pdir=$(cd -P $(dirname $file); pwd) # 获取当前文件的名称 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file does not exists!!! fi done done
xcall脚本如下
#!/bin/bash for host in master salve1 salve2 salve3 salve4 do echo ----------- $host