此篇博客参考:SSH无密码登录-多节点自动化部署SHELL篇。
测试环境:ubuntu12.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
测试信息:
hadoop1@ubuntu:~$ ./generate_ssh_v1 hadoop1 1234
####################################################
generate the rsa public key on ubuntu ...
####################################################
spawn ssh hadoop1@ubuntu
The authenticity of host 'ubuntu (192.168.128.130)' can't be established.
ECDSA key fingerprint is 53:c7:7a:dc:3b:bc:34:00:4a:6d:18:1c:5e:87:e7:e8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ubuntu,192.168.128.130' (ECDSA) to the list of known hosts.
hadoop1@ubuntu's password:
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Mon Sep 23 15:22:03 2013 from ubuntu
ssh-keygen -t rsa -P '' -f /home/hadoop1/.ssh/id_rsa
hadoop1@ubuntu:~$ ssh-keygen -t rsa -P '' -f /home/hadoop1/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /home/hadoop1/.ssh/id_rsa.
Your public key has been saved in /home/hadoop1/.ssh/id_rsa.pub.
The key fingerprint is:
e1:5e:20:9d:4e:11:f8:dc:05:35:08:83:5d:ce:99:ed hadoop1@ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
| +=+o+o |
| o..*.+.. |
| .o*.=.. |
| =oo.. |
| S . E |
| . . |
| . |
| |
| |
+-----------------+
hadoop1@ubuntu:~$ ssh-copy-id -i /home/hadoop1/.ssh/id_rsa.pub ubuntu
hadoop1@ubuntu's password:
Now try logging into the machine, with "ssh 'ubuntu'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
hadoop1@ubuntu:~$
####################################################
copy the namenode's authorized_keys to slaves ...
####################################################
spawn ssh hadoop1@hadoop
The authenticity of host 'hadoop (192.168.128.138)' can't be established.
ECDSA key fingerprint is 10:8f:d1:8e:63:0a:af:1e:fb:d9:a8:bb:9a:39:ab:46.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop,192.168.128.138' (ECDSA) to the list of known hosts.
hadoop1@hadoop's password:
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic i686)
* Documentation: https://help.ubuntu.com/
System information as of Tue Aug 6 20:11:49 CST 2013
System load: 0.1 Processes: 76
Usage of /: 24.8% of 7.12GB Users logged in: 2
Memory usage: 34% IP address for eth0: 192.168.128.138
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
85 packages can be updated.
45 updates are security updates.
Last login: Tue Aug 6 20:11:16 2013 from 192.168.128.130
hadoop1@hadoop:~$ rm -rf /home/hadoop1/.ssh
hadoop1@hadoop:~$ mkdir /home/hadoop1/.ssh
hadoop1@hadoop:~$ spawn scp /home/hadoop1/.ssh/authorized_keys hadoop1@hadoop:/home/hadoop1/.ssh/
hadoop1@hadoop's password:
authorized_keys 100% 396 0.4KB/s 00:00
hadoop1@ubuntu:~$ ssh ubuntu
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Mon Sep 23 16:13:39 2013 from ubuntu
hadoop1@ubuntu:~$ exit
logout
Connection to ubuntu closed.
hadoop1@ubuntu:~$ ssh hadoop
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic i686)
* Documentation: https://help.ubuntu.com/
System information as of Tue Aug 6 20:12:17 CST 2013
System load: 0.12 Processes: 76
Usage of /: 24.8% of 7.12GB Users logged in: 2
Memory usage: 34% IP address for eth0: 192.168.128.138
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
85 packages can be updated.
45 updates are security updates.
Last login: Tue Aug 6 20:11:50 2013 from 192.168.128.130
hadoop1@hadoop:~$ exit
logout
Connection to hadoop closed.
总结:刚开始编写shell的时候连着写 spawn 然后直接敲shell的命令,结果老是expect后面的读不到。。。
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
分享到:
相关推荐
在Hadoop集群中,SSH无密码登录对于分布式任务的自动化执行尤其重要。例如,通过SSH可以在各个节点间分发命令、同步文件或启动/停止Hadoop服务。Hadoop的工具如`hadoop fs`和`hadoop dfsadmin`命令通常依赖于SSH无...
在没有root权限的情况下,普通用户也能配置SSH,实现自动化操作,这对于集群维护和管理尤其方便。本文将详细介绍如何在非root权限下配置Linux Hadoop集群的自动SSH。 首先,理解SSH的基本概念是必要的。SSH是一种...
脚本`install-hadoop.sh`包括了所有上述功能的实现,使用了URL链接下载Java和Hadoop的RPM包和tar.gz文件,然后通过一系列的自动化操作,如解压、配置、传输、格式化等,实现了Hadoop的快速部署。 总的来说,这个...
"Hadoop集群自动安装"是指通过自动化脚本或工具来快速部署和配置Hadoop环境,从而节省手动安装过程中所需的时间和精力。这样的自动化过程对于大规模的Hadoop集群尤其重要,因为它能确保一致性,减少人为错误,并提高...
Shell脚本是一种强大的自动化工具,可以用来执行一系列命令,如配置、安装、启动等操作。在Hadoop集群中,一个完善的自动化脚本可以大大简化安装过程,减少人为错误,提高效率。脚本通常包括以下步骤: 1. **环境...
### Hadoop集群自动化安装手册知识点解析 #### 一、Ambari简介与功能 ##### 1.1 Ambari概述 - **来源**: Apache Ambari项目源自Apache官方,其官方网站为http://ambari.apache.org/。 - **目标**: 通过开发一系列...
在Hadoop环境中,由于通常涉及多个节点之间的交互,如数据复制和任务调度,因此配置SSH免登陆能有效避免频繁输入密码,提高自动化程度。 在Ubuntu 9.10上配置SSH免登陆需要以下步骤: 1. **安装SSH**:首先确保...
SSH(Secure Shell)的设置是实现集群管理自动化的重要手段。通过SSH,集群中的主节点可以无密码登录到从节点,从而在集群中分发作业、管理任务等。这一环节涉及到SSH密钥的生成与分发,以及SSH服务的配置,包括关闭...
"基于麒麟云计算平台的Hadoop集群自动化部署方法"是一个专门针对这个问题的知识点,它涉及到多个技术层面,包括麒麟操作系统、云计算环境以及Hadoop分布式计算框架。下面将详细阐述这个主题的相关内容。 麒麟操作...
在IT行业中,尤其是在分布式系统和大数据处理...利用`hadoop_ssh_auto_login.sh`脚本和`ip_hosts.txt`文件,你可以方便地自动化这个过程,使得集群管理更加高效。对于大规模的Hadoop部署,这样的自动化工具至关重要。
在自动化安装Hadoop以及生成bin文件的过程中,用户需要关注一些关键的配置项,如Java环境变量设置、Hadoop集群的主机名配置、Hadoop相关服务端口配置、以及Hadoop的核心配置文件编辑等。自动化脚本会根据用户的需求...
自动化部署引擎通过定义ConfImp接口类及其派生出的各个子类(如HDFSConf、MapReduceConf等),可以自动完成各组件的配置任务,这大幅降低了新手的门槛,并让有经验的Hadoop开发者能够更多地关注业务逻辑的实现。...
Hadoop的伪分布式模式是在单台机器上模拟出分布式环境的一种配置方式。这种模式下,所有的Hadoop守护进程(如NameNode、DataNode等)都在同一台机器上运行,并通过线程的方式模拟出多节点的效果。虽然称为“伪分布式...
为了实现这一系列操作的自动化,我们可以利用各种运维工具和编程语言,比如Ansible、Saltstack等自动化运维工具,或者使用Shell脚本和Python脚本来编写自动化部署流程。对于复杂的部署场景,我们还可以结合容器化...
在IT行业中,自动化部署是提升效率的关键之一,尤其是在大规模集群管理中。Ansible作为一个流行的开源自动化工具,被广泛用于配置管理、应用部署和任务执行。本篇将详细讲解如何利用Ansible自动安装Hadoop集群。 ...
### Hadoop 2.6 集群配置详解 #### 一、环境配置 ##### 1.1 服务器环境 1. **IP地址配置**:根据实际情况为每台服务器分配唯一的IP地址,例如: - hadoop140 的 IP 地址为 192.168.50.140 - hadoop141 的 IP ...
3. **命令执行**:可以远程执行脚本或命令,这对于自动化Hadoop集群的管理和操作非常有帮助。 ### 安装与配置SSH 在Linux系统中,安装SSH服务通常很简单。对于基于Debian的系统,如Ubuntu,可以通过运行`sudo apt-...
- 在启动Hadoop集群之前,需要对名称节点进行一次性的格式化操作,这将初始化HDFS的元数据。 5. **启动和停止集群** - **启动**:通过执行相应的脚本启动namenode、datanode、jobtracker和tasktracker。 - **...
4. `安装TCL及expect.txt`:TCL(Tool Command Language)和Expect是一个强大的自动化脚本语言,常用于自动化交互式程序,如SSH登录。这里可能是指导如何安装和使用这两个工具的文档。 5. `start.sh`:这通常是一个...
在分布式环境中,SSH无密码登录是实现Hadoop集群自动化管理的关键。以下是基本步骤: 1. **生成SSH密钥对**:在主节点上执行`ssh-keygen`命令生成公钥和私钥。 2. **分发公钥**:将生成的公钥(`id_rsa.pub`)分发至...