admin管理员组

文章数量:1535019

2024年2月10日发(作者:)

工学院

实验报告

课程名称: 分布式系统及云计算概论

实验项目名称: Hadoop安装以及执行WordCount程序

学 院: 工学院

专业班级:

姓 名:

学 号:

指导教师:

2014年 6 月 16 日

一、 实验目的

在虚拟机Ubantu上安装Hadoop单机模式并且执行WordCount程序。

二、 实验仪器

硬件:虚拟机Ubantu

软件: Windows 7操作系统

三、 实验原理

基于云计算的Hadoop实现。

WordCount

WordCount 例子读取文本文件,并统计文件中单词出现的频数。WordCount对于hadoop的重要性,相当于HelloWorld对于JAVA的重要性。如果你想学习MapReduce变成模型,那么学习WordCount是一个最好的开始。

输入

输入包含一组文件,文件中含有很多单词

输出

输出是一个文本文件,文件的每一行包含一个单词和这个单词在所有输入文件中出现的次数。

输入样例

input1:

hello world bye world

input2:

hello hadoop bye hadoop

输出样例:

bye 2

hadoop 2

hello 2

world 2

四、实验内容及步骤

实验内容:

一、安装Linux操作系统

二、在Ubuntu下创建Hadoop用户组和用户

三、在Ubuntu下安装JDK

四、修改机器名

五、安装ssh服务

六、建立ssh无密码登录本机

七、安装Hadoop

八、在单机上运行Hadoop

九、Hadoop执行WordCount程序

实验步骤:

一、安装Linux操作系统

在虚拟机上使用镜像安装好Ubantu 12.04系统,此处不多做介绍,建议安装的时候修改

成中文版,更将有利于接下来的步骤。

二、在Ubuntu下创建Hadoop用户组和用户

这里考虑的是以后涉及到Hadoop应用时,专门用该用户操作。用户组名和用户名都设为:hadoop。可以理解为该hadoop用户是属于一个名为hadoop的用户组,这是linux操作系统的知识,如果不清楚可以查看linux相关的书籍。

1、创建Hadoop用户组,如图(1)

2、创建Hadoop用户,如图(2),除了Full name自己设置以外,其他的都可以直接Enter进入默认设置。

3、给Hadoop用户添加权限,打开/etc/sudoers文件,如图(3)

按回车键后就会打开/etc/sudoers文件了,给Hadoop用户赋予root用户同样的权限。在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,如图(4)

4、此时就可以重启Ubantu进入新建的hadoop组了,选择的是你新建的hadoop组的Full

name那个用户组,如下图所示,我设置的是hadoop01,所以我重启进入的就是hadoop01.

三、在Ubuntu下安装JDK

选择的是jdk1.6.0_30版本。安装文件名为.

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)运行,如图(9)

注:可能此时仍然没有执行权限,那是因为在linux中,文件的默认权限是644,即使是属主用户也没有执行权限,这时我们需要更改其权限,如果你想知道某个文件的权限,可以进入该文件所在的文件夹,执行命令ls –la 查看。这里将文件的权限改为777,即文件的属主用户,属组用户和其他用户对该文件拥有所有权限,当然不推荐对系统中的文件这样设置权限,因为这样就破坏了linux的安全性。)

更改权限,如图(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 Bourne 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_这两个文件是成对出现的)

2、进入~/.ssh/目录下,将id_追加到authorized_keys授权文件中,开始是没有authorized_keys文件的,如图(21)

完成后就可以无密码登录本机了。

3、登录localhost,如图(22)

( 注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)

4、执行退出命令,如图(23)

七、安装Hadoop

我采用的Hadoop版本是从 这个网站中的资源下载中的

1、假设在桌面,将它复制到安装目录 /usr/local/下,如图(24)

2、解压,如图(25)

3、将解压出的文件夹改名为Hadoop,如图(26)

4、将该hadoop文件夹的属主用户设为hadoop,如图(27)

5、打开hadoop/conf/文件,如图(28)

6、配置conf/(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径),如图(29)

7、打开conf/文件

编辑如下:(注:9000最好是手打,避免产生不必要的错误)

8、打开conf/文件,编辑如下:(注:9001最好是手打,避免产生不必要的错误)

9、打开conf/文件,编辑如下:

10、打开conf/masters文件,添加作为secondarynamenode的主机名,作为单机版环境,这里只需填写localhost就Ok了。

11、打开conf/slaves文件,添加作为slave的主机名,一行一个。作为单机版,这里也只需填写localhost就Ok了

八、在单机上运行Hadoop

1、进入Hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,如图(30)

当你看到下图时,就说明你的hdfs文件系统格式化成功了。

3、启动bin/,如图(31)

4、检测Hadoop是否启动成功,如图(32)

如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的Hadoop单机 版环境配置好了。

九、Hadoop执行WordCount程序

1、首先如果你没打开hadoop,那么就参照第八个步骤的第3个步骤,开启hadoop,用jps

验证。

2、首先在"/usr/local/hadoop"目录下创建文件夹"file"。

3、接着创建两个文本文件和,使内容为"Hello World",而的内容为"Hello Hadoop"。这里按cd ..回到hadoop@s18:~$,按照如图步骤创建2个txt。

4、在HDFS上创建输入文件夹,hdfs路径如红框。

5、上传本地file中文件到集群的input目录下

6、这个步骤不知道为什么原因,但是我在错误的情况下修改的一些地方,建议直接先到第7步验证后再回来看第6步。

(1)

(2)首先查看自己的虚拟机的IP地址,包括之前第四步设置的主机名。

查看IP地址使用命令ifconfig,查看主机名修改使用sudo gedit /etc/hostname,路径如下

输入这个修改,增添IP地址,(注:不知道是不是修改了这些的原因就可以执行程序了)。

(3)前面2个设好后还是不行的话,看看是不是这里没有设置好

7、接下来有2种方法运行,首先介绍第一种

(1)运行WordCount程序

如果提示你output已经存在,那么输入./hadoop dfs –rmr output删除output文件夹即可,在如下路径中输入

接着重新第(1)步

(2)运行过程,(注:该过程可能需要5-10分钟)

(3)查看结果

接下来介绍第二种方法

(1)新建一个目录,方法如下图

(2)输入如下命令,如箭头所示,编译程序

编译完后在/home/admin/WordCount目录会发现三个class文件 ,WordCount$,WordCount$。

cd 进入 /usr/local/hadoop/file目录,然后执行:

jar cvf *.class

就会生成 文件。

(3)因为我们已经构建好了2个txt,所以我们现在只要执行现在生成的 文件就好了。

(4)查看结果和第一种方法一致

至此,我们已经完全验证完如何在Hadoop的单机模式下运行程序。

五、总结

这个并不难,难的在于,最后第九个步骤的时候一直无法jar成功,reduce一直是0%,于是我实验了许多种方法,包括第九步中的第二种方法。

后来我就去第八个步骤中看看那四个文件的配置是否产生了错误,,···等,这个时候我无意中试着把9000和9001在各自的.xml中删除然后重新输入,就可以运行程序了,原因不是很清楚,但是相信我配置还是正确的。

另外,我在第九步的6个步骤中修改了那些数据,不知道这些是不是导致我最终成功的原因。

希望今后能更加严格的要求自己,找出问题并解决问题。

本文标签: 文件用户安装执行权限