大数据存储与处理-第三讲.ppt

上传人:牧羊曲112 文档编号:4971231 上传时间:2023-05-26 格式:PPT 页数:84 大小:2.48MB
返回 下载 相关 举报
大数据存储与处理-第三讲.ppt_第1页
第1页 / 共84页
大数据存储与处理-第三讲.ppt_第2页
第2页 / 共84页
大数据存储与处理-第三讲.ppt_第3页
第3页 / 共84页
大数据存储与处理-第三讲.ppt_第4页
第4页 / 共84页
大数据存储与处理-第三讲.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《大数据存储与处理-第三讲.ppt》由会员分享,可在线阅读,更多相关《大数据存储与处理-第三讲.ppt(84页珍藏版)》请在三一办公上搜索。

1、1,本讲内容,2,我们只能采用并行计算,一个分布式文件系统和并行执行环境(框架)让用户便捷地处理海量数据Apache软件基金会下面的一个开源项目目前Yahoo!是最主要的贡献者,4,Hadoop是什么?,Apache Lucene开源的高性能全文检索工具包Apache Nutch开源的 Web 搜索引擎Google 三大论文MapReduce/GFS/BigTableApache Hadoop大规模数据处理,5,Hadoop起源,扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理

2、数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。,6,Hadoop的特点,7,Hadoop越来越火,那我们就来看看一些成功的案例:,雅虎北京全球软件研发中心IBMFacebookAmazonYahoo!中国移动研究院英特尔研究院百度、腾讯、新浪、搜狐、淘宝,8,谁在用Hadoop?,Yahoo Hadoop应用揭秘中国移动联通海量上网日志数据

3、,9,Hadoop应用案例,2010年10月时:Yahoo目前有超过38000台服务器,有超过4000个以上的服务器集群,数据总量达到了170PB,每日的数据增量在10TB以上。,10,Yahoo Hadoop应用揭秘,Yahoo的Hadoop应用包含有搜索、日志处理(Analytics,Reporting,Buzz)、用户建模、内容优化,垃圾邮件过滤器以及广告计算等。如何利用Hadoop对海量数据进行优化处理是Yahoo正在致力于工作的内容。以网络分析为例,Yahoo目前有超过100亿个网页,1PB的网页数据内容,2万亿条链接,每日面临这300TB的数据输出。“在应用Hadoop前,实施这一

4、过程我们大概需要1个月的时间,但应用后仅需要1周时间”,11,Yahoo Hadoop应用揭秘,“再以Yahoo搜索为例,我们的服务器上保留有用户三年来的搜索记录,这个数据是由超过 10TB的自然语言文本库所组成”,“如果数据重整,我们在应用Hadoop前需要1个月的时间进行处理,而在有了Hadoop后仅仅需要30分钟。”Hadoop也非万能,它采用Java实现,Java的IO处理虽然没有性能瓶颈,但是对于CPU密集型的任务是一个麻烦,因此,有些算法效率不会提高很多。,12,Yahoo Hadoop应用揭秘,中国移动大云在中国移动内部,Hadoop已经成为一个重要的数据挖掘工具,中国移动已经把

5、Hadoop的群用来进行闭环的数据挖掘,和传统算法的数据挖掘性能相比,有很大的提升,而且成本非常低。,13,中国移动,14,Hadoop生态系统,15,Hadoop基本架构物理分布的Hadoop集群,16,Hadoop基本架构物理部署,为以流式数据访问模式存储超大文件而设计的文件系统超大文件指的是几百MB,几百GB,几百TB,甚至几百PB流式数据访问HDFS建立的思想是:一次写入、多次读取模式是最高效的。商用硬件HDFS不需要运行在昂贵并且高可靠的硬件上。,17,HDFS文件系统设计目标,硬件错误是常态,因此需要冗余。程序采用“数据就近”原则分配节点执行。,18,HDFS文件系统设计基础与目标

6、,存储并管理PB级数据处理非结构化数据注重数据处理的吞吐量(延迟不敏感)应用模式为:write-once-read-many存取模式(无数据一致性问题),19,HDFS文件系统能做什么?,存储小文件(不建议使用)大量的随机读(不建议使用)需要对文件的修改(不支持)多用户写入(不支持),20,HDFS文件系统不适合做什么?,文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等Da

