高可用集群启动时,需要分别在每个节点上都执行zkServer.sh start启动zookeeper,这个过程比较麻烦,并且当我们节点增多时,这个过程无疑不增加了我们的工作量,因此我们可以写一个一键启动所有节点zookeeper的脚本
- #!/bin/bash
-
- # 定义节点的主机名或 IP 地址
- node1="hadoop01"
- node2="hadoop02"
- node3="hadoop03"
-
- # 定义 ZooKeeper 的安装路径
- zk_home="/opt/programs/apache-zookeeper-3.9.0-bin"
-
-
- # 启动 ZooKeeper
- start_zookeeper() {
- echo "Starting ZooKeeper..."
-
- # 在每个节点上启动 ZooKeeper 服务器
- ssh -t $node1 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh start"
- ssh -t $node2 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh start"
- ssh -t $node3 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh start"
-
- echo "ZooKeeper started successfully."
- }
-
- # 执行命令
- start_zookeeper
-
-
- exit 0
脚本中的 start_zookeeper 函数会在每个节点上启动 ZooKeeper 服务器。通过 SSH 连接到每个节点,并在每个节点上运行 zkServer.sh start 命令来启动 ZooKeeper。
一键关闭所有zookeeper的脚本即将该脚本中的zsServer.sh start改为stop即可。
如果要启动zookeeper并且也启动集群,那么可以在改脚本中接着加入启动HDFS和YARN的语句,如下所示:
- #!/bin/bash
-
- # 定义节点的主机名或 IP 地址
- node1="hadoop01"
- node2="hadoop02"
- node3="hadoop03"
-
- # 定义 ZooKeeper 的安装路径
- zk_home="/opt/programs/apache-zookeeper-3.9.0-bin"
- # 定义 jdk 的安装路径
- JAVA_HOME=/opt/programs/jdk1.8.0_371
- PATH=$JAVA_HOME/bin:$PATH
-
- # 启动 ZooKeeper
- start_zookeeper() {
- echo "Starting ZooKeeper..."
-
- # 在每个节点上启动 ZooKeeper 服务器
- ssh -t $node1 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh start"
- ssh -t $node2 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh start"
- ssh -t $node3 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh start"
-
- echo "ZooKeeper started successfully."
- }
-
- # 执行命令
- start_zookeeper
-
- echo "Starting HDFS..."
- start-dfs.sh
- echo "HDFS started successfully"
-
- echo "Starting Yarn..."
- start-yarn.sh
- echo "Yarn started successfully"
-
- exit 0
注:若要改写为一键关闭的脚本不能直接改start-stop,需要严格按照先关闭YARN,接着关闭HDFS和zookeeper的顺序进行!
脚本如下:
- #!/bin/bash
-
- # 定义节点的主机名或 IP 地址
- node1="hadoop01"
- node2="hadoop02"
- node3="hadoop03"
-
- # 定义 ZooKeeper 的安装路径
- zk_home="/opt/programs/apache-zookeeper-3.9.0-bin"
- # 定义 jdk 的安装路径
- JAVA_HOME=/opt/programs/jdk1.8.0_371
- PATH=$JAVA_HOME/bin:$PATH
-
- # 启动 ZooKeeper
- stop_zookeeper() {
- echo "Stopping ZooKeeper..."
-
- # 在每个节点上启动 ZooKeeper 服务器
- ssh -t $node1 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh stop"
- ssh -t $node2 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh stop"
- ssh -t $node3 "export JAVA_HOME=$JAVA_HOME; $zk_home/bin/zkServer.sh stop"
-
- echo "ZooKeeper stopped successfully."
- }
-
- # 执行命令
-
- echo "Stopping Yarn..."
- stop-yarn.sh
- echo "Yarn stopped successfully"
-
- echo "Stopping HDFS..."
- stop-dfs.sh
- echo "HDFS stopped successfully"
-
- stop_zookeeper
-
- exit 0
chmod 777 +文件名