在2台ubuntu上搭建hadoop
实践环境
Ubuntu 10.04 LTS + jdk1.6 + hadoop-0.20.2 (2 computers)
hostname | IP | usrname | passwowd | use |
hadoop-A | 192.168.2.156 | hadoop | 123456 | NameNode master jobTracker |
hadoop-B | 192.168.2.147 | hadoop | 123456 | DataNode slave taskTracker |
步骤:
1:安装Ubuntu 10.04
不会安装的google一下就OK~
创建用户:两台电脑上创建一个相同的用户
name:hadoop password:123456
修改两台电脑的hostname
步骤如下:
master computer:
1:$sudo hostname hadoop-A
2:$sudo nano /etc/hosts
3:$sudo nano /etc/hostname
4:$sudo reboot
slave computer:
1:$sudo hostname hadoop-A
2:$sudo nano /etc/hosts
3:$sudo nano /etc/hostname
4:$sudo reboot
在master主机的/etc/hosts 中添加机器名和相应的IP:
127.0.01 localhost
192.168.2.156 hadoop-A
192.168.2.147 hadoop-B
2、开启ssh 服务
安装openssh-server:$ sudo apt-get install openssh-server
注意:自动安装openssh-server 时,先要进行sudo apt-get update 操作。
可以在另外的装有Windows的机子上实用 SecureCRT登录到Ubuntu测试
(使用:SSH Secure Shell Client的中文显示是乱码,因为Ubuntu默认编码是utf-8,SSH Secure Shell Client不支持uyf-8,所以用SecureCRT了)
具体怎么配置使用SecureCRT,查看一下网址,或者自己google一下~
http://blog.chinaitlab.com/html/13/292613-163073.html
3、建立ssh 无密码登录
具体查看下面的网页,讲的很详细
http://www.oklinux.cn/html/network/wlaq/20080927/61415.html
4、关闭防火墙
$ sudo ufw disable
注意:这步非常重要。如果不关闭,会出现找不到datanode 问题。
5、安装jdk1.6
1. Add the Canonical Partner Repository to your apt repositories:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner
2. Update the source list
sudo apt-get update
3. Install sun-java6-jdk
sudo apt-get install sun-java6-jdk
4. Select Sun's Java as the default on your machine.
sudo update-java-alternatives -s java-6-sun
5.设置环境变量
sudo vi /etc/environment
在environment中修改,出现如下部分
PATH="......:/usr/lib/jvm/java-6-sun/bin"
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
JAVA_HOME=/usr/lib/jvm/java-6-sun
然后:
source /etc/enviroment
并且注销用户一下~~
6.安装hadoop
下载hadoop-0.20.2.tar.gz
cp到 /home/hadoop 目录下
然后:tar -zxvf hadoop-0.20.2.tar.gz
解压生成: hadoop-0.20.2
把Hadoop 的安装路径添加到环/etc/profile 中:
export HADOOP_HOME=/home/hadoop/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
然后:$source /etc/profile
并且注销用户一下~~
7、配置hadoop
hadoop 的主要配置都在hadoop-0.20.2/conf 下。
(1)在conf/hadoop-env.sh 中配置Java 环境(namenode 与datanode 的配置相同):
$ gedit hadoop-env.sh
$ export JAVA_HOME=/usr/lib/jvm/java-6-sun
(2)配置conf/masters 和conf/slaves 文件:(只在namenode 上配置)
master配置: 192.168.2.156
slave配置: 192.168.2.147
(3)配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml(简单配置,datanode 的配置相同)
##conf/core-site.xm##
<configuration>
<!--- global properties -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.2.156: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>192.168.2.156:9001</value>
</property>
</configuration>
8、运行hadoop
首先格式化文件系统
hadoop@hadoop-A$hadoop namenode –format
启动Hadoop
hadoop@hadoop-A$start-all.sh
然后用jps 命令查看进程
NameNode 上的结果如下:
DataNode 上的结果:
查看集群状态:$ hadoop dfsadmin -report
Hadoop 的web 方式查看:http://192.168.2.156:50070
9、运行wordcount.java 程序
(1)先在本地磁盘建立两个输入文件file01 和file02:
$ echo “Hello World Bye World” > file01
$ echo “Hello Hadoop Goodbye Hadoop” > file02
(2)在hdfs 中建立一个input 目录:$ hadoop fs –mkdir input
(3)将file01 和file02 拷贝到hdfs 中:
$ hadoop fs –copyFromLocal /home/hadoop/file0* input
(4)执行wordcount:
$ hadoop jar hadoop-0.20.2-examples.jar wordcount input output
(5)完成之后,查看结果:
$ hadoop fs -cat output/part-r-00000