浅谈大数据之HDFS(1)

先从HDFS1.0开始说起吧

HDFS1.0由三部分组成,分别是NameNode,SecondaryNameNode,DataNode,如图所示


HDFS组件

下面针对几个组件详细讲解一下

NameNode

1.管理着文件系统命名空间,维护着文件系统树及树中的所有文件和目录

2.存在于主节点上,存储一些元数据信息

    1)元数据存储在内存中,目的是为了快速响应请求,提高性能,但是也有一定的风险:关机重启时,数据丢失

    2)既然数据有丢失风险,那么肯定要做好一定的防范措施,Hadoop1.0采取持久化的方式(fsimage)进行规避,在NameNode中存放元信息的文件是 fsimage。在系统运行期间所有对元信息的操作都保存在内存中并被持久化到另一个文件edits中。并且edits文件和fsimage文件会被SecondaryNameNode周期性的合并,也就是说:

        a)fsimage是元数据的镜像文件

        b)  持久化的过程是由SNN模块完成的,备份的过程是从内存 -> edit logs(磁盘上) -> fsimage,恢复是反向的过程

        c)  NameNode和edit logs的关系

            1)NameNode需要把每一次改动都存在edit log中,整个过程Datanode与Namenode之间的心跳机制主动推进的

            2)edit在NameNode节点上,edit的信息都是来自于当前机器的内存信息(NameNode的元数据)


NameNode和edit logs的关系

3.数据映射关系

        1)已知路径path(HDFS上的)-> blockid list列表

        2)blockid数据块 -> dataNode节点地址

        这样子来个文件名就知道被哪些机器(dataNode)存储

4.版本问题

    1)  NameNode只有一个,所以有单点故障的风险。(1.0的时候还没有一个比较好的集群方案,比如没有zookeeper)

    2)不适合存储太多小文件,小文件会导致block太多,内存可能会放不下

    3)适合存储大文件,但是如果是大压缩文件对后续的MapReduce的处理无法分片

SecondNamenode

1.SecondNameNode并不是NameNode的备份,用来保存HDFS的元数据信息,比如命名空间信息、块信息等,由于这些信息是在内存的,SecondNameNode是为了考虑持久化到磁盘。SNN存在的意义就是:备份,恢复数据

2.SNN下有两个文件:

    1)fsimage:在NameNode启动时对整个文件系统的快照

    2)edit logs:在NameNode启动后,对文件系统的改动序列

3.流程解析

    1)定时到NameNode去获取edit logs,并更新到fsimage(SecondNamenode自己的fsimage)

    2)一旦有了新的fsimage,将其拷贝会NameNode中

    3)NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间


流程图

DataNode

1.负责存储数据块,负责为系统客户端提供数据块的读写服务。根据NameNode的指示进行创建、删除和复制等操作。心跳机制,定期报告文件块列表信息。DataNode之间进行通信,块的副本处理

2.数据映射关系:block数据块-->真实数据

3.机制和原则

    1)心跳机制

        a)定期报告文件块列表信息

        b)  默认3秒心跳一次

    2)  副本机制

        a)  默认3个副本

        b)  作用:用数据冗余做到数据高可用的目的,利用空间换取高可用

        c)  数据高可用:保证用户请求都能访问到数据,A服务挂掉还有BC服务可用

    3)  本地化原则(就近原则):避免远程拷贝数据访问带来的性能影响

4.数据块(磁盘读写的基本单位)

    1)HDFS1.0默认数据块大小64MB

    2)  磁盘块一般为512B

    3)  原因:块增大可以减少寻址时间,降低寻址时间/文件传输时间,若寻址时间为10ms,磁盘传输速率为100MB/s,那么该比例仅为1%

    4)数据块过大也不好,因为一个MapReduce通常为一个块作为输入,块过大会导致整体任务数量过小,降低作业处理速度

HDFS的可靠性

1.数据校验

    1)目的:保证数据的完整性(通过crc32校验算法,循环冗余校验码)

    2)在整个数据传输过程中,数据校验的流程

        a)  client给DataNode写数据时候,由client完成,要针对所写的数据,每个检查单位(512字节),创建一个单独校验码(crc32),将数据和校验码一起发送给DataNode

        b)DataNode接收数据的时候:用同样加密算法生成校验码,并与接收到的校验码进行校验

    3)在后台有个扫描进程->DataBlockScanner,一但检查出有问题的Block,通过心跳机制,通知NN,于是NN让DN进行修复(拷贝一个无问题的备份(Block))

简单举个例子


数据校验

        client --> datanode --> block里面,默认512字节创建一个校验码

        ===| ===| ===| ===| ===|

        假设三个等号创建一个字节码,从前往后传输数据,接收一部分校验一部分,客户端和datanode以相同的方式对数据加密之后比较,相同时写入到block里面,不同则直接舍弃。数据坏了,在心跳阶段,namenode就会收到来自block的一个修复命令(dataNode接收namenode发送的一个block,从其他数据块中接收数据来修复)

        datanode --> client

        ===| ===| ===| ===| ===|   (校验码没那么及时,是记录上一次的校验码),如果验证通过,需要更新时间(验证码是有时间限制的)

2.可靠性保证机制

    1)心跳机制

    2)多副本机制

    3)机架感知策略

    4)crc32数据校验

    5)SNN-->数据备份,数据恢复,保证元数据避免丢失

    6)回收站(.Trash目录),可通过配置文件配置文件的停留时间,超过时间删除

    7)报告-->hdfs fsck /文件名 -files -blocks -locations

    8)  快照-->备份,有助于快速还原

HDFS特点

上面讲了很多理论性的东西,下面我们来谈谈HDFS到底能做些什么,又不适合做些什么

1.能做什么

    a)存储并管理大数据

    b)处理非结构化的数据

    c)注重数据处理的吞吐量(延迟不敏感)

    d)应用模式:write-once  read-many(少写多读,避免数据不一致的问题)

        write-once:多人访问,写会造成阻塞,影响访问互斥

        read-many:依赖多副本机制,均摊访问压力

2.不适合做什么

     a)存储小文件(不建议):一般来说,一条元信息记录会占用200byte内存空间。假设块大小为64MB,备份数量是3 ,那么一个1GB大小的文件将占用16*3=48个文件块。如果现在有1000个1MB大小的文件,则会占用1000*3=3000个文件块(多个文件不能放到一个块中)。我们可以发现,如果文件越小,存储同等大小文件所需要的元信息就越多,所以Hadoop更喜欢大文件

     b)大量随机读(不建议),原因是无法被系统做大量寻址方面的优化,正常读取有预读机制

     c)修改文件(不支持)

     d)多用户写入(不支持)

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

推荐阅读更多精彩内容

  • 1.背景 HDFS最初是参考谷歌GFS论文原理开发的一个开源产品,由Lucene开源项目的创始人Doug Cutt...
    架构禅话阅读 1,365评论 0 2
  • HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系...
    大佛爱读书阅读 857评论 0 0
  • 1、霎予需 《孙子兵法》《知中-孙子兵法指南书》孙武26岁时的一篇六千字小论文,给帝王的一篇自荐信。 内容涉及范围...
    霎予需阅读 295评论 0 1
  • 作为时间管理讲师,为了达到好的教学效果,一定要做备课,备教案,备教法。 根据学员的心理,掌握成年人心理特点具体教...
    向上而生的叶小姐阅读 189评论 0 0
  • 《远虑》 作者:王保帅 人无远虑必有近忧。 启蒙成长中, 这句话成为了心结。 远虑是智慧的编排, 是成功者必...
    仁厚道阅读 208评论 0 0