从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

  • 时间:
  • 浏览:2
  • 来源:5分排列3APP下载_5分排列3APP官方

    好的,如上图所示,朋友还有益于看一遍,淘宝的海量数据产品技术架构,分为以下3个层次,从上至下来看,它们分别是:数据源,计算层,存储层,查询层和产品层。朋友来一一了解这五层:

    我再给出一副图,否是对上文所说的hadoop框架及其组成次要做个总结,如下图所示,便是hadoop的内部内部结构形状,朋友还有益于看一遍,海量的数据交给hadoop出理 后,在hadoop的内部内部结构中,正如上文所述:hadoop提供有有一3个分布式文件系统(HDFS)及分布式数据库(Hbase)用来存储或部署到各个计算点上,最终在内部内部结构采取mapreduce的模式对其数据进行出理 ,有已经 输出出理 结果:

    ok,你还有益于再简单看看下副图,整幅图是有关hadoop的作业调优参数及原理,图的左边是MapTask运行示意图,右边是ReduceTask运行示意图:

    相信,看一遍本博客内其它文章的细心读者,定会发现,图2-1最初见于本博客内的此篇文章:从几幅架构图中偷得半点海量数据出理 经验之上,一起,此图2-1最初发表于《线程池员》8月刊,作者:朋春。

感觉你是把有有一3个东西混在一起了。不过这有有一3个就有挺有价值的东西,机会说数据魔方的架构比Hadoop机会更重要一点,基本上大的互联网公司就有选则越来越做。Null对象的缓存保留五分钟暂且会有好的结果吧,机会Null对象就有不得劲大,数据的更新和插入过多也还有益于考虑实时维护。

    前面说了,hadoop是有有一3个框架,有有一3个哪几种样的框架呢?Hadoop 是有有一3个实现了MapReduce 计算模型的开源分布式并行编程框架,线程池员还有益于借助Hadoop 编写线程池,将所编写的线程池运行于计算机机群上,从而实现对海量数据的出理 。

         想拿下此文,读者还要越来越明确以下几点,以作为阅读后续内容的基础知识储备:

    缓存系统往往有有有一3个疑问还要面对和考虑:缓存穿透与失效时的雪崩效应。

存储最好的办法是将形状化的数据文件映射为一张数据库表。提供类SQL语言,实现完正的SQL查询功能。还有益于将SQL一句话转换为MapReduce任务运行,十分适合数据仓库的统计分析。

    淘宝选则了MySQL的MyISAM引擎作为底层的数据存储引擎。且为了应对海量数据,朋友设计了分布式MySQL集群的查询代理层-MyFOX。

    1、             Hadoop HDFS是Google GFS存储系统的开源实现,主要应用场景是作为并行计算环境(MapReduce)的基础组件,一起也是BigTable(如HBase、HyperTable)的底层分布式文件系统。HDFS采用master/slave架构。有有一3个HDFS集群是有由有有一3个Namenode和一定数目的Datanode组成。Namenode是有有一3个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是有有一3个节点有有一3个,负责管理节点上它们附带的存储。在内部内部结构,有有一3个文件实在分成有有一3个或多个block,哪几种block存储在Datanode集合里。如下图所示(HDFS体系形状图):

主要特点

基于hadoop的大规模数据出理 系统,王丽兵。

                                                            图2-2 MyFOX的数据查询过程

    MapReduce致力于出理 大规模数据出理 的疑问,有已经 在设计之初就考虑了数据的局部性原理,利用局部性原理将整个疑问分而治之。MapReduce集群由普通PC机构成,为无共享式架构。在出理 已经 ,将数据集分布至各个节点。出理 时,每个节点就近读取本地存储的数据出理 (map),将出理 后的数据进行合并(combine)、排序(shuffle and sort)后再整理(至reduce节点),出理 了大量数据的传输,提高了出理 数率。无共享式架构的从前好处是配合qq克隆好友 (replication)策略,集群还有益于具有良好的容错性,一次要节点的down机对集群的正常工作过多再造成影响。

    在MyFOX的每有有一3个节点中,存放着热节点和冷节点一种节点数据。顾名思义,热节点存放着最新的,被访问频率较高的数据;冷节点,存放着相对而来比较旧的,访问频率比较低的数据。而为了存储这名种节点数据,出于硬件条件和存储成本的考虑,你当然会考虑选则一种不同的硬盘,来存储这名种访问频率不同的节点数据。如下图所示:

    

                                               图2-6 glider的技术架构

