在CentOS上安装Hadoop

环境:CentOS 6.4, JDK 1.7, Hadoop 1.1.2

1. 用vmware workstation 创建三台虚拟机

2 关闭防火墙

临时关闭防火墙

$ sudo service iptables stop

下次开机后,防火墙还是会启动。

永久关闭防火墙

$ sudo chkconfig iptables off

由于这几台虚拟机是开发机,不是生产环境,因此不必考虑安全性,可以永久关闭防火墙,还能给开发阶段带来很多便利。

3. 修改hostname

这一步看起来貌似不必要,其实是必须的,否则最后运行wordcount等例子时,会出现“Too many fetch-failures”。因为HDFS用hostname而不是IP,来相互之间进行通信(见后面的注意1)。

  1. /etc/sysconfig/network 內的 HOSTNAME 改成 hostname2
  2. hostname命令,临时修改机器名, sudo hostname hostname2

exit命令退出shell,再次登录,命令提示字符串就会变成[dev@hostname2 ~]$

用上述方法,将131改名为master,132改名为slave01,133改名为slave02。

在三台机器的/etc/hosts文件中,添加以下三行内容

192.168.1.131 master
192.168.1.132 slave01
192.168.1.133 slave02

4. 本地模式和伪分布式模式

为了能顺利安装成功,我们先练习在单台机器上安装Hadoop。在单台机器上,可以配置成本地模式(local mode)和伪分布式模式(Pseudo-Distributed Mode),参考官方文档Single Node Setup

将 hadoop-1.1.2-bin.tar.gz 上传到三台机器的 home目录下,然后解压。注意,三台机器hadoop所在目录必须一致,因为master会登陆到slave上执行命令,master认为slave的hadoop路径与自己一样。

4.1 编辑 conf/hadoop-env.sh,设置 JAVA_HOME

cd hadoop-1.1.2
vim conf/hadoop-env.sh

注释掉第8行的JAVA_HOME,设置正确的JDK位置

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64

4.2 测试本地模式是否正常

默认情况下,Hadoop就被配置为本地模式,现在就可以开始测试一下。

$ mkdir input 
$ cp conf/*.xml input 
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 
$ cat output/*

可以看到正常的结果,说明本地模式运行成功了,下面开始配置伪分布式模式。

4.3 配置SSH无密码登陆本机

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

修改sshd的配置文件(需要root权限)

$ sudo vim /etc/ssh/sshd_config

找到以下三行,并去掉注释符”#“

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

修改了配置文件需要重启sshd服务

$ chmod 600 ~/.ssh/authorized_keys

4.4 修改配置文件

conf/core-site.xml:

<configuration>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://localhost:9000</value>
     </property>
</configuration>

conf/hdfs-site.xml:

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
</configuration>

conf/mapred-site.xml:

<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
     </property>
</configuration>

4.5 启动Hadoop,测试伪分布式模式

格式化namenode

$ bin/hadoop namenode -format

启动 Hadoop 后台进程

$ bin/start-all.sh

现在可以用浏览器打开NameNode和JobTracker的web界面了。
NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/

将输入数据拷贝到分布式文件系统中:

$ bin/hadoop fs -put conf input

如果这时出现 SafeModeException 异常,不用担心,等待几分钟即可。因为hadoop刚刚启动时,会进入安全模式进行自检。

运行 Hadoop 自带的例子:

$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'

查看输出文件:

$ bin/hadoop fs -cat output/*

当你做完了后,关闭 Hadoop:

相关推荐