大数据培训PPT-hadoop

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

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

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

资源描述

2020/2/9HADOOP生态圈Hadoop提供了一个可靠的共享存储和分析系统。核心功能:√HDFS实现分布式存储√MapReduce实现并行分析处理。培训目的了解Hadoop背景深入HDFS,掌握基本操作深入MapReduce原理,熟悉M/R的开发熟悉Hadoop运维2020/2/9Hadoop是什么?一个分布式文件系统和并行执行环境让用户便捷地处理海量数据Apache软件基金会下面的一个开源项目Hadoop的由来Master/chunkserverGoogle的核心技术分布式基础设施:GFS、Chubby和ProtocolBuffer。分布式大规模数据处理:MapReduce和Sawzall。分布式数据库技术:BigTable和数据库Sharding。数据中心优化技术:数据中心高温化、12V电池和服务器整合。分布式基础设施GFS由于搜索引擎需要处理海量的数据,所以Google的两位创始人LarryPage和SergeyBrin在创业初期设计一套名为BigFiles的文件系统,而GFS(全称为GoogleFileSystem)这套分布式文件系统则是BigFiles的延续。2020/2/9GFS的架构图2020/2/9GFS的架构图GFS的架构Master节点:主要存储与数据文件相关的元数据,而不是Chunk(数据块)。元数据包括一个能将64位标签映射到数据块的位置及其组成文件的表格,数据块副本位置和哪个进程正在读写特定的数据块等。还有Master节点会周期性地接收从每个Chunk节点来的更新(Heart-beat)来让元数据保持最新状态。Chunk节点:顾名思义,肯定用来存储Chunk,数据文件通过被分割为每个默认大小为64MB的Chunk的方式存储,而且每个Chunk有唯一一个64位标签,并且每个Chunk都会在整个分布式系统被复制多次,默认为3次。GFS设计上主要有八个特点大文件和大数据块:数据文件的大小普遍在GB级别,而且其每个数据块默认大小为64MB,这样做的好处是减少了元数据的大小,能使Master节点能够非常方便地将元数据放置在内存中以提升访问效率。操作以添加为主:因为文件很少被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大和随机读写慢的特点。支持容错:首先,虽然当时为了设计方便,采用了单Master的方案,但是整个系统会保证每个Master都会有其相对应的复制品,以便于在Master节点出现问题时进行切换。其次,在Chunk层,GFS已经在设计上将节点失败视为常态,所以能非常好地处理Chunk节点失效的问题。高吞吐量:虽然其单个节点的性能无论是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。保护数据:首先,文件被分割成固定尺寸的数据块以便于保存,而且每个数据块都会被系统复制三份。扩展能力强:因为元数据偏小,使得一个Master节点能控制上千个存数据的Chunk节点。支持压缩:对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近90%。用户空间:虽然在用户空间运行在运行效率方面稍差,但是更便于开发和测试,还有能更好利用Linux的自带的一些POSIXAPI。分布式海量数据处理MapReduce在Google数据中心会有大规模数据需要处理,比如被网络爬虫(WebCrawler)抓取的大量网页等。由于这些数据很多都是PB级别,导致处理工作不得不尽可能的并行化,而Google为了解决这个问题,引入了MapReduce这个编程模型,MapReduce是源自函数式语言,主要通过Map(映射)和Reduce(化简)这两个步骤来并行处理大规模的数据集。Map会先对由很多独立元素组成的逻辑列表中的每一个元素进行指定的操作,且原始列表不会被更改,会创建多个新的列表来保存Map的处理结果。也就意味着,Map操作是高度并行的。当Map工作完成之后,系统会先对新生成的多个列表进行清理(Shuffle)和排序,之后会这些新创建的列表进行Reduce操作,也就是对一个列表中的元素根据Key值进行适当的合并。2020/2/9Mapreduce架构2020/2/9GoogleVSHadoop2020/2/9为何引入Hadoop分布式文件系统?传统文件系统最大的问题是容量和吞吐量的限制多用户多应用的并行读写是分布式文件系统产生的根源一块硬盘的读写性能,比不上多块硬盘同时读写的性能1HDD=75MB/sec1000HDDs=75GB/sec扩充存储空间的成本低廉可提供冗余备份可以为分布式计算提供基础归结为:(1)硬件发展的趋势(2)大数据的问题(3)并行计算和分布式计算Hadoop组成HadoopCommon:从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为HadoopCommonHDFS:Hadoop分佈式文件系統(DistributedFileSystem)-HDFS(HadoopDistributedFileSystem)MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API2020/2/9HDFS能做什么?存储并管理PB级数据处理非结构化数据注重数据处理的吞吐量(latency不敏感)应用模式为:write-once-read-many存取模式2020/2/9HDFS不适合做什么?存储小文件(不建议使用)大量的随机读(不建议使用)需要对文件的修改(不支持)Hadoop的特点扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。2020/2/9HDFS设计目标(1)基于廉价的普通硬件,可以容忍硬件出错系统中的某一台或几台服务器出现故障的时候,系统仍可用且数据保持完整(2)大数据集(大文件)HDFS适合存储大量文件,总存储量可以达到PB,EB级HDFS适合存储大文件,单个文件大小一般在百MB级之上文件数目适中(3)简单的一致性模型HDFS应用程序需要一次写入,多次读取一个文件的访问模式支持追加(append)操作,但无法更改已写入数据(4)顺序的数据流访问HDFS适合用于处理批量数据,而不适合用于随机定位访问(5)侧重高吞吐量的数据访问,可以容忍数据访问的高延迟(6)为把“计算”移动到“数据”提供基础和便利2020/2/9Hdfs的基本概念和实现原理块元数据NamenodeDatanode客户端数据完整性校验2020/2/9块(Block)的概念在传统的块存储介质中,块是读写的最小数据单位(扇区)。传统文件系统基于存储块进行操作。为了节省文件分配表空间,会对物理存储块进行整合,一般大小为4096字节HDFS也使用了块的概念,但是默认大小设为64M字节可针对每个文件配置,由客户端指定每个块有一个自己的全局IDHDFS将一个文件分为一个或数个块来存储每个块是一个独立的存储单位以块为单位在集群服务器上分配存储与传统文件系统不同的是,如果实际数据没有达到块大小,则并不实际占用磁盘空间如果一个文件是200M,则它会被分为4个块:64+64+64+82020/2/9使用块的好处当一个文件大于集群中任意一个磁盘的时候,文件系统可以充分利用集群中所有的磁盘管理块使底层的存储子系统相对简单块更加适合备份,从而为容错和高可用性的实现带来方便2020/2/9Hdfs的元数据元数据包括(1)文件系统目录树信息文件名,目录名文件和目录的从属关系文件和目录的大小,创建及最后访问时间权限文件和块的对应关系文件由哪些块组成(1)块的存放位置机器名,块IDHDFS对元数据和实际数据采取分别存储的方法元数据存储在一台指定的服务器上(NameNode)实际数据储存在集群的其他机器的本地文件系统中(DataNode)Hadoop集群服务分布Hadoop集群服务分布26HDFS系统架构27HDFS主要组件功能2020/2/9NameNodeNamenode是一个中心服务器,单一节点(简化系统的设计和实现)。负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。副本存放在那些DataNode上由NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延。Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。2020/2/9元数据的持久化NameNode里使用两个非常重要的本地文件来保存元数据信息:•fsimagefsimage里保存了文件系统目录树信息fsimage里保存了文件和块的对应关系•editsedits保存文件系统的更改记录(journal)当客户端对文件进行写操作(包括新建或移动)的时候,操作首先记入edits,成功后才会更改内存中的数据并不会立刻更改硬盘上的fsimage块的位置信息并不做持久化2020/2/9DataNode一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度、块数据的校验和、以及时间戳DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode下达给DataNode的命令。如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。2020/2/9Hdfs客户端需要访问HDFS文件服务的用户或应用命令行客户端同一个Hadoop安装包API客户端Java库2020/2/9HDFS关键运行机制--保障可靠性的措施一个名字节点和多个数据节点数据复制(冗余机制)--存放的位置(机架感知策略)故障检测--数据节点心跳包(检测是否宕机)块报告(安全模式下检测)数据完整性检测(校验和比较)--名字节点(日志文件,镜像文件)空间回收机制2020/2/9数据完整性校验从某个Datanode获取的数据块有可能是损坏的,损坏可能是由Datanode的存储设备错误、网络错误或者软件bug造成的。2020/2/9HDFS如何写文件?HDFS数据块(Block)写入加载准备阶段数据块写入集群并打通同步通道数据块载入成功大文件多数据块写入集群步骤:2020/2/9HDFS数据块(Block)写入加载准备阶段规则:每块数据3份拷贝,总有两份存在同一个机架上,另外一份则必须放到另一个机架上。1)由名称节点Rackwareness列表确定第一个DataNode1,打开TCP协议并通知其准备接收数据。2)再由DataNode1将信息传达到DataNode5,接着DataNode5传达到DataNode6,确保已经准备就绪。3)最终,Client接收到DataNode1回传的Ready消息,至此Client才真正的准备在集群中加载数据块。2020/2/9数据块写入集群并打通同步通道当数据块写入集群后,3个(当然数据节点个数参照上文的设置)数据节点将打开一个同步通

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

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

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

×
保存成功