glide的技术架构

    Ok,行文至此,看似洋洋洒洒近千里,但若给读者造成阅读上的负担,则就有我本意。接下来的内容,过多再再再引用诸多错综复杂的专业术语,以给读者心里上造成不良影响。

    3、             Hive是基于Hadoop的有有一3个数据仓库工具,出理 能力强有已经 成本低廉。

                                              图2-1 淘宝海量数据产品技术架构

Hadoop一种很笨重,告诉我在数据魔方里否是在扮演实在时数据出理 的角色?还是已经 在做线下的数据分析的?

    HBase是有有一3个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是有有一3个适合于非形状化数据存储的数据库。从前不同的是HBase基于列的而就有基于行的模式。HBase使用和 BigTable非常相同的数据模型。用户存储数据行在有有一3个表里。有有一3个数据行拥有有有一3个可选则的键和任意数量的列,有有一3个或多个列组成有有一3个ColumnFamily,有有一3个Fmaily下的列居于有有一3个HFile中,易于缓存数据。表是疏松的存储的,有已经 用户还有益于给行定义各种不同的列。在HBase中数据按主键排序,一起表按主键划分为多个HRegion,如下图所示(HBase数据表形状图):

淘宝数据魔方技术架构解析,朋春。

    朋友机会知道,Hadoop是Google的MapReduce有有一3个Java实现。MapReduce是一种错综复杂的分布式编程模式,让线程池自动分布到有有一3个由普通机器组成的超大集群上并发执行。Hadoop主要由HDFS、MapReduce和HBase等组成。具体的hadoop的组成如下图:

    在数据魔方中,淘宝设计的缓存过期机制理论还有益于够将各个客户端的数据失效时间均匀地分布在时间轴上,一定程度还有益于够出理 缓存一起失效带来的雪崩效应。

    Ok,接下来,本文的第二次要,咱们以淘宝的数据魔方技术架构为依托,通过介绍淘宝的海量数据产品技术架构,来进一步学习和了解海量数据出理 的经验。

    在此已经 ,有一点还要说明的是:本文下面的内容大就有参考自朋春先生的这篇文章:淘宝数据魔方技术架构解析所写,我当事人所作的工作是对这篇文章的一种解读与关键技术和内容的抽取,以为读者更好的理解淘宝的海量数据产品技术架构。与此一起,还能展示我当事人读此篇的思路与感悟,顺带学习,何乐而不为呢?。

缓存

数据魔方里的缓存穿透,架构,空数据缓存哪几种和Hadoop一点关系都么有,机会是想讲有有一3个Hadoop的具体应用一句话,数据魔方这次要实在没讲清楚的。

                                                          图2-5 Prom查询过程

    Ok,闲话少说。本文从最基本的mapreduce模式,Hadoop框架刚结速谈起,有已经 由每个人的架构引申开来,谈到海量数据出理 ,最后谈谈淘宝的海量数据产品技术架构,以为了兼备浅出与深入之效,最终,希望得到读者的喜欢与支持。谢谢。

    Ok,不过,与本博客内已经 的那篇文章(几幅架构图中偷得半点海量数据出理 经验)不同,本文接下来,要完正阐述你这名架构。我也做了不少准备工作(如把这图2-1打印了下来,一个劲琢磨):

 

Prom

    此外,Hadoop 还提供有有一3个分布式文件系统(HDFS)及分布式数据库(HBase)用来将数据存储或部署到各个计算节点上。什么都,你还有益于大致认为:Hadoop=HDFS(文件系统,数据存储技术相关)+HBase(数据库)+MapReduce(数据出理 )。Hadoop 框架如图2 所示:

    如下图2-1所示,即是淘宝的海量数据产品技术架构,咱们下面要针对你这名架构来一一剖析与解读。

严重不足之处:

基于云计算的海量数据存储模型,侯建等。

    如上图所示,其中map阶段,当map task刚结速运算,并产生里边数据后暂且直接而简单的写入磁盘,它首先利用内存buffer来对机会产生的buffer进行缓存,并在内存buffer中进行一点预排序来优化整个map的性能。而上图右边的reduce阶段则经历了有有一3个阶段,分别Copy->Sort->reduce。朋友能明显的看出,其中的Sort是采用的归并排序,即merge sort。

