Hadoop集群的安装和配置,主要分为两个部分:一部分是主机环境配置,主要是指Hadoop集群所依赖的操作系统及其相关软件的安装配置,包括操作系统安装、JDK安装配置、主机规划与IP地址映射配置、无密码认证会话配置;另一部分是Hadoop基本配置,主要是指Hadoop集群的各种基本组件的配置,包括HDFS的配置、MapReduce配置。
下面根据上面总结的两个部分进行详细配置实践。在配置之前,先准备一下我们使用的软件,如下所示:
直接安装即可,执行如下命令:
cd ~/installation chmod +x jdk-6u30-linux-i586.bin ./jdk-6u30-linux-i586.bin
JDK配置,需要修改环境变量文件~/.bashrc(vi ~/.bashrc), 在~/.bashrc文件的最后面增加如下配置行,如下所示:
export Java_HOME=/home/hadoop/installation/jdk1.6.0_30 export CLASSPATH=$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar export PATH=$PATH:$JAVA_HOME/bin
最后,使配置生效,并验证:
. ~/.bashrc echo $JAVA_HOME
在每台机器上的配置,都按照上面的步骤进行配置。主机规划与IP地址映射配置 1、主结点master配置集群中分为主结点(Master Node)和从结点(Slave Node)两种结点。我们选择一个主结点,两个从结点进行配置。
主结点IP为192.168.0.190,修改主结点的/etc/hosts(sudo vi /etc/hosts),内容配置如下所示(不需要改动IPV6的配置内容):
127.0.0.1 localhost 192.168.0.190 master 192.168.0.186 slave-01 192.168.0.183 slave-02 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Ubuntu系统,还要修改主机名,对应的配置文件为/etc/hostname,修改该配置文件(sudo vi /etc/hostname),内容如下所示:
master
这里,因为在集群启动以后,master需要登录到任意一个从结点上,执行相应的授权操作,所以,master的/etc/hosts中要配置上集群中全部从结点的主机名到对应IP地址的映射。
从结点有两个,分别为slave-01(192.168.0.186)、slave-02(192.168.0.183),对从结点的配置方式相同。 2、从结点slave-01配置slave-01结点的/etc/hosts配置,内容如下所示:
127.0.0.1 localhost 192.168.0.190 master 192.168.0.186 slave-01 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
修改192.168.0.186的主机名,对应的配置文件为/etc/hostname,修改该配置文件(sudo vi /etc/hostname),内容如下所示:
slave-01
3、从结点slave-02配置slave-02结点的/etc/hosts配置,内容如下所示:
127.0.0.1 localhost 192.168.0.190 master 192.168.0.183 slave-02 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
修改192.168.0.183的主机名,对应的配置文件为/etc/hostname,修改该配置文件(sudo vi /etc/hostname),内容如下所示:
slave-02
4、总结说明为什么建议使用主机名称,而不直接使用IP地址?
第一,比较直观。通过看主机名称,你就能够知道集群中哪台机器是什么角色。
第二,扩展性好。因为通过/etc/hosts对主机名和IP地址进行了映射,即使IP变了,主机名可以保持不变。在Hadoop安装的时候,需要配置master和slaves两个文件,如果这两个文件都使用IP的话,试想,一个具有200个结点的集群,因为一次企业的网络规划重新分配网段,导致IP全部变更,那么这些配置都要进行修改,工作量很大。但是,如果使用主机名的话,Hadoop的配置不需要任何改变,而对于主机名到IP地址的映射配置交给系统管理员去做好了。