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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1本讲内容原理①Hadoop基本架构②HDFS文件系统③MapReduce分布式计算框架实践①安装与配置②编写MapReduce程序介绍①背景②Hadoop起源③成功的案例2你发现:目前的硬盘容量1T,速度100MB/s。你发现:要把现在的硬盘数据刷一遍,要两个多小时,太可怕了。设想:硬盘读取速度永远满足要求!而Hadoop就是一个并行处理海量数据的工具。我们只能采用并行计算一个分布式文件系统和并行执行环境(框架)让用户便捷地处理海量数据Apache软件基金会下面的一个开源项目目前Yahoo!是最主要的贡献者4Hadoop是什么?ApacheLucene开源的高性能全文检索工具包ApacheNutch开源的Web搜索引擎Google三大论文MapReduce/GFS/BigTableApacheHadoop大规模数据处理5Hadoop起源扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。6Hadoop的特点7Hadoop越来越火据估计,到2015年,全世界一半以上的数据将涉及Hadoop那我们就来看看一些成功的案例:不是可以解决数据中心和数据管理方面所有难题的灵丹妙药雅虎北京全球软件研发中心IBMFacebookAmazonYahoo!中国移动研究院英特尔研究院百度、腾讯、新浪、搜狐、淘宝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示例TheweatherisgoodThisguyisagoodmanTodayisgoodGoodmanisgoodthe1weather1is1good1today1is1good1this1guy1is1a1good1man1good1man1is1good1a1good1good1good1good1good1man1man1the1weather1today1guy1is1is1is1is1this1a1good5guy1is4man2the1this1today1weather1mapping任务平等,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和sortPartitons:每一个reduce节点会分派到中间输出的键集合中的一个不

1 / 84
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功