基于Hadoop的优良机器分析报告.docx

上传人:b****5 文档编号:28304390 上传时间:2023-07-10 格式:DOCX 页数:15 大小:767.40KB
下载 相关 举报
基于Hadoop的优良机器分析报告.docx_第1页
第1页 / 共15页
基于Hadoop的优良机器分析报告.docx_第2页
第2页 / 共15页
基于Hadoop的优良机器分析报告.docx_第3页
第3页 / 共15页
基于Hadoop的优良机器分析报告.docx_第4页
第4页 / 共15页
基于Hadoop的优良机器分析报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于Hadoop的优良机器分析报告.docx

《基于Hadoop的优良机器分析报告.docx》由会员分享,可在线阅读,更多相关《基于Hadoop的优良机器分析报告.docx(15页珍藏版)》请在冰豆网上搜索。

基于Hadoop的优良机器分析报告.docx

基于Hadoop的优良机器分析报告

《云计算》

课程设计报告书

 

题目:

基于Hadoop的优良机器分析

 

姓名:

***

学号:

********

班级:

********

指导教师:

****

设计日期:

2021年6月19日至2021年6月30日

第一章实验目的1

第二章算法设计与描述2

第三章程序设计3

第四章程序运行环境及结果7

第五章关键问题及解决方法14

第六章小结15

 

第一章实验目的

1.1实验目的:

随着科技的发展,如今机器替代人工的情况越来越多,许多行业对机器加工部件的需求也很大,比如汽车变速箱的轴承加工中,不仅人工加工难度高,并且精度要求高。

所以这要求每一台生产轴承的机器都必须性能优良,良品率高于90%。

故在每一台生产轴承的机器出厂前都需要对机器进行实验生产,查看其生产结果是否达标,如果不达标则需要进行重新校准,再进行重新验证。

本次实验中基于轴承生产机器的生产数据,通过hadoop进行计算,分析出某台机器一天的生产数据中,良品的个数,及其通过结果判断该机器是否达标。

 

第二章算法设计与描述

2.1Hadoop平台简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。

充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(DistributedFileSystem),其中一个组件是HDFS(HadoopDistributedFileSystem)。

HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。

HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。

Hadoop的框架最核心的设计就是:

HDFS和MapReduce。

HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

2.2设计分析。

生产数据的内容中,每一条数据都为:

为时间+序号+产品的情况(良好、中等、错误件)的格式,如:

“2021/03/02number:

0Grade:

excellent”。

每个试生产件都有一个对应的产品情况字段,则可以利用对Grade:

excellent字段的计算分析,统计该字段的个数,得到本次试生产的情况,如果优良的字段占比较少,则说明该加工轴承的机器不大标,需要从新进行校验,本次实验数据为一万条。

2.3设计原理

利用MapReduce框架设计,在Map过程将输入文本按空格进行拆分,并对数据进行初步统计,将各个字段及字段频率进行组合作为Map过程输出的value值,将Map过程的Key值设为统一固定值。

在Reduce过程获取Map过程的输出,拆分value值,获取并汇总统计出所有字段的频率。

2.4设计流程图

具体流程图如下,先获取目标文件的相应数据,再把结果输入到map中,再把map处理的结果作为Reduce的输入,最终把Reduce的结果输出到文件中,即可对文件进行查看分析。

图1流程图

 

第三章程序设计

3.1程序说明

1.定义TokenizerMapper类,并重新写map函数。

在map函数中将每个字段进行一一拆解出来,并且进行打标签,进行初步统计后放入Map集合中,并把结果给于Reducer进行处理。

2.定义IntSumReducer类,重新对reduce方法进行编写。

对Map过程中发送过来的键值对,拆分value值取出字段及对应字段频率,进行工单的相关字段进行统计。

3.主方法main中。

1)首先通过Jobjob=Job.getInstance(conf,"wordcount");封装计算程序的Mapper和reducer,封装输入和输出。

2)其次通过job.setJarByClass(WordCount.class);设置计算程序的主驱动类。

3)接着通过job.setMapperClass(WordCount.TokenizerMapper.class);设置Mapper类和通过job.setReducerClass(WordCount.IntSumReducer.class);设置Reducer类。

