您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > hadoop基础知识学习
Hadoop基础学习■Hadoop简介及其家族成员■Hadoop体系结构原理■Hadoop相关技术详细介绍1.1Hadoop简介简介及其家族成员Hadoop——一个分布式系统基础架构名字的由来“这个名字是我孩子给一个棕黄色的大象玩具命名的。”Apache基金会旗下的开源项目是一个能够对大量数据进行分布式处理的软件框架其核心是HadoopDistributedFileSystem(HDFS)和MapReduce并行计算框架它可以轻松的利用比较廉价的硬件计算机资源搭建自己的分布式计算平台目前主要应用于互联网企业,用于数据分析、机器学习、数据挖掘1.2Hadoop家族成员简介-1及其家族成员家族成员•Core也是Common,为Hadoop其它子项目提供常用工具,主要包括FileSystem、RPC和串行化库。•Avro用于数据序列化的系统。•MapReduce是一种编程模型,用于大数据集的并行计算,可以方便编程人员在不了解分布式并行编程的情况下也可以将自己的程序运行在分布式系统上。•HDSF具有高容错性的,通过流的方式访问文件系统中的数据。该系统由数百上千个存储文件的服务器组成。•Chukwa开源的数据收集系统,用于显示、监视和分析数据结果。•Hbase是一个分布式的面向列存储的数据库,与bigtable使用相同的数据模型,一个数据行拥有一个可以选择的键和任意多列,主要用于随机访问和实时读写大数据。1.2Hadoop家族成员简介-2及其家族成员1.2Hadoop家族成员简介-3及其家族成员•Hive建立在Hadoop基础上的数据仓库,支持类似传统SQL的查询语言,提供ETL工具、数据存储管理和大型数据的查询、分析能力。•Pig最大的作用就是对mapreduce算法(框架)实现了一套shell脚本,类似我们通常熟悉的SQL语句,在Pig中称之为PigLatin,在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组(groupby)、关联(Joining),Pig也可以由用户自定义一些函数对数据集进行操作。•ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。■Hadoop简介及其家族成员■Hadoop体系结构原理■Hadoop相关技术详细介绍2.1Hadoop体系结构原理-角色组成-1简介及其家族成员Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,JobTracker,TaskTracker组成。在Master节点的服务器中会执行两套程序:一个是负责安排MapReduce运算层任务的JobTracker,以及负责管理HDFS数据层的NameNode程序。而在Worker节点的服务器中也有两套程序,接受JobTracker指挥,负责执行运算层任务的是TaskTracker程序,与NameNode对应的则是DataNode程序,负责执行数据读写操作以及执行NameNode的副本策略。1、NameNode:是HDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块被存储到哪些数据节点上。它的功能是对内存及I/O进行集中管理。2、DataNode:集群中每个从服务器都运行一个DataNode后台程序,后台程序负责把HDFS数据块读写到本地文件系统。需要读写数据时,由NameNode告诉客户端去哪个DataNode进行具体的读写操作。3、SecondaryNameNode:是一个用来监控HDFS状态的辅助后台程序,如果NameNode发生问题,可以使用SecondaryNameNode作为备用的NameNode。4、JobTracker:后台程序用来连接应用程序与Hadoop,用户应用提交到集群后,由JobTracker决定哪个文件处理哪个task执行,一旦某个task失败,JobTracker会自动开启这个task。5、TaskTracker:负责存储数据的DataNode相结合,位于从节点,负责各自的task。2.1Hadoop体系结构原理-角色组成-2简介及其家族成员2.2Hadoop体系结构原理-HDFS体系结构简介及其家族成员2.2Hadoop体系结构-HDFS处理流程-1介及其家族成员读文件过程1)客户端(client)用FileSystem的open()函数打开文件。2)DistributedFileSystem用RPC调用元数据节点,得到文件的数据块信息。3)对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。4)DistributedFileSystem返回FSDataInputStream给客户端,用来读取数据。5)客户端调用stream的read()函数开始读取数据。DFSInputStream连接保存此文件第一个数据块的最近的数据节点。6)Data从数据节点读到客户端(client),当此数据块读取完毕时,DFSInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。当客户端读取完毕数据的时候,调FSDataInputStream的close函数。在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下一个数据节点。失败的数据节点将被记录,以后不再连接。2.2Hadoop体系结构-HDFS处理流程-2介及其家族成员写文件过程1)客户端调用create()来创建文件,2)DistributedFileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件。元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。DistributedFileSystem返回FSOutputStream,客户端用于写数据。3)客户端开始写入数据,DFSOutputStream将数据分成块,写入dataqueue。4)Dataqueue由DataStreamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。DataStreamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。5)DFSOutputStream为发出去的数据块保存了ackqueue,等待pipeline中的数据节点告知数据已经写入成功。如果数据节点在写入的过程中失败:关闭pipeline,将ackqueue中的数据块放入dataqueue的开始。当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。元数据节点则被通知此数据块是复制块数不足,将来会再创建第三份备份。6)当客户端结束写入数据,则调用stream的close函数。此操作将所有的数据块写入pipeline中的数据节点,并等待ackqueue返回成功。7)最后通知元数据节点写入完毕。思想——分而治之、大事化小MapReduce通过Map(映射)和Reduce(化简)来实现大规模数据(TB级)的并行计算。2.3Hadoop体系结构-MapReduce-1介及其家族成员MapReduce的运作方式就像快递公司一样。物流部门会将发往各地的包裹先运送到各地的物流分站,再由分站派出进行派送;快递员等每个包裹的用户签单后将数据反馈给系统汇总,完成整个快递流程。在这里,每个快递员都会负责配送,所执行的动作大致相同,且只负责少量的包裹,最后由物流公司的系统进行汇总。在MapReduce运算层上,担任Master节点的服务器负责分配运算任务,Master节点上的JobTracker程序会将Map和Reduce程序的执行工作指派给Worker服务器上的TaskTracker程序,由TaskTracker负责执行Map和Reduce工作,并将运算结果回复给Master节点上的JobTracker。开发人员先分析需求所提出问题的解决流程,找出数据可以并发处理的部分(Reduce),也就是那些能够分解为小段的可并行处理的数据,再将这些能够采用并发处理的需求写成Map程序(Map)。2.3Hadoop体系结构-MapReduce-2介及其家族成员2.Hadoop体系结构-Hbase-1家族成员2.Hadoop体系结构-Hbase-2家族成员HBaseClient使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPCZookeeperQuorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题,见下文描述HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的MasterElection机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:1.管理用户对Table的增、删、改、查操作2.管理HRegionServer的负载均衡,调整Region分布3.在RegionSplit后,负责新Region的分配4.在HRegionServer停机后,负责失效HRegionServer上的Regions迁移HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是SortedMemoryBuffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile。2.Hadoop体系结构-Hive家族成员•用户接口主要有三个:CLI,JDBC/ODBC和WebUI•CLI,即Shell命令行•JDBC/ODBC是Hive的JAVA,与使用传统数据库JDBC的方式类似•WebGUI是通过浏览器访问Hive•Hive将元数据存储在数据库中,目前只支持mysql、derby,下一版本会支持更多的数据库。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等•解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行•Hive的数据存储在HDFS中,大部分的查询由MapReduce完成(包含*的查询,比如select*fromtable不会生成MapRedcue任务)2.Hadoop体系结构-Chukwa族成员1.总体而言,chukwa可以用于监控大规模(2000+以上的节点,每天产生数据量在T级别)hadoop集群的整体运行情况并对它们的日志进行分析2.对于集群的用户而言:chukwa展示他们的作业已经运行了多久,占用了多少资源,还有多少资源可用,一个作业是为什么失败了,一个读写操作在哪个节点出了问题.3.对于集群的运维工程师而言:chukwa展示了集群中的硬件错误,集群的性能变化,集群的资源瓶颈在哪里.4.对于集群的
本文标题:hadoop基础知识学习
链接地址:https://www.777doc.com/doc-3873531 .html