Hadoop配置自动化之一ssh自动化

测试环境:Ubuntu 12.04.2 server 64bit 、expect version 5.45、GNU bash, version 4.2.24(1)-release (x86_64-pc-linux-gnu)

说明:Hadoop自动化配置出来的结果是:整个集群一个namenode、一个secondary、一个JobTracker,且这三个进程在同一个机器上面,datanode和tasktracker在其他slaves机器上面(如果有需要可以修改相应的shell script即可)

hadoop配置自动化怎么做?这个应该涉及到很多方面的内容。假如说这个集群全部是裸机,所有机器共用一个用户名和密码,配置了expect工具,默认在/etc/hosts里面配置了集群所有机器的机器名和ip。那么应该可以按照下面的思路来做:(1)ssh的自动化部署配置;(2)jdk的自动化部署配置;(3)hadoop的自动化配置;

(1)ssh的自动化部署配置的思路用户首先要在namenode节点上面配置一个slaves.host的文件,该文件包含所有集群slaves的机器名,然后运行脚本在namenode上面自动生成id_rsa.pub文件,并且产生authorized_keys授权文件,然后把该文件分发到slaves的集群上面完成ssh的配置;

(2)jdk的配置,jdk主要是把一个jdk.tar.gz包进行解压,然后配置.bashrc文件,然后把.bashrc文件和解压后的jdk.tar.gz文件分发到slaves集群;即可完成对jdk的配置;

(3)hadoop的自动化配置,这个配置要是配置conf文件夹下面的文件,首先下载hadoop的安装包,然后解压修改conf里面的一些常规配置,然后根据namenode节点上面的jdk路径和namenode机器名以及salves机器名配置相应的.xml、.env文件,最后把修改后的hadoop解压包分发到各个slaves即可;

这里首先贴上第一篇ssh的配置shell代码:

!/bin/bash

auto generate ssh key and distribute the authorized_keys to the salves machine

the script should run on the namenode manchine

if [ $# -lt 2 ]; then
cat « HELP
generate_ssh_v1 –generate ssh key for login without typing password;
this script should run on the namenode machine and user should edit the ip-list file

USAGE: ./generate_ssh_v1 user pasaword

EXAMPLE: ./generate_ssh_v1 hadoop1 1234
HELP

    exit 0

fi

user=$1
ip=$HOSTNAME
pass=$2
rm -rf ~/.ssh

echo ''
echo “####################################################”
echo " generate the rsa public key on $HOSTNAME …”
echo “####################################################”

expect -c "
set timeout 3
spawn ssh $user@$ip
expect "yes/no"
send – "yes\r"
expect "password:"
send – "$pass\r"
expect "$"
send "ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa\r"
expect "$"
send "ssh-copy-id -i $HOME/.ssh/id_rsa.pub $HOSTNAME\r"
expect "password"
send – "$pass\r"
expect eof

echo ''
echo “####################################################”
echo " copy the namenode's authorized_keys to slaves …”
echo “####################################################”

for slave in cat slaves.host
do
expect -c "
set timeout 3
spawn ssh $user@$slave
expect "yes/no"
send – "yes\r"
expect "password"
send – "$pass\r"
expect "$"
send "rm -rf $HOME/.ssh\r"
expect "$"
send "mkdir $HOME/.ssh\r"
expect "$"
expect eof

done

for slave in cat slaves.host
do
expect -c "
set timeout 3
spawn scp $HOME/.ssh/authorized_keys $user@$slave:$HOME/.ssh/
expect "password"
send – "$pass\r"
expect eof

done

/etc/hosts :

192.168.128.138 hadoop
192.168.128.130 ubuntu

slaves.host:

hadoop

相关阅读:

shell自动化配置Hadoop配置文件示例 http://www.linuxidc.com/Linux/2013-05/84915.htm

Hadoop配置文件详解、安装及相关操作 http://www.linuxidc.com/Linux/2012-07/66286.htm

基于Hadoop配置文件的MapReduce数据流优化 http://www.linuxidc.com/Linux/2012-03/56686.htm

云计算Hadoop配置 http://www.linuxidc.com/Linux/2011-09/43189.htm

Hadoop配置文件配置项定义 http://www.linuxidc.com/Linux/2011-07/39569.htm

你可能感兴趣的:(Hadoop配置自动化之一ssh自动化)