您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > 大数据存储与处理-第三讲84
1本讲内容原理①Hadoop基本架构②HDFS文件系统③MapReduce分布式计算框架实践①安装与配置②编写MapReduce程序介绍①背景②Hadoop起源③成功的案例2你发现:目前的硬盘容量1T,速度100MB/s。你发现:要把现在的硬盘数据刷一遍,要两个多小时,太可怕了。设想:硬盘读取速度永远满足要求!而Hadoop就是一个并行处理海量数据的工具。我们只能采用并行计算一个分布式文件系统和并行执行环境(框架)让用户便捷地处理海量数据Apache软件基金会下面的一个开源项目目前Yahoo!是最主要的贡献者4Hadoop是什么?ApacheLucene开源的高性能全文检索工具包ApacheNutch开源的Web搜索引擎Google三大论文MapReduce/GFS/BigTableApacheHadoop大规模数据处理5Hadoop起源扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。6Hadoop的特点7Hadoop越来越火据估计,到2015年,全世界一半以上的数据将涉及Hadoop那我们就来看看一些成功的案例:不是可以解决数据中心和数据管理方面所有难题的灵丹妙药雅虎北京全球软件研发中心IBMFacebookAmazonYahoo!中国移动研究院英特尔研究院百度、腾讯、新浪、搜狐、淘宝8谁在用Hadoop?YahooHadoop应用揭秘中国移动联通海量上网日志数据9Hadoop应用案例2010年10月时:Yahoo目前有超过38000台服务器,有超过4000个以上的服务器集群,数据总量达到了170PB,每日的数据增量在10TB以上。10YahooHadoop应用揭秘Yahoo的Hadoop应用包含有搜索、日志处理(Analytics,Reporting,Buzz)、用户建模、内容优化,垃圾邮件过滤器以及广告计算等。如何利用Hadoop对海量数据进行优化处理是Yahoo正在致力于工作的内容。以网络分析为例,Yahoo目前有超过100亿个网页,1PB的网页数据内容,2万亿条链接,每日面临这300TB的数据输出。“在应用Hadoop前,实施这一过程我们大概需要1个月的时间,但应用后仅需要1周时间”11YahooHadoop应用揭秘“再以Yahoo搜索为例,我们的服务器上保留有用户三年来的搜索记录,这个数据是由超过10TB的自然语言文本库所组成”,“如果数据重整,我们在应用Hadoop前需要1个月的时间进行处理,而在有了Hadoop后仅仅需要30分钟。”Hadoop也非万能,它采用Java实现,Java的IO处理虽然没有性能瓶颈,但是对于CPU密集型的任务是一个麻烦,因此,有些算法效率不会提高很多。12YahooHadoop应用揭秘中国移动大云在中国移动内部,Hadoop已经成为一个重要的数据挖掘工具,中国移动已经把Hadoop的群用来进行闭环的数据挖掘,和传统算法的数据挖掘性能相比,有很大的提升,而且成本非常低。13中国移动14Hadoop生态系统HDFSMapReduceHivePigHbaseZookeeper15Hadoop基本架构——物理分布的Hadoop集群16Hadoop基本架构——物理部署为以流式数据访问模式存储超大文件而设计的文件系统超大文件指的是几百MB,几百GB,几百TB,甚至几百PB流式数据访问HDFS建立的思想是:一次写入、多次读取模式是最高效的。商用硬件HDFS不需要运行在昂贵并且高可靠的硬件上。17HDFS文件系统——设计目标•硬件错误是常态,因此需要冗余。•程序采用“数据就近”原则分配节点执行。18HDFS文件系统——设计基础与目标存储并管理PB级数据处理非结构化数据注重数据处理的吞吐量(延迟不敏感)应用模式为:write-once-read-many存取模式(无数据一致性问题)19HDFS文件系统——能做什么?存储小文件(不建议使用)大量的随机读(不建议使用)需要对文件的修改(不支持)多用户写入(不支持)20HDFS文件系统不适合做什么?文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等DataNode在本地文件系统存储文件块数据,以及块数据的校验和可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。21HDFS文件系统——文件22HDFS文件系统——文件23HDFS文件系统——文件24HDFS文件系统——主要组件的功能namenodedatanode•存储元数据•存储文件内容•元数据保存在内存中•文件内容保存在磁盘•保存文件,block,datanode之间的映射关系•维护了blockid到datanode本地文件的映射关系Namenode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈25HDFS文件系统——NameNode副本存放在那些DataNode上由NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。26HDFS文件系统——NameNode一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。集群运行中可以安全加入和退出一些机器27HDFS文件系统——DataNode28HDFS文件系统——系统架构一个名字节点和多个数据节点数据复制(冗余机制)存放的位置(机架感知策略)故障检测数据节点心跳包(检测是否宕机)块报告(安全模式下检测)数据完整性检测(校验和比较)名字节点(日志文件,镜像文件)空间回收机制29HDFS文件系统——保障可靠性的措施HDFS如何写文件?WritepacketCreatefileWritepacketWritepacketSendackSendackSendackClosefile客户端联系namenode,在namenode命名空间中创建一个新文件,此时,namenode会检查文件是否存在和客户端是否有权限创建新文件,检查通过,就会创建一条记录。然后客户端写文件时,会取得合适的3个datanodes形成一个管线DataStreamer将数据包流式的传输到管线中第一个datanode,第一个datanode存储数据包并发送的第二个datanode,第二个datanode存储数据包并发送的第三个datanode。当收到管道中所有datanodes的确认信息后对应数据包才会从确认队列中删除。如此反复,直到所有的数据包,都写完,最后向namenode报告写入完成。3132HDFS如何读文件?ReadblockOpenfileClosefileGetblocklocation客户端联系NameNode,得到所有数据块信息,以及数据块对应的所有数据服务器的位置信息尝试从某个数据块对应的一组数据服务器中选出一个,进行连接数据被一个包一个包发送回客户端,等到整个数据块的数据都被读取完了,就会断开此链接,尝试连接下一个数据块对应的数据服务器,整个流程,依次如此反复,直到所有想读的都读取完了为止。Namenode并不实际参与数据传输。33读文件流程冗余备份策略机架策略心跳机制安全模式校验和回收站元数据保护34HDFS的可靠性——回顾3535什么是MapReduce?语言支持:JavaC++(throughpipes)scriptlanguages(throughstreaming)分布式技术框架处理海量数据(1TB)上百/上千CPU实现并行处理简单地实现以上目的移动计算比移动数据更划算36MapReduce设计目的——大规模数据处理自动实现分布式并行计算容错提供状态监控工具模型抽象简洁,程序员易用计算划到大量机器上组件间不允许任意数据共享,避免保保持同步而产生的通信开销,所有在MapReduce上的数据不可变节点间通信只在产生新输出37MapReduce——特性38MapReduce示例TheweatherisgoodThisguyisagoodmanTodayisgoodGoodmanisgoodthe1weather1is1good1today1is1good1this1guy1is1a1good1man1good1man1is1good1a1good1good1good1good1good1man1man1the1weather1today1guy1is1is1is1is1this1a1good5guy1is4man2the1this1today1weather1mapping任务平等,Mapper无特定标识,处理任意输入每个mapper本地进行中间值交换,同键值送到同一个reducer。唯一的结点通信数据传送由平台处理39MapReduce数据流40MapReduce数据流41从Map到Reducer数据整体传输过程输入块InputSplit:文件拆分成块Mapred-default.xml设置块大小输入格式定义了组成mapping阶段的map任务列表,每个任务对应一个输入块。据InputSplit地址分配任务(最大任务数mapred.tasktracker.map.tasks.maximum)42MapReduce数据流——输入每个map任务都有一个用来写入数据的循环内存缓冲区。这个缓冲区默认大小是100M当缓冲区中的数据量达到一定阀值(默认0.8),系统将会启动一个后台进程把缓冲区的数据spill到磁盘,spill过程中,map的输出会继续写入到缓冲区,但如果缓冲区已满,map就会被阻塞直到spill完成。43MapReduce数据流——Map结果输出当map开始产生输出时,并不是简单的写入到磁盘,先是写入到缓冲区,并进行预排序,以提升效率。44MapReduce数据流——shuffle和sort当map开始产生输出时,并不是简单的写入到磁盘,先是写入到缓冲区,并进行预排序,以提升效率。45MapReduce数据流——shuffle和sortPartitons:每一个reduce节点会分派到中间输出的键集合中的一个不
本文标题:大数据存储与处理-第三讲84
链接地址:https://www.777doc.com/doc-26829 .html