4)然后设置reducer的输出类型:

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

3.2WordCount.java代码

packagewordcount;

importjava.io.IOException;

importjava.util.Date;

importjava.util.Iterator;

importjava.util.StringTokenizer;

importorg.apache.hadoop.conf.Configuration;

importorg.apache.hadoop.fs.Path;

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hadoop.mapreduce.Job;

importorg.apache.hadoop.mapreduce.Mapper;

importorg.apache.hadoop.mapreduce.Reducer;

importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;

importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

importorg.apache.hadoop.util.GenericOptionsParser;

publicclassWordCount{

publicWordCount(){

}

publicstaticvoidmain(String[]args)throwsException{

//Datedata=newDate();

//Calendercal=Calender.getInstance();

//System.out.print("开始运行时间--"+data);

//System.out.println(System.currentTimeMillis());

longa=System.currentTimeMillis();

//加载配置文件

Configurationconf=newConfiguration();

String[]otherArgs=(newGenericOptionsParser(conf,args)).getRemainingArgs();

if(otherArgs.length<2){

System.err.println("Usage:

wordcount[...]");

System.exit

(2);

}

Jobjob=Job.getInstance(conf,"wordcount");

job.setJarByClass(WordCount.class);

job.setMapperClass(WordCount.TokenizerMapper.class);

job.setCombinerClass(WordCount.IntSumReducer.class);

job.setReducerClass(WordCount.IntSumReducer.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

for(inti=0;i

FileInputFormat.addInputPath(job,newPath(otherArgs[i]));

}

FileOutputFormat.setOutputPath(job,newPath(otherArgs[otherArgs.length-1]));

longb=System.currentTimeMillis()-a;

System.out.print("运行时间"+b+"ms");

System.exit(job.waitForCompletion(true)?

0:

1);

//System.out.print("结束时间--"+data);

}

publicstaticclassIntSumReducerextendsReducer{

privateIntWritableresult=newIntWritable();

publicIntSumReducer(){

}

publicvoidreduce(Textkey,Iterablevalues,Reducer.Contextcontext)throwsIOException,InterruptedException{

intsum=0;

IntWritableval;

for(Iteratori$=values.iterator();i$.hasNext();sum+=val.get()){

val=(IntWritable)i$.next();

}

this.result.set(sum);

context.write(key,this.result);

}

}

publicstaticclassTokenizerMapperextendsMapper{

privatestaticfinalIntWritableone=newIntWritable

(1);

privateTextword=newText();

publicTokenizerMapper(){

}

publicvoidmap(Objectkey,Textvalue,Mapper.Contextcontext)throwsIOException,InterruptedException{

StringTokenizeritr=newStringTokenizer(value.toString());

while(itr.hasMoreTokens()){

this.word.set(itr.nextToken());

context.write(this.word,one);

}

}}

}

第四章程序运行环境及结果

4.1系统环境

1)系统:

Ubuntu16.04虚拟机

2)jdk版本:

1.8.0_161

3)Hadoop版本:

2.7.3

4.2运行环境

1、先在自己的window电脑中下载好相应的包,然后通过WinSCP软件实现文件的传输到Linux中。

2、Hadoop安装检验

2、Jdk安装检验

3、配置jdk环境变量为:

exportJAVA_HOME=/usr/local/java

exportJRE_HOME=$JAVA_HOME/jre

exportCLASSPATH=.:

$JAVA_HOME/lib:

$JRE_HOME/lib

exportPATH=$PATH:

$JAVA_HOME/bin

4、修改配置文件core-site.xml

5、修改配置文件hdfs-site.xml

 

4.3实验的输入

1、文件的输入内容如下图所示,第一列为机器生产的试件的时间,第二列为试件的编号,第三列为该试件产品的情况,是否优良或为错误件。

文件中总计产品试件一万件,本次实验用到的是Grade字段的内容,由于每个编号的试件结果值只有三种可能,只需统计三种可能的出现次数,即可分析知道该生产轴承的机器,是否达到生产的标准。

 

4.4实验操作

1、开启hadoop,通过在终端中输入:

cd/usr/local/hadoop进入到Hadoop文件夹中,然后输入命令:

