开机启动hadoop集群(虚拟机)

一、背景

在学习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
    

你可能感兴趣的:(Hadoop,vmware,linux,hadoop)