当前位置:文档之家› Hadoop云计算实验报告

Hadoop云计算实验报告

云计算实验报告Hadoop云计算实验报告Hadoop实验目的1在虚拟机上安装单机模式和集群;Ubuntu Hadoop编写一个用处理数据的程序,在单机和集群上运行程序。

Hadoop实验环境2虚拟机:9VMware(桌面(服务器版),操作系统:-desktop--server-x64amd64ubuntu-14.10ubuntu-12.04 版)版本: 1.2.1hadoop Hadoop版本:x647u80-linuxJdk -jdk-版本:x86_64-gtk-jee-luna-SR2-linuxEclipse eclipse-,主机集群:一台主机,一台mastersalve datanodeHadoop namenode。

,主机为主机为master IP IP 10.5.110.22310.5.110.207slave实验设计说明3主要设计思路 3.1 eclipse编写程序代码。

实现在ubuntu操作系统下,安装必要软件和环境搭建,使用大数据的统计。

本次实验是统计软件代理系统操作人员处理的信息量,即每个操作人员出现的次数。

程序设计完成后,在集成环境下运行该程序并查看结果。

算法设计 3.2程序将输入读入后该算法首先将输入文件都包含进来,然后交由map程序处理,map处理,切出其中的用户名,并标记它的数目为1,形成<word,1>的形式,然后交由reduce值收集起来,形成<word,list of1>的形式,(reduce将相同key值也就是word)的value1值加起来,即为用户名出现的个数,最后将这个<key,value>对以之后再将这些中。

的形式输出到HDFSTextOutputFormat程序说明 3.34个泛型类类继承了1)UserNameCountMap org.apache.hadoop.mapreduce.Mapper,的类型,输出的类型,输入value的类型,输出key函数输入型分别是map key value的类型。

个泛,4org.apache.hadoop.mapreduce.ReducerUserNameCountReduce2)类继承了类相同。

map型类型含义与将生setOutputPath将数据文件引入该类,在通过addInputPath函数通过main3)成结果转为一个文件,实现生成结果,即统计结果的查看。

newFileInputFormat.addInputPath(job, Path(args[0]));Path(args[1]));new FileOutputFormat.setOutputPath(job,.程序具体代码如附件中源程序。

实验过程4安装实验环境 4.1操作系统安装4.1.1 ubuntu打开在中单击“”,MachineVirtual a VMware, New Home tab Create1)选择,选择虚拟硬件版本,选择文件,,Workstation9.0next2) customios录入目标操作系统信息包括、和,,Password name Uer name3) next, Full选择默认的选项,一般不做更改,最后确认信息,,Finish4)安装成功后,会看到如下画面,5)安装配置Samba 4.1.2安装主要为了实现与操作系统的通讯,由于版本的没ubuntuserver samba windows有自带图形操作界面,所以下载资料等操作不太方便,这也是安装的目的之一。

samba)安装,输入如下命令:1samba)安装2 vim)创建共享目录,并修改权限3)配置。

修改的配置文件,将,4 security=share samba samba/etc/samba/smb.conf并在文件的末尾追加如下内容,)测试。

在实机中,通过访问虚拟机,可以见到文件夹5 shareubuntu windows ip安装配置JDK 4.1.3首先,下载开发工具包。

在本次试验中,我们下载的版本是jdk-7u80-java JDK linux- 。

解压安装到目录下,更名为。

sun7-/usr/lib/jvm/java x64.gz-配置环境变量,/etc/environment使配置生效测试安装配置结果在单节点(伪分布式)环境下运行HADOOP 4.1.4添加用户并赋予权限1) Hadoopsudo安装配置SSH 2)切换至用户,hadoop配置密钥,使得用户能够无须输入密码,通过访问,localhostSSHhadoop测试结果:安装配置Hadoop 3)首先下载解压缩到目录下本次试验中我们下载的版本是, Hadoop,/opt/hadoop。

,更改目录名称为hadoop-1.2.1-bin.tar.gzhadoop,分别是相关的配置文件(在目录下)修改与-site.xml, hadoop core/opt/hadoop/conf。

在此不一一列举。

mapred-site.xmlenv.sh,hadoop- hdsf-site.xml,运行Hadoop 4),首先格式化HDFS启动单节点集群,查看,通过jpsmasterslave停止单节点集群,在多节点(分布式)环境下运行HADOOP 4.1.5设置文件/etc/hosts1)实验中两台机器处于同一局域网中,其中一台作为,地址为,10.5.110.223master ip 一台作为,地址为,修改两台机器的文件,/etc/hosts 10.5.110.207 slave ip设置节点之间无密码登陆SSH2)验证配置是否正确SSH修改集群配置文件3)修改的、,修改所有节点的core-site.xml,hdsf-site.xml,master mastersmapredslaves-,在此不一一列出。

site.xml在上格式化HDFS master4)启动和停止集群5)启动集群,在上启动后,结果如下:jps master HDFSmasterslave在上启动后,结果如下:jps mapreduce master masterslave停止集群运行程序 4.2在单机上运行程序 4.2.1()在下,新建工程map/reduce 1 Eclipse新建一个类,编写代码()UserNameCountjava 2运行程序,结果如下:)(3.()在中编译好源代码后,导出程序的包,供在集群上使用。

jar 4 eclipse在集群上运行程序 4.2.2上启动的服务列表,结果如)(命令查看启动集群,通过,jps 1slavemaster下:()在集群环境下运行该程序包(),结果如下:2UserNameCount.jar jar查看集群环境下启动程序生成的结果,即)(文件,结果如下:output 3()数据统计结果在中,具体内容如下,00000 part -r4-附件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 extendsMapper<LongWritable,Text,Text,IntWritable>{private final IntWritable one=new IntWritable(1);Text();new=word Text privatepublic void map(LongWritable key,Text value,Context context) throws 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<Text,IntWritable,Text,IntWritable>{public void reduce(Text key,Iterable<IntWritable>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);}}。

相关主题