创建已经做好基本配置的虚拟机,用来被克隆

网络、必要的软件(jdkhadoop)、chkconfig、用户创建权限设置、rsync脚本

1.            创建standard

1.1              网络配置

1.1.1             cd /etc/udev/rules.d/ ; ls ; 70-persistent-net.rules 是把ip地址同mac进行绑定的文件,因为已经绑定默认的了,

{1}          所以需要删除  rm -f 70-persistent-net.rules  重启VM或网络服务
{2}          重启后
[1] 里面的内容变为:

{3}          也可以不重启,手动修改3
[1] 删除第一行
[2] name改为eth0
[3] 复制ATTR,粘贴到网卡驱动配置中的物理地址中

1.1.2             网卡驱动

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.100.100

NETMASK=255.255.255.0

GATEWAY=192.168.100.2

DNS1=114.114.114.114

DNS2=8.8.8.8

1.1.3             etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.100.100 standard

192.168.100.101 node101

192.168.100.102 node102

192.168.100.103 node103

192.168.100.104 node104

192.168.100.105 node105

192.168.100.106 node106

192.168.100.107 node107

192.168.100.108 node108

192.168.100.109 node109

192.168.100.110 node110

1.1.4             hostname

{1}          /etc/sysconfig/network

1.2              安装jdk并配置环境变量

1.3              安装hadoop

1.3.1             配置环境变量

1.3.2             3envJAVA_HOME

1.3.3             slaves

1.3.4             完全分布式 + HA

1.3.5             历史服务器

1.4              chkconfig

1.5              创建用户并设置sudo

vim /etc/sudoers

1.6              远程分发

1.6.1             scp

{1}          syntax

scp -r 源 目的地

如果和目的地不是本机,用以下形式表示:用户@主机名colon路径

可以在源主机目标主机、第三方执行,只要指定源和目标即可

1.6.2             rsync远程同步工具

{1}          rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
{2}          rsyncscp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
{3}          syntax

rsync

-rvl

$pdir/$fname

$user@hadoop$host:$pdir/$fname

命令

选项参数

要拷贝的文件路径/名称

目的用户@主机:目的路径/名称

[1] 参数

选项

功能

-r

递归

-v

显示复制过程

-l

拷贝符号连接

{4}          脚本

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi

 

#2 获取文件名称

p1=$1

fname=`basename $p1`

echo fname=$fname

 

#3 获取上级目录到绝对路径

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir

 

#4 获取当前用户名称

user=`whoami`

 

#5 循环

for((host=101; host<105; host++)); do

        echo ------------------- node$host --------------

        rsync -rvl $pdir/$fname $user@node$host:$pdir

done

[1] 如果有100个节点,不能每个都手动操作
[2] 在脚本中执行rsync命令,一定不要把文件命名为rsync,会导致死循环
[3] 勿忘设置权限

chmod 777 rrsync

[4] 在哪个路径执行都行,因为已经放到usr/local/bin下或者path
[5] 执行时要输入要同步的文件的名称即可,写绝对路径。dirname命令会根据输入的文件名获取文件的路径
[6] 使用

rrsync 要同步的文件的绝对路径