1.实验配置:ubuntu-11.04,hadoop-0.20.2,jdk-1.7.0_04,eclipse及插件hadoop-0.20.2-eclipse-plugin,如下图:
准备工作完毕!
硬件环境
安装分布式可以准备多台电脑,组成计算机集群,这里是用单机模仿分布式集群,所以所需的硬件环境只要一台个人电脑就可以了(多台的配置和一台配置差不多,会一台配置,基本上集群也会配了)。
2.搭建步骤
(1). 安装linux系统已发行的linux系统有多种版本,作者用的是ubuntu-11.04,采用双系统,没有用虚拟机环境,点击wubi,自行安装linux系统。
(2)安装并配置jdk
将jdk放在指定的目录下,作者这里放在/usr/java下
解压:tar –zxvf jdk-7u4-linux-i586.tar.gz
(不熟悉指令的最好先去看书,mv,cp,rm等随便找一本书查一下就可以了)
安装好后开始配置环境变量:
(可以再vi编辑器里也可以在gedit里编辑 gedit /etc/profile)
添加如下语句到/etc/profile 中:
export JAVA_HOME=/usr/java/jdk1.7.0_04
export JRE_HOME=/usr/java/jdk1.7.0_04/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
(注意:如果不能在普通用户下进行各项操作,就切换成root用户,指令为sudo -i)
配置好后检查jdk是否配置成功,方法如下:
(和在windows里是一样的,由于作者在windows下编辑文档,懒得换了,显现如上提示,说明jdk安装成功)
(3) 实现无密码通信
1.下载并安装ssh
$ sudo apt-get install ssh (如果是root直接敲apt-get install ssh)
(你可以在指定目录,我安装在默认目录/root/.ssh)
2. 先实现本机无密码通信
首先生成密钥:$ ssh-keygen -t dsa -P ''
(注:两个单引号,另:按照提示输入密钥保存文件)
$ cd . ssh
再将id_dsa.pub追加到authorized_keys中去:cat id_dsa.pub >> ~/.ssh/authorized_keys
3.检查是否成功
$ ssh localhost如果不需要密码输入,说明OK了,否则重新再弄。。
退出ssh是exit
(4) 关闭防火墙
sudo ufw disable(在配置集群是这一步是必须的,伪分布式不关也没事,可以略过)
(5)安装.hadoop
1. 解压到指定的目录下(作者把他安装在了/usr/local/hadoop):
$ tar –zvxf hadoop-0.20.2.tar.gz
把 Hadoop 的安装路径添加到环/etc/profile 中(方法和配置JDK相同):
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME_WARN_SUPPRESS=1
2. 配置 hadoop(很重要)
hadoop 的主要配置都在 hadoop-0.20.2/conf 下。
(1)在 conf/hadoop-env.sh 中配置 Java 环境(namenode 与 datanode 的配置相同):
$ vi hadoop-env.sh
在弹出的gedit中找到export JAVA_HOME=将你的java_home路径输入:
export JAVA_HOME=/usr/java/jdk1.7.0_04
(2)配置 conf/core-site.xml, conf/hdfs-site.xml 及 conf/mapred-site.xml core-site.xml
在/hadoop/conf下
$ vi conf/core-site.xml
<configuration>
<!--- global properties -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop-0.20.2/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value> #注意:9000是namenode的监听端口
</property>
</configuration>
hdfs-site.xml:( replication 默认为 3,如果不修改,datanode 少于三台就会报错)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value> #注意:9001是jobtracker的监听端口
</property>
</configuration>
(6). 运行hadoop
首先格式化文件系统,进入hadoop文件夹,输入下面的命令:
bin/hadoop namenode -format
启动 Hadoop:$ bin/start-all.sh
用 jps 命令查看进程,NameNode 上的结果如下
3540 TaskTracker
3002 DataNode
3224 SecondaryNameNode
4987 Jps
2829 NameNode
3383 JobTracker
TaskTracker\ DataNode\SecondaryNameNode\ NameNode\JobTracker这5个都出现说明hadoop安装成功,否则如上步骤看哪里有问题
web方式查看:namenode的web访问端口是50070,用web方式访问namenode,在浏览器键入地址:http://localhost:50070,出现如下结果。
而9001也是可以用web方式来访问的,由于namenode和jobtracker是设置在同一台机器上的,网址是http://localhost:50030,出现
二、eclipse之安装配置篇
1.eclipse安装
下载eclipse-SDK-3.6.2-linux-gtk.tar.gz解压安装在usr下,和hadoop-0.21.0都在ysr目录下。从csdn上下载hadoop-0.21.0-eclipse-plugin-3.6.jar,然后拷贝到/eclipse/plugin下。运行eclipse。
2.eclipse配置
打开/usr/eclipse,选择window->Openspective->Other,选择带大象图标的map/reduce,选择OK。选择window->Preferences->Hadoop Map/Reduce,选择OK。选择window->Show View->Other,选中MapReduce Locations,移动到下方的Mapreduce框,编辑localhost,右键“New Hadoop Location”,出现如下:
在前面的hadoop配置中,可知9000是namenode的监听端口,而9001是jobtracker的监听端口,在界面上新建DFS location时候,可以看到Map/Reduce Master,这是jobtracker所在机器及监听端口,设置成:host=10.2.137.238,port=9001,而DFS Master中勾选Use M/R Master Host(是否使用与JobTracker相同的主机?)当然是勾上。端口也就是9000了,host=10.2.137.238,port=9000。
重新打开eclipse,出现
三、wordcount之运行调试篇
Hadoop自带一些例子,这里以最简单的wordcount测试,在hadoop目录下建立input文件夹,
$ mkdir input
$cd input
在文件夹下建2个文件,
$echo “hello world”>text1.txt
$echo “hello hadoop”>text2.txt
(建了2个txt文件,里面写了2句话,一个4个单词)
然后,
$ cd ..
$ hadoop fs –put input in #把input目录及文件上传到hdfs里并改名为in作为输入
$ hadoop fs jar hadoop-0.20.2-examples.jar wordcount in out #调用hadoop提供的java程序完成wordcount并讲结果和日志生成在out目录里
$ hadoop fs –cat out/* #*代表生成的reduce结果文件
最后就可以看到:
hello 2
world 1
hadoop 1