Hadoop作业调优参数整理及原理,guili。

基于hadoop的海量日志数据出理 ,王小森

采用行存储的最好的办法(SequenceFile)来存储和读取数据。数率低:当要读取数据表某一列数据时还要先取出所有数据有已经 再提取出某一列的数据,数率很低。一起,它还占用较多的磁盘空间。

缓存穿透是指查询有有一3个一定不居于的数据,机会缓存是不命中时被动写的,有已经 出于容错考虑,机会从存储层查越来越数据则不写入缓存,这将由于你这名不居于的数据每次请求就有到存储层去查询,失去了缓存的意义。至于咋样有效地出理 缓存穿透疑问,最常见的则是采用布隆过滤器(你这名东西,在我的此篇文章所含介绍:),将所有机会居于的数据哈希到有有一3个足够大的bitmap中,有有一3个一定不居于的数据会被你这名bitmap拦截掉,从而出理 了对底层存储系统的查询压力。

                                              图2-4 Prom的存储形状

    前面说了,mapreduce是一种模式,一种哪几种模式呢?一种云计算的核心计算模式,一种分布式运算技术,也是错综复杂的分布式编程模式,它主要用于出理 疑问的线程池开发模型,也是开发人员拆解疑问的最好的办法。

    而在数据魔方里,淘宝采用了有有一3个更为简单粗暴的最好的办法,机会有有一3个查询返回的数据为空(不管是数据不居于,还是系统故障),朋友仍然把你这名空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

    除了起到隔离前后端以及异构“表”之间的数据整合的作用之外,glider的另外有有一3个不容忽视的作用便是缓存管理。朋友有一点须了解,在特定的时间段内,朋友认为数据产品中的数据是只读的,这是利用缓存来提高性能的理论基础。

 文章转载自: http://blog.csdn.net/v_july_v/article/details/670407

    接下来,咱们重点来了解第三层-存储层中的MyFox与Prom,然就有稍带分析下glide的技术架构,最后,再了解下缓存。文章即宣布刚结速。

如下图所示,是MySQL的数据查询过程:

从hadoop框架与MapReduce模式中谈海量数据出理

                                                           图2-3 MyFOX节点形状

                                                           图2-7 缓存控制体系

     “热节点”,选则每分钟500转的SAS硬盘,按照有有一3个节点两台机器来计算,单位数据的存储成本约为4.5W/TB。相对应地,“冷数据”朋友选则了每分钟750转的SATA硬盘,单碟还有益于够存放更多的数据,存储成本约为1.6W/TB。

 

    有有一3个MapReduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由 Map任务(task)以完正并行的最好的办法出理 它们。框架会对Map的输出先进行排序,有已经 把结果输入给Reduce任务。通常作业的输入和输出就有被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行机会失败的任务。如下图所示(Hadoop MapReduce出理 流程图):

    借助Hadoop 框架及云计算核心技术MapReduce 来实现数据的计算和存储,有已经 将HDFS 分布式文件系统和HBase 分布式数据库很好的融入到云计算框架中,从而实现云计算的分布式、并行计算和存储,有已经 得以实现很好的出理 大规模数据的能力。

    机会当事人是初次接触这有有一3个东西,文章有任何疑问,欢迎不吝指正。Ok,咱们刚结速吧。

    几周前,当我最初听到,以致已经 初次接触Hadoop与MapReduce这有有一3个东西,我便稍显兴奋,实在它们很是神秘,而神秘的东西常能勾起我的兴趣,在看一遍介绍它们的文章或论文已经 ,实在Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了有有一3个我更加感兴趣一句话题:海量数据出理 。

    尽管我对你这名Hadoop与MapReduce知之甚浅,但我还是想记录当事人的学习过程,说不定,关于你这名东西的学习能督促我最终写成和“经典算法研究系列”一般的一系列文章。

    朋友知道,关系型数据库在朋友现在的工业生产所含着广泛的引用,它包括Oracle,MySQL、DB2、Sybase和SQL Server等等。

    图2-7向朋友展示了数据魔方在缓存控制方面的设计思路。用户的请求中一定是带了缓存控制的“命令”的,这包括URL中的query string,和HTTP头中的“If-None-Match”信息。有已经 ,你这名缓存控制“命令”就有经过层层传递,最终传递到底层存储的异构“表”模块。

