(学习)模块一:Hadoop大数据原理与架构

《从0开始学习大数据》笔记


1. 移动计算

(1)移动计算 --- 大规模数据的计算处理问题

        传统软件计算处理模型为:输入 --- 计算 --- 输出

        但这种方法不能满足大数据时代的计算要求(PB级数据计算)

        解决PB级数据计算的解决方法遵循了“分布式架构思路” :采用分布式集群的解决方案,用数千台或上万台计算机构建大数据计算处理集群,利用更多的带宽、内存空间、磁盘容量、CPU核心数去计算处理。        

        大数据计算处理通常针对于网站的存量数据,即为全部用户在一段时间内请求产生的数据。这种问题的解决方案即为“移动计算”

        移动计算:将程序分发到数据所在地进行计算,而不用将所有数据输入到程序 ,且移动计算比移动数据更划算

        移动计算的实现方法


2. 水平伸缩&垂直伸缩 --- 大规模数据的存储问题

    (1)核心问题:

            i. 数据存储容量问题

            ii. 数据读写速度问题

            iii. 数据可靠性问题

   (2)单机时代的解决方案: RAID --- 独立磁盘冗余阵列 --- 将多块普通磁盘组成阵列,共同对外提供服务

        i. 数据存储容量问题: RAID用N块磁盘构成存储阵列,RAID5中,数据可存储在N-1块磁盘中,存储空间则扩大了N-1倍

        ii. 数据读写速度问题:RAID根据使用的磁盘数量,将待写入数据分为多片,并发进行写入和读取。但寻址时间并未得到提升,因为寻址时间是延迟的主要原因

        iii. 数据可靠性问题: 由于数据有冗余存储或存储校验信息,故可通过其他磁盘上的数据和校验数据将丢失的数据进行还原


    (3)水平伸缩与垂直伸缩:

            a. 水平伸缩 --- 采用分布式系统 --- 无限 --- RAID HDFS

            b. 垂直伸缩 --- 升级计算机 --- 有限


3. HDFS --- Hadoop分布式文件系统

    (1)根据RAID的原理,设计HDFS:在一个大规模分布式服务器集群上,及群众所有服务器磁盘供HDFS使用,是的整个HDFS的存储空间可达PB级

    (2)HDFS关键组件:

            a. DataNode:负责文件的存储和读写操作。HDFS将文件分割为多个block,每个DataNode存储一部分block,是的文件分布存储在整个HDFS服务器集群中。client可以并行对这些block进行访问,从而可以在服务器集群规模上实现数据并行访问,提高访问速度。

            b. NameNode:负责整个分布式文件系统的元数据管理(文件路径名、数据块ID、存储位置信息等)。

注:为保证数据的高可用,会将数据块复制为多份(Default:3份),并将多份相同数据块存储在不同的服务器上,甚至不同的机架上。当出现磁盘损坏、服务器宕机等故障时,客户端会查询备份数据块进行访问。

    (3)架构图:

(4)HDFS高可用设计:

        a. 数据存储故障容错 --- 对于存储在DataNode上的数据块,计算并存储校验和(checkSum),在读取数据的时候,重新计算读取出来的数据的校验和,如果不正确则抛出异常,捕捉到异常后则到其他DataNode上读取备份数据。

        b. 磁盘故障容错 --- 如果DataNode检测到本机某块磁盘损坏,则将该磁盘上的blockID报告给NameNode,NameNode检查哪里有备份,然后通知相应的DataNode将对应的数据块复制到其他server上,以保证数据块的被分数满足要求。

        c. DataNode 故障容错 --- DataNode利用心跳机制和NameNode保持通信。若DataNode超时未发送心跳,则NameNode认为该DataNode宕机失效,并立即查找该DataNode上的数据块的信息,通知其余有这些数据块的服务器再复制一份数据块到其他服务器,保证HDFS存储的数据块被分数符合用户设置的数目,即使再出现服务器宕机,也不会丢失数据。

        d. NameNode 故障容错 --- 采用主从热备的方式提供高可用服务。

            常用三种策略:

            i. 冗余备份(程序至少部署到两台服务器,实现异地多活)

            ii. 失效转移(将访问请求转移到备份程序或服务器上,但需注意失效鉴定)

            iii. 限流降级(计算资源有限,无法处理大量请求时,拒绝部分请求,关闭部分功能)