7、taNode在本地文件系统存储文件块数据,以及块数据的校验和可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。,21,HDFS文件系统文件,22,HDFS文件系统文件,23,HDFS文件系统文件,24,HDFS文件系统主要组件的功能,Namenode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会

8、成为系统的瓶颈,25,HDFS文件系统 NameNode,副本存放在那些DataNode上由NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。,26,HDFS文件系统 NameNode,一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数

9、据块的长度,块数据的校验和,以及时间戳DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用。集群运行中可以安全加入和退出一些机器,27,HDFS文件系统 DataNode,28,HDFS文件系统系统架构,一个名字节点和多个数据节点数据复制(冗余机制)存放的位置(机架感知策略)故障检测数据节点心跳包(检测是否宕机)块报告(安全模式下检测)数据完整性检测

10、(校验和比较)名字节点(日志文件,镜像文件)空间回收机制,29,HDFS文件系统保障可靠性的措施,HDFS如何写文件?,Write packet,Create file,Write packet,Write packet,Send ack,Send ack,Send ack,Close file,客户端联系namenode,在namenode命名空间中创建一个新文件,此时,namenode会检查文件是否存在和客户端是否有权限创建新文件,检查通过,就会创建一条记录。然后客户端写文件时,会取得合适的3个datanodes形成一个管线DataStreamer将数据包流式的传输到管线中第一个datan

11、ode,第一个datanode存储数据包并发送的第二个datanode,第二个datanode存储数据包并发送的第三个datanode。当收到管道中所有datanodes的确认信息后对应数据包才会从确认队列中删除。如此反复,直到所有的数据包,都写完,最后向namenode报告写入完成。,31,32,HDFS如何读文件?,Read block,Open file,Close file,Get block location,客户端联系NameNode,得到所有数据块信息,以及数据块对应的所有数据服务器的位置信息尝试从某个数据块对应的一组数据服务器中选出一个,进行连接数据被一个包一个包发送回客户端,

12、等到整个数据块的数据都被读取完了,就会断开此链接,尝试连接下一个数据块对应的数据服务器,整个流程,依次如此反复,直到所有想读的都读取完了为止。Namenode并不实际参与数据传输。,33,读文件流程,冗余备份策略机架策略心跳机制安全模式校验和回收站元数据保护,34,HDFS的可靠性回顾,35,35,什么是MapReduce?,处理海量数据(1TB)上百/上千CPU实现并行处理简单地实现以上目的移动计算比移动数据更划算,36,MapReduce设计目的大规模数据处理,自动实现分布式并行计算容错提供状态监控工具模型抽象简洁,程序员易用计算划到大量机器上组件间不允许任意数据共享,避免保保持同步而产生

13、的通信开销,所有在MapReduce上的数据不可变节点间通信只在产生新输出,37,MapReduce特性,38,MapReduce示例,mapping任务平等,Mapper无特定标识,处理任意输入每个mapper本地进行中间值交换,同键值送到同一个reducer。唯一的结点通信数据传送由平台处理,39,MapReduce数据流,40,MapReduce数据流,41,从Map到Reducer数据整体传输过程,输入块InputSplit:文件拆分成块Mapred-default.xml设置块大小输入格式定义了组成mapping阶段的map任务列表,每个任务对应一个输入块。据InputSplit地址

14、分配任务(最大任务数),42,MapReduce数据流输入,每个map任务都有一个用来写入数据的循环内存缓冲区。这个缓冲区默认大小是100M当缓冲区中的数据量达到一定阀值(默认0.8),系统将会启动一个后台进程把缓冲区的数据spill到磁盘,spill过程中,map的输出会继续写入到缓冲区,但如果缓冲区已满,map就会被阻塞直到spill完成。,43,MapReduce数据流 Map结果输出,当map开始产生输出时,并不是简单的写入到磁盘,先是写入到缓冲区,并进行预排序,以提升效率。,44,MapReduce数据流 shuffle和sort,当map开始产生输出时,并不是简单的写入到磁盘,先是