机会以上的严重不足,有人(查礼博士)介绍了一种将分布式数据出理 系统中以记录为单位的存储形状变为以列为单位的存储形状,进而减少磁盘访问数量,提高查询出理 性能。从前,机会相同属性值具有相同数据类型和相近的数据形状,以属性值为单位进行压缩存储的压缩比更高,能节省更多的存储空间。如下图所示(行列存储的比较图):

    2、             Hadoop MapReduce是有有一3个使用简易的软件框架,基于它写出来的应用线程池有益于运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的最好的办法并行出理 上TB级别的数据集。

出于文章篇幅的考虑,本文接下来不再过多阐述你这名Prom了。如下面两幅图所示,朋友分别表示的是Prom的存储形状以及Prom查询过程:

    在数据被分割后通过Map 函数的线程池将数据映射成不同的区块,分配给计算机机群出理 达到分布式运算的效果,在通过Reduce 函数的线程池将结果汇整,从而输出开发者还要的结果。

    在你这名层-查询层中,淘宝主已经 基于用里边层隔离前后端的理念而考虑。Glider你这名里边层负责各个异构表之间的数据JOIN和UNION等计算,有已经 负责隔离前端产品和后端存储,提供统一的数据查询服务。

    由此,最近凡是空闲时,便在看“Hadoop”,“MapReduce”“海量数据出理 ”这方面的论文。但在看论文的过程中,总实在哪几种论文就有浅尝辄止,常常看的很不过瘾,一个劲有有一3个东西刚要讲到紧要处,它便刚结速了,你还有益于 好生“愤懑”。

    由上图,朋友还有益于看一遍:

4、             HBase

MyFOX

在上文图2-6中朋友看一遍,glider中居于两层缓存,分别是基于各个异构“表”(datasource)的二级缓存和整合已经 基于独立请求的一级缓存。除此之外,各个异构“表”内部内部结构机会还居于当事人的缓存机制。

      2、缓存失效时的雪崩效应尽管对底层系统的冲击非常可怕。但遗憾的是,你这名疑问目前并越来越很完美的出理 方案。大多数系统设计者考虑用加锁机会队列的最好的办法保证缓存的单线程池(线程池)写,从而出理 失效时大量的并发请求落到底层存储系统上。

    Ok,光说不上图,没用。如下图所示,mapreduce模式的主要思想是将自动分割要执行的疑问(这类 线程池)拆解成map(映射)和reduce(化简)的最好的办法,流程图如下图1所示:

    MapReduce 借鉴了函数式线程池设计语言的设计思想,其软件实现是指定有有一3个Map 函数,把键值对(key/value)映射成新的键值对(key/value),形成一系列里边结果形式的key/value 对,有已经 把它们传给Reduce(规约)函数,把具有相同里边形式key 的value 合并在一起。Map 和Reduce 函数具有一定的关联性。函数描述如表1 所示:

    了解了哪几种是mapreduce,接下来,咱们还有益于来了解实现了mapreduce模式的开源框架—hadoop。

读者点评@xdylxdyl:

结语:写文章是一种学习的过程。尊重他人劳动成果,转载请注明出处。谢谢。July、2011/8/20。完。

本文参考:

    在里边的本文的第一次要中,朋友机会对mapreduce模式及hadoop框架有了有有一3个深入而全面的了解。不过,机会有有一3个东西,机会有有一3个概念不倒进实际应用中去,越来越你对你这名理念永远已经 等待歌曲在理论之内,无法向实践迈进。

    什么都,你现在,知道了哪几种是mapreduce,哪几种是hadoop,以及这两者之间最简单的联系,而本文的主旨即是,一句话概括:在hadoop的框架上采取mapreduce的模式出理 海量数据。下面,咱们还有益于依次深入学习和了解mapreduce和hadoop这有有一3个东西了。

We want to count all the books in the library. You count up shelf #1, I count up shelf #2. That's map. The more people we get, the faster it goes. Now we get together and add our individual counts. That's reduce。