前言:
Hadoop是一个分布式系统基础架构,主要是由HDFS、MapReduce和Hbase组成,分别为Google集群系统GFS、MapReduce、BigTable的开源实现。具有扩容能力强,效率高,成本低,可靠性好等特点。配置前最好熟悉一下Linux常用命令的使用,遇到问题时善于利用收索引擎,本教程的Linux版本选择比较常用的Ubuntu。
一、Hadoop安装
1.首先将hadoop-0.20.2.tar.gz安装包拷贝到虚拟机中,放于/home/xiami/目录下,用tar命令进行解压:
[xiami@dw_mstr ~]$ tar -zvxf hadoop-0.20.2.tar.gz
2.默认的解压路径是在/usr/hadoop-0.20.2下,接着再使用
sudo gedit /etc/profile命令将以下Hadoop的环境变量添加到profile文件中:
export HADOOP_HOME=/usr/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
3.然后用source命令使profile文件立即生效:
PS:JDK与Hadoop的PATH变量可整合为如下:
export PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH
二、Hadoop配置
Hadoop的主要配置都在/usr/hadoop-0.20.2/conf目录下进行:
1.配置HDFS
(1)修改hadoop-env.sh文件
1)在本文件里设置环境变量JAVA_HOME:
export JAVA_HOME=/home/xiami/jdk1.6.0_21
这里写你自己jdk的路径
2)并将变量JAVA_HOME与HADOOP_OPTS前面的注释符“#”去掉,使变量生效:
(2)修改masters文件(只需在NameNode进行)
这个文件存储备master节点的IP或机器名,建议使用机器名,每行一个机器名:
(3)修改slaves文件(只需在NameNode进行)
这个文件存储slave节点的IP或机器名,建议使用机器名,每行一个机器名:
(4)修改core-site.xml文件
/usr/hadoop-0.20.2/conf目录下的core-site.xml文件默认是空的,但/usr/hadoop-0.20.2/src/core目录下有一个缺省的配置文件core-default.xml,可将它复制到conf目录下,重命名成core-site.xml并做适当修改即可。
或者直接在/usr/hadoop-0.20.2/conf目录下空的core-site.xml文件添加以下内容做简单配置也行:
<configuration>
<!--- global properties -->
<property>
<name>hadoop.tmp.dir</name>
/usr/tmp</value>
<description>A base for other temporarydirectories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.137.2:9000</value>
</property>
</configuration>
PS:1.hadoop.tmp.dir指定了所有上传到Hadoop的文件的存放目录,所以要确保这个目录是足够大的;
2.fs.default.name指定NameNode的IP地址和端口号,缺省值是file:///,表示使用本地文件系统,,用于单机非分布式模式。
(5)修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
PS:dfs.replication指定HDFS中每Block被复制的次数,起数据冗余备份的作用。在典型的生产系统中,这个数默认为3,如果不修改,DataNode少于三台就会报错。
2.配置MapReduce
修改mapred-site.xml文件
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.137.2:9001</value>
</property>
</configuration>
PS:mapred.job.tracker指定 JobTracker的IP地址和端口号。
PS:方便起见,可用scp命令把NameNode机器的/usr/hadoop-0.20.2/conf目录拷贝到其他DataNode上,保持同步。
十、Hadoop体验
1. 格式化
配置完Hadoop之后,在启动前要用hadoop namenode -format先对NameNode主机的文件系统进行格式化:
2.启动与停止
格式化后用start-all.sh启动Hadoop,会出现如下界面:
停止Hadoop用命令stop-all.sh
3.查看Hadoop进程
运行Hadoop时,可用jps命令查看进程
(1)NameNode结果为:
(2)DataNode结果为:
4.查看集群状态
运行Hadoop时可用命令hadoop dfs admin –report查看集群的状态:
或者也可以通过web方式查看集群的状态(http://192.168.137.2:50070):
5.体验HDFS
HDFS的使用和普通的Linux命令差不多,只不过各类操作都必须作为hadoop命令的参数,如在hadoop上执行ls操作:
hadoop fs -ls
这条命令相当于Linux下的ls :
6.体验MapReduce
体验MapReduce,可以使用Hadoop自带的WordCount
(1)首先在本地磁盘建立wordcount文件夹并在里面新建两个输入文件file1和file2:
(2)用hadoop fs –mkdir input命令在hdfs中建立一个input 目录:
(3)接着把file1和file2拷贝到hdfs中:
(4)进入/usr/hadoop-0.20.2目录并用如下命令
[root@localhost hadoop-0.20.2]# hadoop jar hadoop-0.20.2-examples.jar wordcount input output /usr/tmp
hadoop jar hadoop-0.20.2-examples.jar wordcount input output运行wordcount:
(5)再用hadoop fs -ls output查看output的内容,运算结果包含在part-r-00000里面,用如下命令来查看统计结果:
hadoop fs -cat output /part-r-00000
由图中得出统计结果如下:
Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2
明显可知统计结果是正确的。