Hadoop交流使用Hadoop的动因数据的挑战传统技术的局限新解决方案要满足的新需求Hadoop如何满足新需求数据的挑战当前信息系统需要处理比过去更多的数据-组织正产生海量的数据-数据对组织具有重要价值,不能删除产生海量数据的组织:-互联网公司:如腾讯、淘宝数据达到PB级-电信、银行行业-电力行业(国家电网、南方电网)传统技术的局限单台高性能计算机(小型机)存在处理极限高性能计算(HPC)和网格计算使用消息传递接口(MPI):-编程复杂,需要处理各种分布环境下的异常-高性能计算的方法把作业分配给一个机器集群,这些机器访问共享文件系统(如存储区域网络SAN)。非常适用于以计算密集型为主的作业,但当节点需要访问大数据量(数百GB的数据)时,这会因为网络带宽成为“瓶颈”,导致计算节点闲置下来。新解决方案要满足的新需求系统必须对部分故障提供支持-当出现组件故障时应用程序性能能优雅的降级-系统不会出现整体的故障数据可复原性-如果系统的一个组件发生故障,它的工作负载将分配给系统中正常工作的组件-故障不会导致任何数据的丢失组件的可恢复性-如果系统中一个故障的组件恢复了可正常工作,它可以重新加入到系统中,不需要重启整个系统新解决方案的需求一致性-组件在执行作业期间出现故障,不会影响作业的处理结果可伸缩性-增加系统的负载只会优雅的降低个别作业的性能-整个系统不会发生故障-增加系统的资源可以成比例的提高系统的负载容量新解决方案的需求一致性-组件在执行作业期间出现故障,不会影响作业的处理结果可伸缩性-增加系统的负载只会优雅的降低个别作业的性能-整个系统不会发生故障-增加系统的资源可以成比例的提高系统的负载容量Hadoop如何满足新需求Hadoop机制概述-数据被分割成块进行存贮(通常每块64Mb或128Mb),冗余备份;-MapReduce中的每个Map任务处理相对小的一部分数据(通常是一个块的数据);-master程序把任务分配到多个节点时,尽可能把Map任务分配到它所处理的数据所在的节点上(数据局部性);-应用程序只需关心业务相关的代码编写,无需关心各种分布式相关异常处理。Hadoop如何满足新需求满足高可扩展性-Hadoop把一个大作业分解为多个相对小的任务,分配给多个节点处理,通过增加节点来线性的提高系统的负载容量;-MapReduce的各个任务之间不需要通信(Sharednothing架构),对于大作业增加处理任务的节点可以线性的提高作业的作业处理速度。Hadoop如何满足新需求满足数据一致性、组件可恢复性等容错需求-如果一个节点出现了故障,master会检测到故障并把工作重新分配到系统中别的节点上,重启任务不需要与负责处理其他部分数据的节点进行交互;-如果故障的节点重启并修复了故障,它会自动加回系统中并被分配给新任务;-如果一个节点出现了对任务处理慢的状况,master会在另一个节点上为同一个任务启动另一个执行实例,先完成的哪个实例的结果被使用。Hadoop生态圈Hadoop1.0与hadoop2.0Hadoop主要内核组成分布式存储系统HDFS(HadoopDistributedFileSystem)提供了高可靠性、高扩展性和高吞吐率的数据存储服务资源管理系统YARN(YetAnotherResourceNegotiator)负责集群资源的统一管理和调度分布式计算框架MapReduce具有易于编程、高容错性和高扩展性等优点分布式存储系统HDFSHDFS特点:良好的扩展性高容错性适合PB级以上海量数据的存储基本原理:将文件切分成等大的数据块,存储到多台机器上将数据切分、容错、负载均衡等功能透明化可将HDFS看成一个容量巨大、具有高容错性的磁盘应用场景:海量数据的可靠性存储数据归档分布式存储系统HDFSHDFS的基础架构分布式存储系统HDFS•当文件系统客户端(client)进行写操作时,首先把它记录在修改日志中(editlog)•元数据节点在内存中保存了文件系统的元数据信息。在记录了修改日志后,元数据节点则修改内存中的数据结构。•每次的写操作成功之前,修改日志都会同步(sync)到文件系统。•fsimage文件,也即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint,它是一种序列化的格式,并不能够在硬盘上直接修改。•同数据的机制相似,当元数据节点失败时,则最新checkpoint的元数据信息从fsimage加载到内存中,然后逐一重新执行修改日志中的操作。•从元数据节点就是用来帮助元数据节点将内存中的元数据信息checkpoint到硬盘上的•checkpoint的过程如下:•从元数据节点通知元数据节点生成新的日志文件,以后的日志都写到新的日志文件中。•从元数据节点用httpget从元数据节点获得fsimage文件及旧的日志文件。•从元数据节点将fsimage文件加载到内存中,并执行日志文件中的操作,然后生成新的fsimage文件。•从元数据节点奖新的fsimage文件用httppost传回元数据节点•元数据节点可以将旧的fsimage文件及旧的日志文件,换为新的fsimage文件和新的日志文件(第一步生成的),然后更新fstime文件,写入此次checkpoint的时间。•这样元数据节点中的fsimage文件保存了最新的checkpoint的元数据信息,日志文件也重新开始,不会变的很大了。分布式存储系统HDFS分布式存储系统HDFS分布式存储系统HDFSHdfs文件写入名称节点NameNode数据节点DataNode数据节点DataNode数据节点DataNode1打开2获取数据块的位置3读取4读取5读取6关闭HDFS客户端分布式计算FSDataInputStream客户端JVM分布式存储系统HDFSHdfs文件读取分布式存储系统HDFSHDFS物理拓扑与副本放置策略资源管理系统YARNYARN是什么负责集群的资源管理和调度使得多种计算框架可以运行在一个集群中YARN的特点良好的扩展性、高可用性对多种类型的应用程序进行统一管理和调度自带了多种多用户调度器,适合共享集群环资源管理系统YARNYarn的架构:资源管理系统YARN资源管理系统YARNMapReduce分布式计算框HadoopMap/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。MapReduce基础出发点是很易懂。它由称为map和reduce的两部分用户程序组成,然后利用框架在计算机集群上面根据需求运行多个程序实例来处理各个子任务,然后再对结果进行归并。其主要的设计目的:易于编程程序员只需要关注应用程序逻辑实现,不需要关注分布式的细节,如:数据分片,传输,容错等良好的扩展性可以通过添加节点达到线性扩展的目的高度容错Hadoop通过计算迁移或者数据迁移等策略提高集群的可用性和容错性MapReduce分布式计算框典型架构图:MapReduce流程这是一个统计单词数的流程,Hadoop将输入数据切成若干个分片,并将每个split交给一个maptask处理,map任务生成简单的键值对,数据通过combine(合并key值,可选过程),shuffle(partion,sort,merge)将相同key值得数据合并,排序并通过key值分成若干个分片形成reduce的输入,并有reduce统计出结果,输出到文件。Hadoop发行版三大主流Hadoop厂商我们的选择--ClouderaCloudera生态圈提供:存储、监控、资源管理、批处理、交互式SQL接口,交互式查询接口、元数据管理以及机器学习等丰富的服务组件。由于Hadoop深受客户欢迎,许多公司都推出了各自版本的Hadoop,在Hadoop生态系统中,规模最大、知名度最高的公司则是Cloudera。选择Cloudera的原因:1、Cloudera在Hadoop厂商中规模最大、知名度最高;2、Cloudera社区活跃、文档教程丰富;3、Cloudera提供丰富的组件,并提供完善的集成封装、日志与监控,便于使用;4、Cloudera一半以上的研发项目贡献于Apache,并且是Hadoop很多项目的直接参与人;5、Cloudera提供免费版本,并且不限制节点。ClouderaEcosystemThankYou