成绩信息与电气工程学院实习报告实习名称毕业实习实习时间实习地点学生姓名学生学号专业班级指导教师二○15年5月15日⒈实习目的在这段时间的实习中主要对即将进行的毕业设计做准备,毕业设计的前期调研分析,对Hadoop平台进行相关了解,对mapreduce编程模型进行了解学习,了解与Hadoop相关的Linux命令等。⒉实习内容⒉⒈背景当代,人们的生活己经慢慢从过去的PC时代步入了移动互联网时代,各行各业的信息正在不断的累积,数据规模飞速增长,如何有效的管理、高效分析这些数据成为了新的研究热点。图像作为一种广泛使用的基本的多媒体信息,不论是在科学技术还是日常生活等各个方面都涉及到图像数据。与此同时人们感到要在海量的图像中寻找到自己所需要的图像变得越来越困难,理论源于实践,于是人们开始对图像检索进行研究,目前图像检索已经成为了当今计算机研究领域的一个研宄热点。图像检索就是根据对图像内容的描述,在图像数据库中查找具有描述特征或者包含与描述特征最相似的特征的图像。图像内容主要包括视觉内容和信息内容。视觉特征比如形状、颜色、纹理等属于图像的物理表示;信息内容即图像的语义,如主题、场景、尺寸、年代等。传统的基于单节点架构的图像检索系统已经无法应对大数据时代海量图像的存储和计算需求,此时,Google主要采用GFS分布式文件系统来存储海量数据,并用MapReduce模型进行分布式计算,用BigTable替代了传统的关系数据库,它是一种基于键值对型的非关系数据库。目前图像检索的发展受到图像处理和人工智能等方面技术的限制为了实现自动化、智能化、通用的图像检索系统,将的分布式框架应用于图像检索领域可以实现一个高效、稳定易扩展的图像检索系统。图像检索应用广泛,例如外观专利图像检索、医学图像检索、指纹人脸识别等。此外,图像检索还是视频检索的基础。⒉⒉Hadoop平台介绍Hadoop是Apache软件基金会组织下的一个幵源项目,它采纳Google的GFS和MapReduce思想实现了HDFS和MapReduce编程框架,可以在廉价的机器上部署分布式集群,HDFS用于分布式存储大数据并用MapReduce编写并行计算程序,Hadoop就提供了自己的语言MapReduce来分配和调度并最终总结处理结果。Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。⒉⒉⒈Hadoop的几项优点①高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。②高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。③高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。④高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。⑤低成本。与一体机、商用数据仓库以及YonghongZ-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,比如C++。⑥R是GNU的一个开源工具,具有S语言血统,擅长统计计算和统计制图。由RevolutionAnalytics发起的一个开源项目RHadoop将R语言与Hadoop结合在一起,很好发挥了R语言特长。⒉⒉⒉主要子项目HadoopCommon:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目。HDFS:Hadoop分布式文件系统(DistributedFileSystem)-HDFS(HadoopDistributedFileSystem)。MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API。⒉⒉⒊相关项目①HBase:类似GoogleBigTable的分布式NoSQL列数据库。②Hive:数据仓库工具,由Facebook贡献。③Zookeeper:分布式锁设施,提供类似GoogleChubby的功能,由Facebook贡献。④Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。⒉⒊使用到的主要项目介绍⒉⒊⒈分布式文件系统HDFSHDFS(HadoopDistributedFileSystem)是进行分布式计算的存储基础,它是Hadoop项目的核心子项目,它将海量数据分块存储于集群的相关联的多台计算机上,即可以加大存储容量,还实现了容错自动进行分块复制。HDFS被设计来运行于廉价的商用服务器集群之上,而不是专门设计某台超级计算机进行存储处理,节省了对硬件需求的开销。HDFS基于流式的数据访问方式以及分块存储和本地化读取方式,能够加快数据处理的速度。但它无法高效存储大量的小文件也不支持多用户写入及任意修改系统中的文件。众所周知,在操作系统都有一个块的概念,文件以块的形式存储在磁盘中,在HDFS中也是把文件分块存储的,块的大小可以根据需求设定且可以存在同样的多个块,分块存储对于HDFS来说会有很多好处。首先就是可以在HDFS中存储任意大的文件了,而不会受到网络中单节点磁盘大小的限制,比如单节点存储100TB的数据一般不可能,但是如果把它进行逻辑分块,再把各个块分别存储在集群的各个机器上就完全可以实现。其次,分块存储使得分布式文件系统能够通过复制提高容能力,当某个节点故障,就可以从其它的正常节点读取数据进行修复,系统稳定性也就得以提高。HDFS体系结构中有两类节点,NameNode和DataNode,它们分别承担了Master和Worker的任务。通常只有一个NameNode节点,对应还有一个SecondaryNameNode节点用于DataNode节点故障或者更新恢复用,DataNode节点是实际的任务执行节点,通常有多个,存储着数据块的副本,被客户端和NameNode调用,同时,它会通过心跳机制定时向NameNode节点发送所存储文件块信息,NameNode也从此判断DataNode是否出现故障。节点是任务调度节点,它管理着整个文件系统的命名空间,并维护文件系统的文件目录树及其索引目录。⒉⒊⒉MapReduce计算模型MapReduce是一种编程模型,用于在大规模数据上进行并行计算,它非常简单、容易实现且扩展性强。实际上MapReduce就是“任务的分解和结果的汇总”,Map把数据集切分为多个记录集分配成多个任务并行处理,处理结果经过一系列处洗牌操作,再通过Reduce操作把最终结果输出到分布式数据库中保存起来。MapReduce计算模型各个阶段的详细工作流程如下:①Input:每个Hadoop任务通常需要提供Map和Reduce函数,并指明要处理数据的输入输出路径和其它一些运行参数。这个阶段会把输入目录下的大数据文件进行分片处理,将它们按照块大小划分为若干独立的数据块。并将这些数据库以key,value对的格式读入。②Map:将每个数据块作为一组key,value键值对进行处理,该过程一般会调用用户自定义的Map函数来处理每一个键值对,生成一批新的中间key,value值对,这些新的键值对的类型可以与输入的键值对不同。③Shuffle&Sort:在阶段Shuffle,通过HTTP为每个Reduce获得所有Map输出中与之相关的key,value键值对;而在Sort阶段,框架将按照key的值对的输入Reduce进行分组,通常Shuffle和Sort两个阶段是同时进行的。④Reduce:在这个阶段每个Reducer遍历maper产生的中间数据,对每一key执行用户自定义的Reducer函数,输出新的key,value键值对。⑤Output:此阶段会把Reduce输出的结果根据实际的需求以某种格式输出到分布式文件系统的目录文件中。⒉⒋主要模块该系统主要包括了以下几个模块:图像数据存储:使用存储海量的图像数据;图像特征提取:利用平台对大规模的图像数据并行提取其视觉特征;特征数据聚类:对图像特征进行并行聚类并根据聚类结果量化;用户图像检索:根据量化结果计算相似度来检索相似图像。⒊参考文献[1]张学浪.基于Hadoop的海量图像检索关键技术研究[D].西北农林科技大学2013[2]陈永权.基于Hadoop的图像检索算法研究与实现[D].华南理工大学2013[3]黎光谱.改进K-Means聚类算法在基于Hadoop平台的图像检索系统中的研究与实现[D].厦门大学2014[4]黄宜华,苗凯翔.深入理解大数据:大数据处理与编程实践[M].北京:机械工业出版社,2014[5]刘鹏,黄宜华,陈卫卫.实战Hadoop:开启通向云计算的捷径.北京:电子工业出版社,2011⒋实习总结通过此次实习了解了毕业设计的相关软件和Hadoop平台,认识到了Hadoop在处理大数据方面的优势。在知道需要Linux和java环境后,进行了Linux系统安装和java环境的配置,过程中深刻认识到了配置对开发框架的重要性。对毕业设计进行了一些前期调研和分析,有了毕业设计的基本思路,为毕业设计打下基础。但对于毕业设计而言还是需要阅读更多的文献资料,也需要对毕业设计的内容进行更多的分析和仔细的研究才能完成毕业设计。⒌指导教师评语及签字签字:年月日