在CentOS上安装Hadoop

Ubuntu上安装,请参考在Ubuntu上安装Hadoop

环境CentOS 6.4, JDK 1.7, Hadoop 1.1.2

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

首先用vmware workstation 新建一台CentOS 6.4,装好操作系统,选择 Basic Server,安装JDK,参考我的另一篇文章,安装和配置CentOS服务器的详细步骤  。安装好后然后用浅拷贝Create a linked clone 克隆出两台作为slave,这样有了三台虚拟机。启动三台机器,假设IP分别为192.168.1.131, 192.168.1.132, 192.168.1.133, 131做为master 和 SecondaryNameNode, 身兼两职, 132和133为 slaves。

2 关闭防火墙

临时关闭防火墙

$ sudo service iptables stop

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

永久关闭防火墙

$ sudo chkconfig iptables off

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

3. 修改hostname

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

在CentOS上修改hostname,包含两个步骤(假设将hostname1改为hostname2,参考这里 (),但不需要第一步):

将 /etc/sysconfig/network 內的 HOSTNAME 改成 hostname2

用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服务

sudo service sshd restart

修改 authorized_keys 文件的权限,否则ssh登陆的时候还是需要密码。权限的设置非常重要,因为不安全的设置,会让你不能使用RSA功能,参考

$ 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 - :50070/
JobTracker - :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:

$ bin/stop-all.sh

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

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