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

2019-03-28 12:53|来源: 网络

测试环境: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

相关问答

更多
  • 办公自动化培训班相对来说只要是培训学校都有这课,但教的怎么样就各不相同。但也是自己用不用心的成份,这里的办公自动化基本上指的是初级培训。要想做些大的工作还是深入的学习office软件
  • 通俗地说,自动化就是用机器设备或系统代替人完成某种生产任务,或者代替人实现某种过程,或代替人进行某种事物管理工作。严格地说,自动化则是指在没有人的直接参与下,机器设备或生产管理过程通过自动检测、 信息处理、 分析判断自动地实现预期的操作或某种过程。自动化技术包括生产控制自动化和经营管理自动化两个方面,二者相互联系、 相互渗透、 相互促进。
  • 瞎扯,声学所立足国家战略需求,项目多多,好着呢,说没落是胡扯
  • 就是计算机冶炼,以转炉为例,在定好所炼的钢种和入炉原料后,就全部交给计算机了,吹炼时间、炉料加入量、装入量等参数全由计算机控制,冶金自动化可以提高一次出钢率和减少工人劳动强度。
  • 在这种研究机构工作,毕业后可以继续读博,也可以找工作。 如果成绩优秀,可以直接连博,不用考。 如果工作,可以去公司,也可以留校(好的研究所一般能解决北京户口) 祝科研顺利!
  • 软件自动化测试的学习,根据松勤公开课里面讲述,大体步骤有: 1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习Web基础(HTML,HTTP,CSS,DOM,Javascript)或者 学习Winform -> 4. 学习自动化测试工具 ->5. 学习自动化测试框架 -> 6. 实现自动化测试用例 -> 7. 开发自动化测试工具 ->8. 开发自动化测试框架。希望对你有帮助。
  • 软件测试包括 黑盒测试、白盒测试、还有自动测试 黑盒测试主要是对成品进行表面的测试不接代码,比如功能测试、性能测试、安装测试、文档测试、界面测试、易用性测试、等等 白盒测试是在代码级的测试,主要是单元测试、多少有点集成测试和功能测试 自动测试主要是对软件的性能进行测试,这些都是手动无法进行的测试,一般BS结构的居多 希望可以帮到你 我QQ527127601 欢迎讨论
  • APP 自动化测试[2023-09-03]

    1、IOS的话用instruments,这个工具是mac系统自带的,语言为js脚本语言。 2、android目前做功能自动化的话主要是还是uiautomator,不过要求android版本17以上, 3、框架的话可以学习下淘宝的自动化测试框架; 4、建议先学习自动化测试的原理,然后弄明白为什么要做自动化测试、它能做什么、谁来使用它、目标是什么以及它能带来什么价值; 5、关于android版本的问题,之前有讲到需要17以上的版本,没有什么公司会一个版本一个app的,一般都是做兼容,楼主应该更多的关注抽取什么样 ...
  • 如果键不存在,或者地图nil ,则Go贴图将返回该类型的零值 https://play.golang.org/p/sBEiXGfC1c var sliceMap map[string][]string // slice is a nil []string slice := sliceMap["does not exist"] var stringMap map[string]string // s is an empty string s := stringMap["does not exist"] ...
  • 找到解决方案..执行以下脚本 #!/usr/bin/expect spawn ssh -q user@hostname expect "assword" send "alpine\r" interact 奇迹般有效!! :) Found the solution .. Execute the following script #!/usr/bin/expect spawn ssh -q user@hostname expect "assword" send "alpine\r" interact Wor ...