Ubuntu下Hadoop的安装与配置
一、安装
1.1 安装ssh
apt-get install ssh
1.2 安装rsync
apt-get install rsync
1.3 安装jdk1.6
方法1:
sudo apt-get install sun-java6-jdk
方法2:
jdk地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u7-downloads-1836413.html
下载:jdk-7u7-linux-i586.tar.gz
下载安装文件名为jdk-6u30-linux-i586.bin,放到/home/Hadoop目录下;
cd /home/Hadoop
运行jdk-6u30-linux-i586.bin
./jdk-6u30-linux-i586.bin
1.4 安装Hadoop
从http://Hadoop.apache.org/core/releases.html 下载最近发布的版本
最好为Hadoop创建一个用户:
比如创建一个group为hadoop user为hadoop的用户以及组
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
解压下载的Hadoop文件,放到/home/hadoop目录下 名字为Hadoop
tar zxf hadoop-1.0.4-bin.tar.gz
二、配置
2.1 配置JDK环境变量
vi /etc/profile 增加下面语句到最后 export JAVA_HOME=/home/app/jdk1.6.0_30 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
一般更改/etc/profile文件后,需要重启机器才能生效。这里介绍一种不用重启使其生效的方法:source /etc/profile
查看java环境变量是否配置成功:java -version
2.2 配置Hadoop
进入Hadoop目录 cd /home/hadoop/Hadoop
修改配置文件,指定JDk安装路径 vi conf/hadoop-env.sh export JAVA_HOME=/home/app/jdk1.6.0_30 修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号.Hadoop.tmp.dir配置为你想要的路径,指定了所有上传到Hadoop的文件的存放目录,所以要确保足够大 vi conf/core-site.xml <configuration>
<property>
<name>Hadoop.tmp.dir</name>
<value>/home/hadoop/Tmp</value>
</property>
<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> 修改Hadoop中HDFS的配置,配置的备份方式默认为3,因为安装的是单机版,所以需要改为1 vi conf/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> 修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口 vi conf/mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> 接下来,启动Hadoop,在启动之前,需要格式化Hadoop的文件系统HDFS,进入Hadoop文件夹,输入下面命令 bin/hadoop namenode -format 然后启动Hadoop,输入命令 bin/start-all.sh 这个命令为所有服务全部启动。 最后,验证Hadoop是否安装成功。打开浏览器,分别输入一下网址: http://localhost:50030 (MapReduce的Web页面) http://lcoalhost:50070 (HDfS的web页面) 如果都能查看,说明安装成功。
Hadoop分别从三个角度将主机划分为两种角色:
第一,划分为master和slave,即主人与奴隶
。
第二,从HDFS的角度,将主机划分为namenode和datanode(在分布式文件系统中,目录的管理很重要,管理目录的就相当于主人,而namenode就是目录管理者)。
第三,从MapReduce的角度,将主机划分为JobTracker和TaskTracker(一个job经常被划分为多个task,从这个角度不难理解它们之间的关系)。
2.3 Hadoop集群配置
三台实体机子做实验,一台做NameNode,JobTracker,另外两台做DataNode,TaskTracker。
本教程里就用的三台机子做演示。
station1 192.168.128.11 NameNode
station2 192.168.128.22 DataNode
station3 192.168.128.33 DataNode
1)按照上述方法在NameNode上进行配置
2)将NameNode上拷贝完整的hadoop到DataNode上
3)配置NameNode上的conf/masters和conf/slaves
masters:
192.168.128.11
slaves:
192.168.128.22
192.168.128.33
运行hadoop
1)格式化文件系统
[cuijj@station1 hadoop-0.20.2]$ hadoop namenode -format
2)启动Hadoop
[cuijj@station1 hadoop-0.20.2]$ bin/start-all.sh
3)用jps命令查看进程,NameNode上的结果如下:
4)查看集群状态
[cuijj@station1 hadoop-0.20.2]$ hadoop dfsadmin -report
5)用hadoop的web方式查看
[cuijj@station1 hadoop-0.20.2]$ links http://192.168.128.11:50070
8、运行wordcount.java程序
1)先在本地磁盘建立两个文件file01和file02
[cuijj@station1 ~]$ echo "Hello cuijj bye cuijj" > file01
[cuijj@station1 ~]$ echo "Hello Hadoop Goodbye Hadoop" > file02
2)在hdfs中建立一个input目录
[cuijj@station1 ~]$ hadoop dfs -mkdir input
3)将file01和file02拷贝到hdfs的input目录下
[cuijj@station1 ~]$ hadoop dfs -copyFromLocal /home/cuijj/file0* input
4)查看hdfs中有没有input目录
[cuijj@station1 ~]$ hadoop dfs -ls
5)查看input目录下有没有复制成功file01和file02
6)执行wordcount(确保hdfs上没有output目录)
[cuijj@station1 hadoop-0.20.2]$ hadoop jar hadoop-0.20.2-examples.jar wordcount input output
7)运行完成,查看结果
hadoop dfs -cat output/part-r-00000
本教程到此结束,对教程如有疑问,可E-mail联系我,也可到我博客留言。