sbin/start-all.sh,进行开启Hadoop的运行。

2、上传试生产的数据文件word2.txt。

在终端送输入命令行:

hadoopfs-put/home/j/Deskop/work2.txt/input。

3、上传成功后可在eclipse中刷新查看到相应的文件。

 

4、在eclipse中创建相应的包和类,并编写程序、运行。

运行后java控制台输出的信息如下图所示,从中可看出本次对一万条数据进行计算,最终运行消耗的时间为1562ms。

 

5、在运行后,eclipse中多出了个part-r-00000的文件,如下图所示,该文件为结果的输出文件。

 

6、结果的查看,打开结果输出文件可查看到如下的信息。

 

7、网页端查看Hadoop详情。

4.5实验结果分析

对输出结果进行分析,从时间的出现次数可以判断出该输入文件的数据量为一万条,从输出结果的第二行可看出,本次生产中产品中,优良的件数为7437件,中等的件数为2048件,错差件的件数为515件。

统计即可得到大概值:

优良率:

74.3%,中等率:

20.4%,差错率:

0.05%。

本生产机器的差错率较低,但中优良率未到90%的达标,还需调试,不可直接投入使用。

数据处理分析,本次实验所用的所有输入数据为某台生产机器,一天中模拟生产试件的全部信息,本次数据处理量为10000条,通过运行可看出其单机运行最终运行消耗的时间为1562ms。

 

第五章关键问题及解决方法

在本次的实训中,从环境的搭建到,到程序的编写,再到结果的分析等,其中遇到了许多的问题,从中也学习到了很多的东西,选取了其中一些进行分享,具体如下。

1)出现报错:

Exceptioninthread"main"org.apache.hadoop.mapreduce.lib.input.InvalidInputException:

Inputpathdoesnotexist:

file:

/home/hadoop/workspace/WordCountProject/input。

在查找文献后知道问题。

Eclipse运行MapReduce程序时,会读取Hadoop-Eclipse-Plugin的Advancedparameters作为Hadoop运行参数,如果我们未进行修改,则默认的参数其实就是单机(非分布式)参数,因此程序运行时是读取本地目录而不是HDFS目录,就会提示Input路径不存在。

解决方法为:

将配置文件复制到项目中的src目录,来覆盖这些参数。

让程序能够正确运行

2)无法开启Hadoop问题,在安装成功,可查看到Hadoop的版本后,进行开启Hadoop,但只无法找到命令各种报错。

在询问同学后发现,进入的目录有误,在进入到正确的目录后,重新运行成功开启了Hadoop。

3)./start-all.sh启动Hadoop报JAVA_HOMEisnotset,在XX中查询了相关的关键词后,知道原因,其中的JAVA_HOME环境没配置正确,在重新查看配置后发现,配置的路径出现了问题,在重新配置正确后,进行运行,问题得到解决。

 

第六章总结

经过本次的实验,我更加了解了Hadoop相关环境的搭建安装、运行、分析。

数据处理与生活问题解决的联合,在一开始的搭建中由于是使用主机中真实安装的ubuntu14进行实验,遇到了更多的问题,如文件的window10下载的文件传输到Linux中,Linux的网络操作等问题,由于对Linux不够熟练,导致进度较慢,虽然搭建成功了hadoop的运行环境,但最终在误删了几个文件后,Linux宕机了,无法开机。

最终和舍友共用一台电脑进行了后序的实验,为了本次实验的正常进行,本次实验的数据也进行了修改,由于原数据中存在中文,在处理数据时出现乱码,故对中文部分进行了替换整理,数据共一万条。

在经过本次实验对生产数据的分析,进而判断机器的生产是否达标。

结合生活与运用,更加发现了云计算的强大,本次数据一万条,但只是一台机器,一天的生产量,如果一天需要测试一百台机器,还要分析机器的其他性能,那每天的数据量都是非常大的,对于一台电脑来说是很难解决如此庞大的数据量的,故需要进行分布式计算和分布式存储。

结合生活的技能运用也提高了我对本次Hadoop的认知。

在加下来的时间中,我还会去学习这一项技术,并结合生活中的需求进行运用。

也相信云计算的路会越走越远。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1