15、写入到缓冲区,并进行预排序,以提升效率。,45,MapReduce数据流 shuffle和sort,Partitons:每一个reduce节点会分派到中间输出的键集合中的一个不同的子集合Partitioner类决定键值对去向,默认分类器计算键哈希值 Spill线程把缓冲区数据写到磁盘前,会对它进行一个二次快速排序,首先根据数据属性的partition排序,然后每个partition中再按照key排序输出包括一个索引文件和数据文件,46,MapReduce数据流 Partitons,如果设定了combiner,将在排序输出的基础上运行Combiner就是一个 min reduce,它在执行map

16、的节点本身执行,先对map的输出做一次简单的reduce,使得map的输出更紧凑,更少的数据被写入磁盘和传输给reduce,47,MapReduce数据流 combiner,每当内存中的数据到达spill阀值的时候,都会产生一个新的spill文件,所以在map任务写完它的最后一个输出记录时,可能会有多个spill文件。在map任务完成前,所有的spill文件将会被归并排序为一个索引文件和数据文件。当spill文件归并完毕后,map将删除所有的临时spill文件,并告知tasktracker任务完成。,48,MapReduce数据流 map输出结束,Map的输出文件放置在map任务的tasktr

17、acker的本地磁盘上,它是运行reduce任务的tasktracker所需要的输入数据。Reduce任务的输入数据分布在集群的多个map任务的输出中,map任务可能会在不同的时间内完成,只有有其中的一个map任务完成,reduce任务就会开始拷贝它的输出,这个阶段称之为拷贝阶段Reduce任务拥有多个拷贝线程,可以并行的获取map输出,线程数默认是5,49,MapReduce数据流 copy,拷贝来的数据叠加在磁盘上,有一个后台线程会将它们合并为了更大的排序文件,节省后期的归并时间。当所有的map输出都拷贝后,reduce任务进入排序节点,这个阶段会对所有的map输出进行归并排序,这个工作会

18、重复多次假设有50个map输出,并且归并因子是10,则需要5次归并,没每次会把10个文件归并为一个,最终生成5个中间文件。之后,系统不再把5个中间文件归并成一个文件,而是排序后直接交给reduce函数,省去了向磁盘写入数据这一步。,50,MapReduce数据流 copy,每个reduce任务都会创建一个Reducer实例reducer的reduce()方法只会调用一次,它会接收一个键和关联到键的所有值的一个迭代器,迭代器会以一个未定义的顺序返回关联到同一个键的值。,51,MapReduce数据流 Reduce,键值对通过OutputCollector被写到输出文件中,写入的方式由输出格式控制

19、。每一个reducer会把结果输出写在公共文件夹中一个单独的文件内,这些文件的命名一般是part-nnnnn,nnnnn是关联到某个reduce任务的partition的id,52,MapReduce数据流输出,53,单一Reduce处理,54,多Reduce处理,55,无Redue处理,56,MapReduce工作原理,JobTracker一直在等待JobClient提交作业TaskTracker每隔3秒向 JobTracker发送心跳询问有没有任务可做,如果有,让其派发任务给它执行这是一道pull过程:slave主动向master拉生意,57,MapReduce工作原理,58,Hadoop

20、 中的 MapReduce,59,MapReduce 作业执行流程,默认为先进先出作业队列调度支持公平调度支持容量调度,60,作业调度机制,推测执行:既如果jobtracker发现拖后腿的任务,会再启动相同的备份任务,然后那个先执行完成就会去kill掉另外一个。因此在监控网页上经常能看到正常执行完成的作业有被kill的任务。推测执行默认打开,但是如果是代码的问题,并不能解决问题,而且会使集群更慢,通过mapred-side.xml配置文件中设置和可为map任务或reduce任务开启或者关闭推测执行。重用jvm,可以省去启动新的jvm消耗时间,mapred-side.xml文件中设置单个jvm最

