0.20.0分布式集群配置

Hadoop集群的安装和配置,主要分为两个部分:一部分是主机环境配置,主要是指Hadoop集群所依赖的操作系统及其相关软件的安装配置,包括操作系统安装、JDK安装配置、主机规划与IP地址映射配置、无密码认证会话配置;另一部分是Hadoop基本配置,主要是指Hadoop集群的各种基本组件的配置,包括HDFS的配置、MapReduce配置。

下面根据上面总结的两个部分进行详细配置实践。在配置之前,先准备一下我们使用的软件,如下所示:

hadoop集群IP:

172.16.0.90   hadoop-1  master ; 172.16.0.91   hadoop-2 slave; 172.16.0.92   hadoop-3  slave ;

172.16.0.93   hadoop-4 slave;

JDK安装配置

直接安装即可,执行如下命令:

cd ~/installation    chmod +x jdk-6u31-linux-x64.bin    ./jdk-6u31-linux-x64.bin  cd ~/installation chmod +x jdk-6u31-linux-x64.bin ./jdk-6u31-linux-x64.bin

JDK配置,需要修改环境变量文件vim etc/profile , 在vim etc/profile文件的最后面增加如下配置行,如下所示:

export Java_HOME=/home/jdk1.6.0_31 export JRE_HOME=/home/jdk1.6.0_31/jre export PATH=$PATH:/home/jdk1.6.0_31/bin export CLASSPATH=./:/home/jdk1.6.0_31/lib:/home/jdk1.6.0_31/jre/lib

最后,使配置生效,并验证:

[root@hadoop-1 ~]# java -version java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1.6.0_31-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

 在每台机器上的配置,都按照上面的步骤进行配置。


主机规划与IP地址映射配置 

集群中分为主结点(Master Node)和从结点(Slave Node)两种结点。我们选择一个主结点,两个从结点进行配置。

主结点IP为172.16.0.90,修改主结点的/etc/hosts(sudo vi /etc/hosts),内容配置如下所示(不需要改动IPV6的配置内容):

127.0.0.1 localhost 172.16.0.90 hadoop-1 172.16.0.91 hadoop-2 172.16.0.92 hadoop-3 172.16.0.93 hadoop-4

还要修改主机名,对应的配置文件为/etc/hostname,修改该配置文件(sudo vi /etc/hostname),内容如下所示:

hadoop-1这里,因为在集群启动以后,hadoop-1需要登录到任意一个从结点上,执行相应的授权操作,所以,hadoop-1的/etc/hosts中要配置上集群中全部从结点的主机名到对应IP地址的映射。

从结点分别为hadoop-2(172.16.0.91)、hadoop-3(172.16.0.92)、hadoop-4(172.16.0.93)。

从结点的配置方式相同。


总结说明

为什么建议使用主机名称,而不直接使用IP地址?

第一,比较直观。通过看主机名称,你就能够知道集群中哪台机器是什么角色。
第二,扩展性好。因为通过/etc/hosts对主机名和IP地址进行了映射,即使IP变了,主机名可以保持不变。在Hadoop安装的时候,需要配置 master和slaves两个文件,如果这两个文件都使用IP的话,试想,一个具有200个结点的集群,因为一次企业的网络规划重新分配网段,导致IP 全部变更,那么这些配置都要进行修改,工作量很大。但是,如果使用主机名的话,Hadoop的配置不需要任何改变,而对于主机名到IP地址的映射配置交给系统管理员去做好了。

无密码认证会话配置

1、基本配置

首先检查,你的ssh是否安装并启动,如果没有则进行安装:

sudo apt-get install openssh-server

在hadoop-1主结点上,生成密钥对:

ssh-keygen -t rsa一路回车下去即可,即可生成公钥(~/.ssh/id_rsa.pub)和私钥(~/.ssh/id_rsa)文件。

添加认证公钥,并设置权限:

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

验证配置,执行如下命令:

hadoop-1 如果不需要输入密码,即可登录hadoop-1(登录本机),说明配置正确。

接着,我们要进行认证公钥的分发传播。


(1)远程拷贝master的公钥到slave-01结点上

执行如下命令:

scp ~/.ssh/id_rsa.pub root@hadoop-2:/home/hadoop/.ssh/id_rsa.pub.master 这时,因为结点之间(master到slave-01)要进行数据交换,需要输入slave-01结点的登录密码(hadoop用户),才能执行文件的远程拷贝。这里输入密码是正常的,不要与结点之间通过ssh进行无密码公钥认证混淆。

注意:分发公钥时,主要修改目标master公钥文件副本名称,以防覆盖掉从结点上已经存在并且正在使用的公钥文件。

在slave-01结点上,将master生成的密钥加入到认证密钥文件:

cat ~/.ssh/id_rsa.pub.master >> ~/.ssh/authorized_keys chmod 644 ~/.ssh/authorized_keys(2)远程拷贝master的公钥到slave-02结点上

类似地,执行如下命令:

scp ~/.ssh/id_rsa.pub hadoop@slave-02:/home/hadoop/.ssh/id_rsa.pub.master

在slave-02结点上,将master生成的密钥加入到认证密钥文件,同样执行命令:

cat ~/.ssh/id_rsa.pub.master >> ~/.ssh/authorized_keys chmod 644 ~/.ssh/authorized_keys

这时,可以验证从master结点分别登录到slave-01和slave-02结点:

ssh slave-01 ssh slave-02

如果不需要输入密码,则配置成功。

2、总结说明

(1)为什么要将master上的公钥分发到集群中各从结点slaves上?

密钥是用来进行安全认证的。在两个结点之间进行认证,主要有两种方式:
一是通过输入密码进行认证,你必须知道对方主机的登录用户名和口令,才能登录到对方主机上进行合法的授权操作;
二是不需要密码就能够认证,这就需要用到密钥,当一个主机A访问另一个主机B时,如果对方主机B的认证密钥配置了A的公钥,那么A访问B是就能够通过配置的A的公钥进行认证,而不需要进行输入密码认证。
Hadoop集群master分发公钥到slaves结点,并且,在各个slaves结点上配置了公钥认证,这时,当master通过ssh登录到 slaves结点上以后,可以执行相应的授权操作,例如,当master要停止整个HDFS集群(namenode、datanode)时,可以在 master上就能直接登录到各个slaves结点上,直接关闭datanode,从而关闭整个集群。这样的话,你就不需要分别登录每个datanode 上,去执行相应的关闭��作。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1aedf8038df5d5c476303fc740003489.html