基于Ubuntu 12.04+Hadoop1.2.0 的Hadoop集群搭建

(一) 环境准备

首先准备5台电脑。我这里使用的是OpenStack虚拟出来的五台电脑。每个实例安装的系统是Ubuntu 12.04.2 LTS,虚拟配置如下:

基于Ubuntu 12.04+Hadoop1.2.0 的Hadoop集群搭建 

 

相关阅读:

(二) 修改机器名

打开/etc/hostname文件;

sudo vi/etc/hostname

分别改为hadoop1、hadoop2和hadoop3等等

(三) 域名和ip配置

设置的IP分别是:

192.168.10.1 hadoop1

192.168.10.2 hadoop2

192.168.10.3 hadoop3

192.168.10.4 hadoop4

192.168.10.5 hadoop5

然后使用vi/etc/hosts修改各个主机的/etc/hosts中的内容,将上边的内容编缉进去。注意:

(1)所有节点都需要配置成上述内容。如果不配置,此后的工作将使用IP操作,比较繁琐。扩展性比较差。

(2)需要使用root权限。如果没有root权限,可以使用:sudovi /etc/hosts命令进入编辑。

(四) 创建用户,分配权限

(1)先创建hadoop用户组:sudo addgrouphadoop

(2)然后创建用户hadoop:sudo adduser-ingroup hadoop hadoop

注:

(i)当你没有root权限的时候,所有的命令可以加上sudo前缀。

(ii)在CentOS 和 redhat下直接创建用户就行,会自动生成相关的用户组和相关文件,而ubuntu下直接创建用户,创建的用户没有根目录。

(3)给hadoop用户添加权限,打开/etc/sudoers文件;

sudo vi /etc/sudoers

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。

在root ALL=(ALL:ALL) ALL下添加下面的内容:

hadoop ALL=(ALL:ALL) ALL

注意:

(i)千万不要写错了。这个文件一旦修改错误,后果严重。这里创建的用户名也可以不是hadoop,比如ubuntu等都可以。ubuntu系统会在/home目录下生成一个以用户名命名的文件夹。

(ii)所有虚拟机上,都必须使用相同的用户名。

(iii)如果没有权限修改/etc/sudoers。可以输入sudovisudo 即可,此命令直接修改该文件,按照提示修改保存和推出。

(五) 本机(hadoop1)和子节点(son..)安装ssh服务

主要为ubuntu安装,centos和redhat系统自带。ubuntu下:

sudo apt-get installssh openssh-server

 

(六) 建立ssh无密码登录环境

做这一步之前首先建议所有的机子全部转换为hadoop用户,以防出现权限问题的干扰。

所有机器执行一下操作:

(1)ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

创建ssh-key,这里我们采用rsa方式;

ssh-keygen -t rsa -P ""

(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)

(2)切换到~/.ssh/目录下,然后将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;

cd ~/.ssh

cat id_rsa.pub>> authorized_keys

(3)用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

RSAAuthenticationyes

PubkeyAuthenticationyes

AuthorizedKeysFile %h/.ssh/authorized_keys

设置完之后记得重启SSH服务,才能使刚才设置有效。(centos里的命令:service sshd restart)但这里是ubuntu里。输入命令:

/etc/init.d/sshrestart

退出root登录,使用hadoop普通用户验证是否成功。

ssh localhost

如果无错误提示,本地无密码登录就配置成功!

(七) 配置集群无密码登录

首先配置Slave节点登录MASTER比较方便,即hadoop2~hadoop5实现无密码访问Master节点。

以hadoop2为例子:

(1) 远程复制文件"id_rsa.pub",目标位置是主机hadoop1的用户为"hadoop"的"/home/hadoop/":

scp~/.ssh/id_rsa.pub hadoop@hadoop1:~/

因为并没有建立起无密码连接,所以在连接时,仍然要提示输入输入Hadoop1服务器用户hadoop的密码。为了确保确实已经把文件传过去了,登录Hadoop1查看"/home/hadoop/"下是否存在这个文件。

(2) 把刚复制来的Hadoop2的公钥追加到Hadoop1 的授权文件"authorized_keys"中去。

cat~/id_rsa.pub >> ~/.ssh/authorized_keys

必要的话,使用下面命令进行追加并修改"authorized_keys"文件权限:

chmod 600~/.ssh/authorized_keys

记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉。

rm –r~/id_rsa.pub

(3) 重复上面的步骤把剩余的Slave服务器(hadoop3~hadoop5)进行配置。这样,我们就完成了"配置Slave无密码登录Master".

(4) 用hadoop用户登录到MASTER节点,就是主机hadoop1。输入命令:

scpauthorized_keys hadoop@hadoop2:~/.ssh/

分别修改命令中的hadoop2为hadoop3到hadoop5并执行。此命令是复制主节点authorized_keys到其余各个节点的.ssh目录。

在hadoop1主机,登录其余各个节点。输入命令:

ssh hadoop2

如果登录失败。可能尝试一下几个方法:

a) 删除各个节点的known_hosts,输入命令:rm~/.ssh/known_hosts。再连接看看。

b) 如果出现一下错误提示,注意红色提示。那我们可以按照提示,输入命令,比如:

ssh-keygen -f"/home/ubuntu/.ssh/known_hosts" -R hadoop2

此命令的hadoop2,就是连接目标,如果提示给的是 ip地址,就要输入ip地址。

基于Ubuntu 12.04+Hadoop1.2.0 的Hadoop集群搭建 

c) 其实,只要各个节点曾经连接成功就可以。在hadoop运行过程中,可以使用hadoop-daemon.sh start datanode 等命令动态的将当前节点加入到集群中。

相关推荐