21、大执行的任务数(1,1或-1表示没有限制)忽略模式:任务在读取任务数据失败2次之后,会把数据位置报告给jobtracker,然后重新启动该任务并在遇到所记录的坏数据位置时直接跳过(默认关闭,同SkipBadRecord方法打开),61,任务执行优化,硬件故障是指jobtracker故障或tasktracker故障Jobtracker是单点,若发生故障目前hadoop还无法处理,唯有选择最牢靠的硬件作为jobtrackerJobtracker通过心跳信号(周期1分钟)了解tasktracker是否发生故障或者负载过于严重Jobtracker将从任务节点列表中移除发生故障的tasktracker。

22、如果故障节点在执行map任务并且尚未完成,jobtracker会要求其他节点重新执行此map任务如果故障节点在执行reduce任务并且尚未完成,jobtracker会要求其他节点重新执行尚未完成的reduce任务。,62,错误处理机制硬件故障,由于代码bug或进程崩溃引起任务失败Jvm自动退出,向tasktracker父进程发生错误信息,错误信息也会写入日志Tasktracker监听程序会发现进程退出,或者进程很久没有更新信息送回,将任务标记为失败标记任务失败后,任务计数器减1以便接受新的任务,并通过心跳信号通知jobtracker任务失败的信息Jobtracker获悉任务失败后,将把该任务重

23、新放入调度队列,重新分配出去执行如果一个任务失败超过4次(可配置),将不会再执行,同时宣告任务作业失败。,63,错误处理机制任务失败,64,大纲,Hadoop安装配置编写MapReduce程序,65,实践,支持平台GNU/LinuxWindows(Cygwin)必需软件JDK1.6以上SSH无密码访问,66,必要条件,格式化HDFSHadoop namenode-format运行脚本start-all.shstart-dfs.shstart-mapred.shjps命令查询java进程,67,启动系统,通过浏览器和http访问jobtracker所在节点的50030端口监控jobtracker

24、通过浏览器和http访问namenode所在节点的50070端口监控集群,68,通过Web了解hadoop的状况,69,Jobtracker,70,NameNode,命令行方式操作,71,HDFS文件操作,Hadoop没有当前目录的概念,,72,列出HDFS下的文件,73,上传文件到HDFS,74,将HDFS文件复制到本地,75,查看HDFS基本统计信息,在新节点安装好hadoop把namenode的相关配置文件复制到该节点修改masters和slaves文件,添加该节点设置ssh无密码登陆该节点单独启动该节点上的datanode和tasktracker(hadoop-daemon.sh st

25、art datanode/tasktracker)运行start-balancer.sh进行数据负载均衡,76,怎么添加节点,Page 1:the weather is good.Page 2:good weather is good.,77,举例:单词计数,Map1,Map2,Reduce,void map(LongWritable key,Text value,OutputCollector output,Reporter reporter)String line=value.toString();StringTokenizer t=new StringTokenizer(line);wh

26、ile(t.hasMoreTokens()word.set(t.nextToken();output.collect(word,one);,78,Map函数,void reduce(Text key,Iterator values,OutputCollector output,Reporter reporter)int sum=0;while(values.hasNext()sum+=value.next().get();output.collect(key,new IntWritable(sum);,79,Reduce函数,重写Map/Reduce函数设置Job属性打包程序并向JobTrac

27、ker提交监控程序进度得到最终结果,80,程序运行,日志分析排序搜索广告计算,广告优化、分析,点击流分析,链接分析搜索关键字进行内容分类搜索引擎,创建索引word 计数,统计值计算,统计数据,过滤,分析,查询垃圾数据分析数据分析机器学习数据挖掘大规模图像转换(纽约时报使用Hadoop 和EC2在36个小时内将4TB的TIFF图像包括405K大TIFF图像,3.3M SGML文章和405K XML文件 转换为800K适合在Web上使用的PNG图像。),81,MapReduce的应用,习题1:基本操作上传文件到HDFS查看/设置文件的备份数删除文件、文件夹习题2:查看文件查看文件状态查看文件内容习题3:使用Java API读取文件内容,82,练习一:使用Hadoop HDFS,习题1:基本操作运行示例代码wordcount查看任务结果杀死任务习题2:查看任务状态命令行查看web页面查看,83,练习二:maprduce,习题3:阅读理解wordcount代码习题4:编写MapReduce逻辑:分布式Grep习题5:编写MapReduce逻辑:Join,84,练习二:maprduce,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号