您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页Hadoop云计算实验报告

Hadoop云计算实验报告

来源:小侦探旅游网


Hadoop云计算实验报告

Hadoop云计算实验报告

1 2

实验环境 虚拟机:VMware 9

操作系统:ubuntu—12。04-server-x(服务器版),ubuntu—14。10—desktop—amd(桌面版)

Hadoop版本:hadoop 1.2。1 Jdk版本:jdk—7u80—linux-x

Eclipse版本:eclipse—jee-luna-SR2—linux-gtk-x86_

Hadoop集群:一台namenode主机master,一台datanode主机salve,

master主机IP为10。5.110.223,slave主机IP为10.5.110.207。

3

实验设计说明 3.1 主要设计思路

在ubuntu操作系统下,安装必要软件和环境搭建,使用eclipse编写程序代码。实现大数据的统计。本次实验是统计软件代理系统操作人员处理的信息量,即每个操作人员出现的次数。程序设计完成后,在集成环境下运行该程序并查看结果。 3.2 算法设计

实验目的

在虚拟机Ubuntu上安装Hadoop单机模式和集群;

编写一个用Hadoop处理数据的程序,在单机和集群上运行程序.

该算法首先将输入文件都包含进来,然后交由map程序处理,map程序将输入读入后切

出其中的用户名,并标记它的数目为1,形成的形式,之后再将这些1值加起来,即为用户名出现的个数,最后将这个对以TextOutputFormat的形式输出到HDFS中。 3.3 程序说明

1) UserNameCountMap类继承了org。apache。hadoop.mapreduce。Mapper,4个泛型类型分别是map函数输入key的类型,输入value的类型,输出key的类型,输出value的类型。

2) UserNameCountReduce类继承了org.apache。hadoop。mapreduce.Reducer,4个

泛型类型含义与map类相同。

3) main函数通过addInputPath将数据文件引入该类,在通过setOutputPath将生成

结果转为一个文件,实现生成结果,即统计结果的查看。

FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1]));

程序具体代码如附件中源程序。 4

实验过程

安装ubuntu操作系统

4.1 安装实验环境 4.1.1

1) 打开VMware,在Home tab中单击“Create a New Virtual Machine”, 2) 选择custom,选择虚拟硬件版本Workstation9.0,选择ios文件,next, 3) 录入目标操作系统信息,包括Full name、Uer name和Password, next, 4) 选择默认的选项,一般不做更改,最后确认信息,Finish, 5) 安装成功后,会看到如下画面,

4.1.2

安装配置Samba

安装samba主要为了实现与windows操作系统的通讯,由于server版本的ubuntu没有自带图形操作界面,所以下载资料等操作不太方便,这也是安装samba的目的之一。

1) 安装samba,输入如下命令:

2) 安装vim

3) 创建共享目录,并修改权限

4) 配置samba。修改samba的配置文件/etc/samba/smb。conf ,将security=share,并

在文件的末尾追加如下内容,

5) 测试。在windows实机中,通过ip访问ubuntu虚拟机,可以见到share文件夹

4.1.3

安装配置JDK

首先,下载java开发工具包JDK。在本次试验中,我们下载的版本是jdk—7u80-linux—x。gz。 解压安装到/usr/lib/jvm/目录下,更名为java—7-sun。

配置环境变量/etc/environment,

使配置生效

测试安装配置结果

4.1.4

在单节点(伪分布式)环境下运行HADOOP 1) 添加Hadoop用户并赋予sudo权限 2) 安装配置SSH

切换至hadoop用户,

配置密钥,使得hadoop用户能够无须输入密码,通过SSH访问localhost, 测试结果:

3) 安装配置Hadoop

首先下载Hadoop,解压缩到/opt/hadoop目录下, 本次试验中我们下载的版本是hadoop-1。2。1-bin。tar.gz,更改目录名称为hadoop。

修改与hadoop相关的配置文件(在/opt/hadoop/conf目录下),分别是core—site.xml, hadoop-env.sh, hdsf—site。xml, mapred—site。xml。在此不一一列举。

4) 运行Hadoop

首先格式化HDFS,

启动单节点集群,

通过jps查看, master

slave

停止单节点集群,

4.1.5

在多节点(分布式)环境下运行HADOOP 1) 设置/etc/hosts文件

实验中两台机器处于同一局域网中,其中一台作为master,ip地址为10.5.110。223,一台作为slave,ip地址为10.5。110。207,修改两台机器的/etc/hosts文件,

2) 设置节点之间无密码SSH登陆

验证配置SSH是否正确 3) 修改集群配置文件

修改master的masters、slaves,修改所有节点的core—site.xml, hdsf—site.xml, mapred—site。xml,在此不一一列出。

4) 在master上格式化HDFS

5) 启动和停止集群

启动集群,

在master上启动HDFS后,jps结果如下: master

slave

在master上启动mapreduce后,jps结果如下: master

slave

停止集群

4.2 运行程序 4.2.1

在单机上运行程序

(1) 在Eclipse下,新建map/reduce工程 (2) 新建一个java类UserNameCount,编写代码

(3) 运行程序,结果如下:

(4) 在eclipse中编译好源代码后,导出程序的jar包,供在集群上使用。

4.2.2

在集群上运行程序

(1) 启动集群,通过jps命令查看master,slave上启动的服务列表,结果如下:

(2) 在集群环境下运行该程序jar包(UserNameCount.jar),结果如下:

(3) 查看集群环境下启动程序生成的结果,即output文件,结果如下:

(4) 数据统计结果在part—r-00000中,具体内容如下,

5

附件 源代码如下:

package hadoop;

import java。io。IOException; import java.util。StringTokenizer;

import org。apache.hadoop.conf。Configuration; import org.apache.hadoop.fs.Path;

import org.apache.hadoop。io。IntWritable; import org.apache.hadoop.io。LongWritable; import org。apache。hadoop.io。Text;

import org。apache。hadoop.mapreduce.Job; import org。apache.hadoop.mapreduce.Mapper; import org.apache。hadoop。mapreduce.Reducer;

import org.apache。hadoop.mapreduce.lib。input。FileInputFormat; import org。apache.hadoop。mapreduce.lib.input。TextInputFormat; import org.apache.hadoop.mapreduce。lib。output.FileOutputFormat; import org。apache.hadoop。mapreduce.lib.output.TextOutputFormat;

public class UserNameCount { public static class UserNameCountMap extends Mapperthrows IOException, InterruptedException { String line = value.toString();

StringTokenizer token = new StringTokenizer(line); while (token。hasMoreTokens()) { word.set(token.nextToken()); context。write(word, one); }

}

public static class UserNameCountReduce extends Reducer values, Context context) throws IOException, InterruptedException int sum = 0; for (IntWritable val : values) { sum += val。get(); } context.write(key, new IntWritable(sum)); }

}

public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf); job。setJarByClass(UserNameCount.class); job.setJobName(”usernamecount\"); job。setOutputKeyClass(Text。class); job。setOutputValueClass(IntWritable.class); job.setMapperClass(UserNameCountMap。class); job.setReducerClass(UserNameCountReduce.class); job.setInputFormatClass(TextInputFormat.class);

job。setOutputFormatClass(TextOutputFormat.class); FileInputFormat。addInputPath(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

job。waitForCompletion(true); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务