Ubuntu 13.04上搭建Hadoop环境
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置
搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建)
1. 网络设置
禁用防火墙
service iptables stop
禁用IPv6
打开/etc/modprobe.d/dist.conf,添加:
alias net-pf-10 off
alias ipv6 off
重新系统之后,可以通过命令:
lsmod|grep ipv6
查看ipv6模块是否已经不再加载
2. 安装与配置
2.1 安装前的准备
在安装hadoop前需要安装ssh,配置各节点间的基于密钥的免密码登录,安装jdk1.7并配置JAVA_HOME,关于这些操作请参考其他文档,本文不做赘述,只给出/etc/profile中关于JAVA_HOME和HADOOP_HOME的配置参考:
JAVA_HOME=/usr/java/jdk1.7.0_51
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME HADOOP_HOME PATH
注:为了方便起见,我们将$HADOOP_HOME/sbin也加入到了PATH中,同时为了在输入命令时避免同名cmd文件的干扰,可以使用rm -f $HADOOP_HOME/bin/*.cmd;rm -f $HADOOP_HOME/sbin/*.cmd;删除cmd文件。
2.2 配置必要的环境变量
本文安装基于这样一个约定或者说偏好:安装程序位于/usr/local(或者/opt),生成的文件和相关数据文件集中放置于/var/hadoop,将发行包解压至/usr/local(或者/opt)后,分别编辑${HADOOP_HOME}/etc/hadoop/hadoop-env.sh和${HADOOP_HOME}/etc/hadoop/yarn-env.sh,在两个文件中找到并修改或者是添加下列环境变量:
export JAVA_HOME=/your/java/home
export HADOOP_LOG_DIR=/var/hadoop/logs
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
上述环境变量的配置都不是必须的,对于第一项配置原文件的写法是export JAVA_HOME=${JAVA_HOME},但在集群环境下启动时可能会报JAVA_HOME is not set and could not be found错误,从该项的注释上我们了解到,在集群环境下即使各结点都正确地配置了JAVA_HOME,这里最好还是显示地重新声明一遍JAVA_HOME.第二项配置是指定log的存放目录,默认位置是安装目录下的logs文件夹,按前文约定,本次安装将log文件置于/var/hadoop/logs下。对第三项和第四顶配置要视情况添加,如果出现4.2节所描述的问题则这两项是必须的!
2.3 配置${HADOOP_HOME}/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://YOUR-NAMENODE:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
</property>
</configuration>
对于一个新集群来说,唯一必须修改的项是:fs.defaultFS,该项指明了文件系统的访问入口,实际上是告知所有的datanode它们的namenode是哪一个从而建立起namenode与各datanode之间的通信。
除此之外,按照前文约定,我们把hadoop.tmp.dir设置为/var/hadoop。观察core-default.xml我们可以发现,在所有涉及目录的配置项上,默认都是在${hadoop.tmp.dir}之下建立子文件夹,所以本次安装我们只简单地将hadoop.tmp.dir的原默认值/tmp/hadoop-${user.name}改为/var/hadoop,将所有hadoop生成和使用的文件集中/var/hadoop下,避免与/tmp目录下若干其他文件混杂在一起。