4. MapReduce --- 编程模型 + 计算框架

    MapReduce编程模型:

eg: 统计词频的MapReduce:

(1)map:将一行文本的单词提取出来,针对每个单词输出一个<word, 1>

(2)合并:将相同word放在一起,形成:<word, <1,1,1,1,1>>

(3)reduce:将集合中的1求和,再讲word和sum组成一个<key, value>对,从而获得词频总和 ----> <word, sum>


MapReduce计算框架:

为使上述的编程模型在分布式环境中运行,并处理大规模数据,则需一个计算框架可调度执行MapReduce程序,该计算框架也成为MapReduce

(1)两个关键问题:

        a. 如何为每个数据块分配一个Map计算任务

        b. 如何将处于不同服务器的<key, value>中的相同的key聚合在一起发送给reduce处理

(2)MapReduce的作业启动和运行机制

        a. 大数据应用进程:

            i. MapReduce的启动入口,由用户启动

            ii. 制定Map和reduce类、输入输出文件路径等,提交作业给Hadoop集群的JobTracker进程

        b. JobTracker进程:

            i. 根据要处理的数据的输入量,命令TaskTracker启动相应数量的map和reduce进程任务

            ii. 管理整个作业生命周期的任务调度和监控

            iii. Hadoop集群的常驻进程,全局只有一个

        c. TaskTracker进程:

            i. 负责启动和管理Map进程和Reduce进程

            ii. 通常和HDFS的DataNode进程启动在同一个服务器。集群中大多数服务器同时运行DataNode和TaskTracker进程。

总结:MapReduce的主服务器是JobTracker,从服务器为TaskTracker。

(HDFS主服务器是NameNode,从服务器是DataNode)


架构模式:可重复使用的架构方案。一主多从是大数据领域的最主要的架构模式。主服务器仅一台,掌控全局;从服务器多台,负责具体任务。


MapReduce计算过程:

上述整个过程在程序中,仅需要编写map和reduce函数即可,而不用关心如何分布到集群等问题,因为底层问题皆由MapReduce计算框架完成。


MapReduce数据合并与连接机制 ---- shuffle

分布式计算需要将不同服务器上的相关数据合并到一起进行下一步计算

        每个Map任务计算结果写入本地文件系统,map任务快计算完成的时候,MapReduce计算框架会启动shuffle进程,在map任务进程调用一个partitioner接口,对map产生的每个<key, value>进行reduce分区选择,然后发给对应的reduce进程。

        所以,不管map在哪个服务器节点,相同的key一定会发送给相同的reduce进程,组合成<key, value集合>给reduce执行。

        MapReduce框架默认的Partitioner用key的哈希值对reduce任务数量取模,相同的key一定会落在相同的reduce任务ID上。


5. YARN --- 分布式集群资源调度框架 --- Yet Another Resource Negotiation

    (1)资源管理器 Resource Manager:负责整个集群的资源调度管理

            i. 调度器:资源分配算法。根据client提交的资源申请和当前服务器集群的资源状况进行资源分配

            ii. 应用程序管理器:负责应用程序的提交、监控应用程序运行状态

    (2)节点管理器 Node Manager:负责具体服务器上的资源和任务管理,在集群每一台计算服务器上启动,基本上同HDFS的DataNode一起出现

    

YARN和MapReduce是框架,但是HDFS不是框架,仅为系统。

因为YARN和MapReduce遵循依赖倒转原则。

依赖倒转原则:

高层模块不能依赖底层模块,他们应该共同依赖一个抽象,这个抽象由高层模块定义,由底层模块实现

 1)只要实现了MapReduce的编程接口,并遵循MapReduce编程规范,就可以被MapReduce框架调用,在分布式集群中计算大规模数据

2)只要实现yarn的接口规范,就可以被yarn调度管理,统一安排服务器资源

3)HDFS的使用时直接调用HDFS提供的api接口,HDFS作为底层模块被直接依赖


              

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342