网站备案资料下载,企业所得税分录,网站设计风格,河北seo网络推广小肥柴的Hadoop之旅 1.2 Hadoop概述 目录1.2 Hadoop概述1.2.1 回归问题1.2.2 Google的三篇论文1.2.3 Hadoop的诞生过程1.2.4 Hadoop特点简介 参考文献和资料 ) 目录
1.2 Hadoop概述
1.2.1 回归问题
通过前一篇帖子的介绍#xff0c;特别是问题思考部分的说明#xff0c;我… 小肥柴的Hadoop之旅 1.2 Hadoop概述 目录1.2 Hadoop概述1.2.1 回归问题1.2.2 Google的三篇论文1.2.3 Hadoop的诞生过程1.2.4 Hadoop特点简介 参考文献和资料 ) 目录
1.2 Hadoop概述
1.2.1 回归问题
通过前一篇帖子的介绍特别是问题思考部分的说明我们大致能够感受到为何需要新的技术体系来解决大数据问题接下来咱们继续梳理细节。 step_0 传统方案既贵又搞不定大数据问题。 1传统数据的处理模式用户集中式系统关系型数据库 优点是架构相对简单但缺陷也十分明显 1集中式的存储集中式的计算中心系统的工作十分繁忙。 2随着数据和业务的不断增长往往需要购置更高配置的设备来满足这些需求。 关键在于高配置的机器好贵的配套设施好贵的维护人工好贵的
正如《潜伏》中的名角“谢若林”的金句很多事情“嘴上全是主义那心里都是生意”
诚然从技术的角度讨论大数据问题那就是一套一套的理论容易把人绕的云里雾里的实际上从资本的角度看待这个问题非常清晰如何花5块钱把10块钱的事情给办咯而且还给办得舒坦。 step_1 鸡贼的Google工程师们降成本 1不使用超级计算机。 2不使用昂贵的集中存储。 3甚至大量使用普通的pc做服务器提供有冗余的集群服务。
即靠堆大量的、廉价的低性能设备去完成原来必须依靠昂贵高性能设备才能完成的计算任务。
这点非常像《星际争霸》或者《魔兽争霸》里爆低级兵rush的战术配上高端的操作一样能rush成功各种软件设计譬如Hadoop这一套生态下面盗个图 step_2 回顾上贴讨论的内容海量数据的存储和计算大数据的核心任务考虑到相关周边问题就能和google工程师们的想法对上了。 1分布式的文件存储 GFSGoogle File System分布式文件系统。 2分布式的数据库 BigTable基于GFS的数据存储系统。 3分布式计算框架 MapReduce分布式计算框架。
但凡你打开一篇网上系列教程或者一本教材必然会提及以上三个术语理解了之前我们讨论的思路和内容它们就不再是冷冰冰的概念了。
1.2.2 Google的三篇论文
要了解Hadoop的核心组件就不得不从google的3篇论文开讲咱们也不免俗套但在讨论前读者需要具备一定的linux/操作系统/分布式基础知识否则跟听天书没什么区别。此处挺直腰杆谴责一下那些前置课程老师上的水学生学得拉…
1第一篇 The Google File System 2003核心思想 1设备挂掉是需要应对的常态 2文件数据体量大 3绝大部分文件的修改是采用在文件尾部追加数据而不是覆盖原有数据的方式 4应用程序和文件系统 API 的协同设计提高了整个系统的灵活性。
跟着下面这张核心原理图体会一下假定数据是分布式存储的等学完HDFS再回头看这个图会有更深的理解 1client向master查询chunk index的元数据handle和replica location根据chunksizeclient可以计算出chunk index。 2client用元数据meta直接指向chunkserver要数据其中 chunk server 是真正存储数据的服务器以下可以简称为CS。 3GFS client 使用非POSIX接口交互仅缓存meta不缓存data。 4主节点master的内存中有元数据 i. namespace of file and chunk文件和数据块的命名空间方便索引。 ii. mapping files to chunks文件被拆分为数据块的映射方式。 iii. replica location 副本位置通过定期与CS通信获得。 vi. operation log记录改动元数据的操作且namespace 和mapping会定期更新并log化后存储在本地。 v. 数据按照chunk存储有linux的FS本身的buffer cache做缓存处理不需要额外缓存机制。
【注】第v点在论文中还有专门的讨论本质就是为了简化设计。 以上翻译版本请读者自助
第二篇MapReduce: Simplified Data Processing on Large Clusters2004核心思想 1MapReduce 是一个编程模型也是一个处理和生成超大数据集的算法模型的相关实现。 1用户首先创建一个 Map 函数处理一个基于 key/value pair 的数据集合输出中间的基于 key/value pair 的数据集合 2然后再创建一个 Reduce 函数用来合并所有的具有相同中间 key 值的中间 value 值。
2MapReduce 架构的程序能够在大量的普通配置的计算机上实现并行化处理。
3大致执行过程 1通过将 Map 调用的输入数据自动分割为 M 个数据片段的集合Map 调用被分布到多台机器上执行。 2输入的数据片段能够在不同的机器上并行处理。使用分区函数将 Map 调用产生的中间 key 值分成 R 个不同分区例如hash(key) mod RReduce 调用也被分布到多台机器上执行分区数量R和分区函数由用户来指定。
【注】以上3点保证了计算模型的通用性模式化编程能允许没有并行计算和分布式处理系统开发经验的程序员能够有效利用分布式系统的丰富资源去完成数据分析与计算任务。
两句话总结分而治之 计算向数据移动其中分治是常规策略但“计算向数据移动”确实是一个当年较为新颖的想法或许它不是第一次被提出但确在Hadoop上实现并得到不错的效果。
配两张图方便大家理解上面的文字盗图
第三篇Bigtable: A Distributed Storage System for Structured Data2006【注】这块内容其实水很深需要花一定的时间在实践中慢慢去理解毕竟会有一门专门的课程《分布式数据库》去讨论整套理论体系和技术栈。
核心思想 1不同于传统的关系型数据库采用行式存储Bigtable采用了列式存储模式且是Schema Less的即“无预定数据模式”给与用户更多的自定义权利让数据存储更加灵活自由。
2若采用这种方式存储数据那么原来的K-V形式要做一些改动 1Key Row key Column key Timestamp 2Value都被存储为String形式 3时间戳Timestamp可以帮助维护历史版本信息 3相关术语 1TabletBigtable 数据分布和负载均衡的基本单位与子表table相关 2Column Key 与 Column Family 1 Column Key 一般都表示一种数据类型Column Key 的集合称作 Column Family(列族)。 2 存储在同一 Column Family 下的数据属于同一种类型Column Family 下的数据被压缩在一起保存。 3 Column Family 是 access control访问控制、disk and memory accounting磁盘和内存计算的基本单元。
【注】以上内容涉及到分区分表细节将在HBase中详细讲解。
4使用列式存储本质就是方便Range分区。Range 分区能够很好的保证数据在底层存储上与 Row Key 的顺序是一致的方便排序对 Scan 类型查询比较友好。 1 优点利用Row Key的局部性群组能够提升查询效率。 2 缺陷对用户 Row Key 的设计提出了非常高的要求、容易导致数据不均匀。
5BigTable的本质需求就是为了适应大数据分布式场景下如何正确有效的管理数据库超级大表的问题 超级大表 -- 大表 -- 小表– 小小表 对应的两个子问题是逻辑结构分区分表列式存储要如何设计 物理映射基于GFS数据库最终还是要落盘的要如何实现
1.2.3 Hadoop的诞生过程 step_0 明确Hadoop是什么 Hadoop根据是基于Google三篇论文实现的一种分布式系统基础 Google GFS、MapReduce、Bigtable Hadoop HDFS、MapReduce、HBase
三句话 1Hadoop是Apache基金会的开源项目本课程仅讨论Apache开源版本 2主要任务是解决 海量数据的存储 和海量数据的分析计算 问题 3广义上Hadoop其实是指一个软件生态圈 对咱们入门学习Hadoop其实就是学一个软件生态中最核心最基础的一部分而已具体参考链接[1]。 step_1 发展历程看看即可 1Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。 2Hadoop源自始于2002年的Apache Nutch项目一个开源的网络搜索引擎并且也是Lucene项目的一部分。 32004年Nutch项目也模仿GFS开发了自己的分布式文件系统NDFSNutch Distributed File System也就是HDFS的前身。 42005年Nutch开源实现了谷歌的MapReduce2003 GFS, 2004 MapReduce。 52006年2月Nutch中的NFS和MapReduce开始独立出来成为Lucene项目的一个子项目称为Hadoop同时Doug Cutting加盟雅虎。 62008年1月Hadoop正式成为Apache顶级项目Hadoop也逐渐开始被雅虎之外的其他公司使用。 72008年4月Hadoop打破世界纪录成为最快排序1TB数据的系统它采用一个由910个节点构成的集群进行运算排序时间只用了209秒。 82009年5月Hadoop更是把1TB数据排序时间缩短到62秒。 9Hadoop从此名声大震迅速发展成为大数据时代最具影响力的开源分布式开发平台并成为事实上的大数据处理标准。 step_2 技术演变 主要分为1.x、2.x和3.x时代具体细节参考官网等讲完MapReduce之后再回头看这个问题基本不是问题没有必要强行记忆。
1.2.4 Hadoop特点简介
简单了解即可后续讨论的内容会反复设计这些特点。
1优势4高 1高可靠性 底层维护多个数据副本及时某个计算元素或者存储出现 故障也不会丢失数据。 2高扩展性在集群中分配数据方便的扩展节点。 3高效性在MapReduce思想下Hadoop并行工作加快任务处理速度。 4高容错性若任务失败能够自动重新分配。
2适合场景大数据分析、离线分析
3不适合场景少量数据、复杂数据、在线分析
4最痛苦的事情海量的小文件数据…
参考文献和资料
[1] 国内外企业在用的大数据技术架构 [2] The Google File System [3] MapReduce: Simplified Data Processing on Large Clusters [4] Bigtable: A Distributed Storage System for Structured Data