Hadoop单机模式的安装以与执行WordCount程序文件Word文件下载.docx
《Hadoop单机模式的安装以与执行WordCount程序文件Word文件下载.docx》由会员分享,可在线阅读,更多相关《Hadoop单机模式的安装以与执行WordCount程序文件Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
三、实验原理
基于云计算的Hadoop实现。
WordCount
WordCount例子读取文本文件,并统计文件中单词出现的频数。
WordCount对于hadoop的重要性,相当于HelloWorld对于JAVA的重要性。
如果你想学习MapReduce变成模型,那么学习WordCount是一个最好的开始。
输入
输入包含一组文件,文件中含有很多单词
输出
输出是一个文本文件,文件的每一行包含一个单词和这个单词在所有输入文件中出现的次数。
输入样例
input1:
helloworldbyeworld
input2:
hellohadoopbyehadoop
输出样例:
bye2
hadoop2
hello2
world2
四、实验容及步骤
实验容:
一、安装Linux操作系统
二、在Ubuntu下创建Hadoop用户组和用户
三、在Ubuntu下安装JDK
四、修改机器名
五、安装ssh服务
六、建立ssh无密码登录本机
七、安装Hadoop
八、在单机上运行Hadoop
九、Hadoop执行WordCount程序
实验步骤:
一、安装Linux操作系统
在虚拟机上使用镜像安装好Ubantu12.04系统,此处不多做介绍,建议安装的时候修改成中文版,更将有利于接下来的步骤。
这里考虑的是以后涉及到Hadoop应用时,专门用该用户操作。
用户组名和用户名都设为:
hadoop。
可以理解为该hadoop用户是属于一个名为hadoop的用户组,这是linux操作系统的知识,如果不清楚可以查看linux相关的书籍。
1、创建Hadoop用户组,如图
(1)
2、创建Hadoop用户,如图
(2),除了Fullname自己设置以外,其他的都可以直接Enter进入默认设置。
3、给Hadoop用户添加权限,打开/etc/sudoers文件,如图(3)
按回车键后就会打开/etc/sudoers文件了,给Hadoop用户赋予root用户同样的权限。
在root
ALL=(ALL:
ALL)
ALL下添加hadoop
ALL,如图(4)
4、此时就可以重启Ubantu进入新建的hadoop组了,选择的是你新建的hadoop组的Fullname那个用户组,如下图所示,我设置的是hadoop01,所以我重启进入的就是hadoop01.
三、在Ubuntu下安装JDK
选择的是jdk1.6.0_30版本。
安装文件名为jdk-6u30-linux-i586.bin.
1、复制jdk到安装目录
(1)假设jdk安装文件在桌面,我们指定的安装目录是:
/usr/local/java。
可是系统安装后在/usr/local下并没有java目录,这需要我们去创建一个java文件夹,如图(5)
(注:
此时我已经进入了hadoop01了)
(2)切换到桌面下,执行复制,如图(6)
2、安装jdk
(1)切换到root用户下,如图(7)
如果因忘记密码而认证失败,可以先修改root用户的密码,再执行第
(1)步,修改root用户密码如图(8))
(2)运行jdk-6u30-linux-i586.bin,如图(9)
注:
可能此时仍然没有执行权限,那是因为在linux中,文件的默认权限是644,即使是属主用户也没有执行权限,这时我们需要更改其权限,如果你想知道某个文件的权限,可以进入该文件所在的文件夹,执行命令ls–la查看。
这里将jdk-6u30-linux-i586.bin文件的权限改为777,即文件的属主用户,属组用户和其他用户对该文件拥有所有权限,当然不推荐对系统中的文件这样设置权限,因为这样就破坏了linux的安全性。
)
更改jdk-6u30-linux-i586.bin权限,如图(10)
更改权限后再执行第
(2)步,当看到如图(11)情况时,说明你安装成功了。
(3)这时在/usr/local/java目录下就多了一个jdk1.6.0_30文件夹.,可以查看一下,如图(12)
3、配置环境变量
(1)打开/etc/profile文件,如图(13)
(2)添加变量如下:
1.#
/etc/profile:
system-wide
.profile
file
for
the
Bourne
shell
(sh
(1))
2.#
and
compatible
shells
(bash
(1),
ksh
(1),
ash
(1),
...).
3.#set
java
environment
4.
5.export
JAVA_HOME=/usr/local/java/jdk1.6.0_30
6.
7.export
JRE_HOME=/usr/local/java/jdk1.6.0_30/jre
8.
9.export
CLASSPATH=.:
$JAVA_HOME/lib:
$JRE_HOME/lib:
$CLASSPATH
10.
11.export
PATH=$JAVA_HOME/bin:
$JRE_HOME/bin:
$JAVA_HOME:
$PATH
为了以后集群工作的方便,这里建议每台机器的java环境最好一致。
一般更改/etc/profile文件后,需要重启机器才能生效。
这里介绍一种不用重启使其生效的方法,如图(14)
(3)查看java环境变量是否配置成功,如图(15)
四、修改机器名(这一步骤可以有,也可以不需要)
每当Ubuntu安装成功时,我们的机器名都默认为:
ubuntu
,但为了以后集群中能够容易分辨各台服务器,需要给每台机器取个不同的名字。
机器名由
/etc/hostname文件决定。
1、打开/etc/hostname文件,如图(16)
2、回车后就打开/etc/hostname文件了,将/etc/hostname文件中的Ubuntu改为你想取的机器名。
这里我取“s18”。
重启系统后才会生效。
五、安装ssh服务
这里的ssh和三大框架:
spring,struts,hibernate没有什么关系,ssh可以实现远程登录和管理,具体可以参考其他相关资料。
1、安装openssh-server
自动安装openssh-server时,可能会进行不下去,可以先进行如下操作:
如图(17))
更新过程可能会比较长,需要耐心等待。
然后输入如图(18)
此处也是比较慢,需要等待
2、更新的快慢取决于您的网速了,如果中途因为时间过长您中断了更新(Ctrl+z),当您再次更新时,会更新不了,报错为:
“Ubuntu无法锁定管理目录(/var/lib/dpkg/),是否有其他进程占用它?
“需要如下操作,如图(19)
操作完成后继续执行第1步。
这时假设您已经安装好了ssh,您就可以进行第六步了。
六、建立ssh无密码登录本机
ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。
1、创建ssh-key,,这里我们采用rsa方式,如图(20)
回车后会在~/.ssh/下生成两个文件:
id_rsa和id_rsa.pub这两个文件是成对出现的)
2、进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的,如图(21)
完成后就可以无密码登录本机了。
3、登录localhost,如图(22)
(
当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。
)
4、执行退出命令,如图(23)
七、安装Hadoop
我采用的Hadoop版本是从这个中的资源下载中的hadoop-0.20.2.tar.gz
1、假设hadoop-0.20.2.tar.gz在桌面,将它复制到安装目录
/usr/local/下,如图(24)
2、解压hadoop-0.20.2.tar.gz,如图(25)
3、将解压出的文件夹改名为Hadoop,如图(26)
4、将该hadoop文件夹的属主用户设为hadoop,如图(27)
5、打开hadoop/conf/hadoop-env.sh文件,如图(28)
6、配置conf/Hadoop-env.sh(找到#export
JAVA_HOME=...,去掉#,然后加上本机jdk的路径),如图(29)
7、打开conf/core-site.xml文件
编辑如下:
9000最好是手打,避免产生不必要的错误)
8、打开conf/mapred-site.xml文件,编辑如下:
9001最好是手打,避免产生不必要的错误)
9、打开conf/hdfs-site.xml文件,编辑如下:
10、打开conf/masters文件,添加作为secondarynamenode的主机名,作为单机版环境,这里只需填写localhost就Ok了。
11、打开conf/slaves文件,添加作为slave的主机名,一行一个。
作为单机版,这里也只需填写localhost就Ok了
1、进入Hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,如图(30)
当你看到下图时,就说明你的hdfs文件系统格式化成功了。
3、启动bin/start-all.sh,如图(31)
4、检测Hadoop是否启动成功,如图(32)
如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的Hadoop单机
版环境配置好了。
1、首先如果你没打开hadoop,那么就参照第八个步骤的第3个步骤,开启hadoop,用jps验证。
2、首先在"
/usr/local/hadoop"
目录下创建文件夹"
file"
。
3、接着创建两个文本文件file1.txt和file2.txt,使file1.txt容为"
HelloWorld"
,而file2.txt的容为"
HelloHadoop"
这里按cd..回到hadoops18:
~$,按照如图步骤创建2个txt。
4、在HDFS上创建输入文件夹,hdfs路径如红框。
5、上传本地file中文件到集群的input目录下
6、这个步骤不知道为什么原因,但是我在错误的情况下修改的一些地方,建议直接先到第7步验证后再回来看第6步。
(1)
(2)首先查看自己的虚拟机的IP地址,包括之前第四步设置的主机名。
查看IP地址使用命令ifconfig,查看主机名修改使用sudogedit/etc/hostname,路径如下
输入这个修改,增添IP地址,(注:
不知道是不是修改了这些的原因就可以执行程序了)。
(3)前面2个设好后还是不行的话,看看是不是这里没有设置好
7、接下来有2种方法运行wordcount.java,首先介绍第一种
(1)运行WordCount程序
如果提示你output已经存在,那么输入./hadoopdfs–rmroutput删除output文件夹即可,在如下路径中输入
接着重新第
(1)步
(2)运行过程,(注:
该过程可能需要5-10分钟)
(3)查看结果
接下来介绍第二种方法
(1)新建一个目录,方法如下图
(2)输入如下命令,如箭头所示,编译WordCount.java程序
编译完后在/home/admin/WordCount目录会发现三个class文件WordCount.class,WordCount$Map.class,WordCount$Reduce.class。
cd进入/usr/local/hadoop/file目录,然后执行:
jarcvfWordCount.jar
*.class
就会生成WordCount.jar文件。
(3)因为我们已经构建好了2个txt,所以我们现在只要执行现在生成的WordCount.jar文件就好了。
(4)查看结果和第一种方法一致
至此,我们已经完全验证完如何在Hadoop的单机模式下运行WordCount.java程序。
五、总结
这个并不难,难的在于,最后第九个步骤的时候一直无法jar成功,reduce一直是0%,于是我实验了许多种方法,包括第九步中的第二种方法。
后来我就去第八个步骤中看看那四个文件的配置是否产生了错误,hadoop-env.sh,core-site.xml·
·
等,这个时候我无意中试着把9000和9001在各自的.xml中删除然后重新输入,就可以运行WordCount.java程序了,原因不是很清楚,但是相信我配置还是正确的。
另外,我在第九步的6个步骤中修改了那些数据,不知道这些是不是导致我最终成功的原因。
希望今后能更加严格的要求自己,找出问题并解决问题。