实验机器:
namenode: 192.168.120.63 - centos5
datanode: 192.168.120.64 -centos5
datanode: 192.168.120.65 -centos5
配置目标:
63机器作为namenode, secondarynamenode
64和65机器作为datanode和tasknode
每台机器使用hadoop账户来管理和运行hadoop
配置步骤:
1. 准备文件,包括 jdk 和 hadoop
jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk6u37-downloads-1859587.html,下载如jdk-6u13-linux-i586.bin
hadoop下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/ 或者当前更高版本
这里jdk使用:jdk1.6.0_13
hadoop使用:hadoop-1.0.3
2.安装jdk
以root登录三个机器,执行jdk-6u13-linux-i586.bin,会得到一个jdk文件夹,将其放入预定位置(如/usr/program/jdk/)下
将JAVA_HOME添加到/etc/profile文件下
[root:]#vi /etc/profile
添加如下内容
#add by Jim for jdk
#set java envrionment
export JAVA_HOME=/usr/program/jdk/jdk1.6.0_13
export JRE_HOME=/usr/program/jdk/jdk1.6.0_13/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
3. 在/etc/hosts文件中为三台机器添加名称映射
192.168.120.63 hadoop.master
192.168.120.64 hadoop.slave.a
192.168.120.65 hadoop.slave.b
4. 安装hadooop
4.1 添加hadoop账户
[root]# useradd -m hadoop
[root]# passwd hadoop
如果是ubuntu, 最好使用adduser添加,因为useradd貌似默认配置不太好
4.2 将下载的hadoop-1.0.3.tar.gz解压到hadoop家目录下, 并修改权限
[root]# tar -xzf hadoop-1.0.3.tar.gz -C /home/hadoop/
[root]# chown -R hadoop:hadoop /home/hadoop/hadoop-1.0.3
4.3 配置hadoop, 配置文件在/home/hadoop/hadoop-1.0.3/conf/目录下
4.3.1在hadoop-env.sh文件中添加JAVA_HOME
#added by Jim for JDK_HOME
export JAVA_HOME=/usr/program/jdk/jdk1.6.0_13
4.3.2在core-site.xml文件中添加配置信息
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop.master:50091/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadooptmp</value>
</property>
</configuration>
其中fs.default.name为namenode的交互端口,注意不要使用已经占用的端口就好
hadoop.tmp.dir是用来存储其他临时目录的根目录
4.3.3在hdfs-site.xml文件中添加配置信息
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.http.address</name>
<value>hadoop.master:50070</value>
</property>
</configuration>
dfs.name.dir:存贮在本地的名字节点数据镜象的目录,作为名字节点的冗余备份
dfs.data.dir:datanode存储数据的根目录
dfs.replication:冗余数量,备份的数据量
dfs.http.address:namenode的http协议访问地址与端口
4.3.4在mapred-site.xml文件中添加配置信息
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop.master:50092</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/tmp/hadoop/mapred/system</value>
</property>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
</configuration>
mapred.job.tracker:jobTracker的交互端口
mapred.local.dir: map中间数据存放位置
mapred.system.dir: mapred控制文件存放位置
mapred.compress.map.output: 是否压缩输出
4.3.5在master文件中写入hadoop namenode节点
hadoop.master
4.3.6在slaves文件中写入hadoop datanode数据节点
hadoop.slave.a
hadoop.slave.b
4.3.7配置完毕,将/home/hadoop/hadoop-1.0.3拷贝到其他站点
scp -r /home/hadoop/hadoop-1.0.3/ hadoop@hadoop.slave.a:/home/hadoop/
scp -r /home/hadoop/hadoop-1.0.3/ hadoop@hadoop.slave.b:/home/hadoop/
5.格式化hadoop,在hadoop.master站点上执行
hadoop namenode -format
6.启动关闭hadoop,显示hdfs状态等
[hadoop]$ start-all.sh#由于已经将hadoop-bin目录加入path路径,应当可以直接访问
[hadoop]$ stop-all.sh
[hadoop]$ hadoop dfsadmin -report