一、背景
在学习hadoop的时候,在本地通过VMware搭建了一个hadoop集群,但是由于每天电脑都需要重启,所以虚拟每天都会被关掉,所以想要写一个脚本一键启动虚拟机+hadoop集群
二、实现方案一
- 1、经查阅资料发现,VMware可以通过命令启动(后台启动虚拟机),命令如下:
# 使用vmrun命令(需要找到VMware的工作目录将工作目录加入path里面),命令说明 -T 主机类型,start 启动 并指定虚拟机(可以通过vmrun list 查看正在运行的虚拟机),nogui 不启动VMware的可视化工具(后台运行) vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux123\linux121 的克隆.vmx" nogui
- 2、在主节点上设置开机启动脚本,通过
ping
命令检测每个节点是否启动,当所有节点启动完成后启动集群。
实现脚本
-
1、编写启动虚拟机脚本(运行在window主机上,并设置开机启动,可以使用window计划任务)
编辑 start_vm.bat
@echo off&setlocal enabledelayedexpansion vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux123\linux121.vmx" nogui vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux122\linux122.vmx" nogui vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux122\linux123.vmx" nogui
-
2、编写hadoop集群节点启动脚本(放在namenode节点运行) (并加入开机启动,将脚本添加到/etc/rc.loacl, 并执行
chmod 755 /etc/rc.d/rc.local
)vim start_hadoop.sh
#!/bin/bash # 指定yarn节点的hostname yarn_hostname=linux123 HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2 #检查hadoop集群状态 check_hadoop_status(){ for h in $(cat ${HADOOP_HOME}/etc/hadoop/slaves) do ping -c 1 -w 5 $h if [[ $? != 0 ]];then return 0 fi done start_hadoop_all return 1 } # 启动hadoop start_hadoop_all(){ ${HADOOP_HOME}/sbin/start-all.sh sleep 5 ssh root@$yarn_hostname ${HADOOP_HOME}/sbin/start-yarn.sh } sleep 10 check_hadoop_status if [[ $? == 0 ]];then sleep 60 check_hadoop_status fi
二、实现方案二
- 关机自动挂起所有虚拟机
- 开机自动启动所有挂起的虚拟机
实现脚本
- 编辑关机运行脚本并加入关机策略
@echo off&setlocal enabledelayedexpansion vmrun -T ws suspend "C:\Users\belie\Documents\Virtual Machines\linux123\linux121.vmx" nogui vmrun -T ws suspend "C:\Users\belie\Documents\Virtual Machines\linux122\linux122.vmx" nogui vmrun -T ws suspend "C:\Users\belie\Documents\Virtual Machines\linux122\linux123.vmx" nogui
- 编辑开机启动脚本(同方案一,开机启动)
@echo off&setlocal enabledelayedexpansion vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux123\linux121.vmx" nogui vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux122\linux122.vmx" nogui vmrun -T ws start "C:\Users\belie\Documents\Virtual Machines\linux122\linux123.vmx" nogui