天天看点

hadoop集群环境的搭建

       今天终于把hadoop集群环境给搭建起来了,能够运行单词统计的示例程序了。

集群信息如下:

主机名

hadoop角色

hadoop jps命令结果

hadoop用户

<a></a>

hadoop安装目录

master

slaves

namenode

datanode

jobtracker

tasktracker

secondarynamenode

创建相同的用户的组名:hadoop。

安装hadoop-0.20.2时使用hadoop用户,并且hadoop的文件夹归属也是hadoop:hadoop

/opt/hadoop

slave1

slave2

  注:master即使master又是slave.

搭建步骤如下:

  一、首先是搞好master

  1、创建用户组

    groupadd hadoop  添加一个组

    useradd hadoop -g hadoop  添加用户

  2、jdk的安装

    这里安装的版本是jdk-7u9-linux-i586.tar.gz ,使用 tar

-zsvf jdk-7u9-linux-i586.tar.gz  -c /opt/ 

命令将其解压到/opt目录下,并将解压后的文件夹jdk-7u9-linux-i586改名为java.

    jdk安装好就要配置环境变量了,使用vi /etc/profile命令编辑添加如下内容:

    export java_home=/opt/java/jdk

exprot path=$java_home/bin:$path

    配置好之后要用命令source /etc/profile使配置文件生效,这样jdk就安装完毕了。安装完之后不要忘了将所有者设置为hadoop。

使用命令chown -r hadoop:hadoop java/

  3.hadoop的安装

    hadoop的版本是hadoop-0.20.2.tar.gz,也把它解压到/opt目录下面,改名为hadoop。

    hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:

    export hadoop_home=/opt/hadoop

    export path=$hadoop_home/bin:$path

    同样也要执行source /etc/profile使配置文件生效,然后执行命令使用命令chown -r hadoop:hadoop hadoop/将其所有者改为hadoop

  4、修改地址解析文件/etc/hosts,加入

    192.168.137.110 master

    192.168.137.111 slave1

    192.168.137.112 slave2

  5、修改hadoop的配置文件

  首先切换到hadoop用户,su hadoop

  ①修改hadoop目录下的conf/hadoop-env.sh文件

    加入java的安装路径export java_home=/opt/java/jdk

  ②把hadoop目录下的conf/core-site.xml文件修改成如下:

  ③把hadoop目录下的conf/ hdfs-site.xml文件修改成如下:

  ④把hadoop目录下的conf/ mapred-site.xml文件修改成如下:

  ⑤把hadoop目录下的conf/ masters文件修改成如下:

    master

  ⑥把hadoop目录下的conf/ slaves文件修改成如下:

    slave1

    slave2

  6、复制虚拟机

      我使用virtual box的克隆功能,将主机master完全克隆两份:slave1和slave2,并修改相应的主机名和ip地址,这样就可以简单地保持hadoop环境基本配置相同。

  7、ssh设置无密码验证

      切换到hadoop用户,在hadoop家目录下面创建.ssh目录,并在master节点上生成密钥对:ssh-keygen -t

rsa -p ‘’ -f

~/.ssh/id_rsa   。然后一直按[enter]键,按默认的选项生成密钥对保存在.ssh/id_rsa文件中。

    然后执行如下命令:

$ ssh ~/.ssh

$ cp id_rsa.pub authorized_keys

$ scp authorized_keys slave1:/home/hadoop/.ssh

$ scp authorized_keys slave2:/home/hadoop/.ssh

    执行远程复制文件的时候记得要把slave1和slave2的防火墙关掉。复制完毕后记得要到slave1和slave2去修改该文件的权限。

从master向slave1和slave2发起ssh连接,第一次登录时需要输入密码,以后就不需要了。

$ ssh slave1

$ ssh slave2

我们只需要配置从master向slaves发起ssh连接不需要密码就可以了,但这样只能在master(即在主机master)启动或关闭hadoop服务。

  8、运行hadoop

    使用hadoop用户,切换到hadoop/bin目录下

    格式化分布式文件系统./hadoop namenode -format

    执行命令./start-all.sh启动hadoop

    在master上执行jps命令查看运行的进程如下:

    在slave1和slave2上执行jps结果如下:

  9、运行单词统计程序

    wordcount是hadoop自带的实例,统计一批文本文件中各单词出现的资料,输出到指定的output目录中,输出目录如果已经存在会报错。

运行结果如下:

  运行该程序一定得注意将slave1和slave2的防火墙给关闭,否则会报异常的。