原创

HDFS

HDFS

架构模型

NameNode

功能

· 接受客户端的读写服务

· 收集DataNode汇报的block块的列表信息

存储

· 基于内存存储metadata

• 静态信息

• 文件的一般属性

• block信息列表:block偏移量

• 动态信息

• block块以及副本的位置信息(由DataName通过心跳进行上报)

· 持久化

• fsimage

• 将metadata存储在磁盘中

• edits

• 记录对metadata的操作日志

DataNode

本地磁盘存储block块数据

存储block元信息

启动时通过心跳汇报block元信息

若NN10分钟没有收到DN的心跳回应,则判断挂掉,则将DN上的数据复制到其他DN中

版本差异

Hadoop1.0版本

· SecondaryNameNode

• 作用

• 在启动时,帮助NN合并edits log,减少NN的启动时间

• 在运行过程中的合并起到一个中转的作用

• 合并过程

• 启动后,fsimage和edits加载到内存?,合并生成新的fsimage,然后edits清空

• 到达指定时间(比如整点),fsimage和edits加载到SNN中,生成新的fsimage,覆盖到磁盘中,继续将edits清空

· 问题

• NN单点故障

• 内存压力过大,影响拓展性

Hadoop2.0版本

· HA

• ZKFC

• 监控NN健康状况

• 若主NN挂掉,触发zkfc监听事件,将stand by设置为主

• JournalNodes

• 存储edits操作日志

• NN stand by

• 和JN在指定时间生成fsimage到覆盖到磁盘中,并推送给主NN

· Federation NN联邦制

• 对NN的横向拓展

• 共享DN集群,但记录对应不同文件的信息,相互之间由隔离性

部署步骤

hdfs全节点安装

1.对环境的准备

· jdk的安装

· 环境变量的配置

· 免密钥登陆

• ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

• ssh-copy-id nodeX

2.在一个节点对压缩包进行解压

3.添加环境变量

4.对三个hadoop,mapred,yarn对应的env.sh的JAVA_HOME进行重新配置

5.对core-site.xml,hdfs-sit.xml,slave进行配置

6.将已经配置好的部署文件通过scp命令分发到各个节点

7.对namenode进行格式化

· hdfs namenode -formate (node01)

8.start-dfs.sh

9.在各个节点用jps命令验证hdfs进程是否启动

HA安装

1.环境需要准备好,包括jdk,hdfs,免密钥等

2.安装zookeeper

3.在hdfs-site.xml进行若干配置

· 配置ServiceName的逻辑到物理地址的映射关系

· 配置JNN所在的节点位置,以及这个节点的保存路径

· 自动切换主备状态的代理实现

· 开启zookeeper的自动化转移

4.在core-site.xml进行若干配置

· 配置hdfs的访问入口

· 配置zookeeper的访问入口

5.将这些配置分发到另外一个节点中

6.进行若干初始化操作

读写策咯

写策略

1.切分文件为block块

2.NN获取DN列表和副本数,存储每个block以及副本放置位置

3.block传输

· client和一个DN连接,将一个block传给DN

· 接到数据DN,连接其他的副本存储的DN,通过pipeline依次传输

4.block传输结束

· DN向NN汇报block传输完成情况

· DN向client汇报block传输完成情况

· client向NN汇报完成

5.下一个block传输

读策略

1.client通过NN获取若干block的位置

2.选择最近的节点进行读取

3.线性读取block,合并为一个文件

存储模型

Block

特点

· 根据block块的偏移量,可寻找block块在文件的位置

· 偏移量根据字节数存储

· 可设置副本数量,尽量不要超过节点数量

· 已上传文件的block块的大小不能调整,副本数量可以调整

· 文件不能写入数据,只能往后追加数据

副本放置策略

· 第一个副本:放置在上传文件的DN节点中,若集群外提交则放置空闲节点

· 第二个副本:与第一个副本不同的机架节点

· 第三个副本:于第二个副本相同机架的节点

· 更多副本:随机节点

优缺点

优点

高容错性

· 数据保存多个副本

· 数据丢失易恢复

适合批处理

· 计算向数据移动

· 偏移量暴露给框架

适合大数据处理

单独节点廉价

缺点

数据访问延时较长

不适合小文件存储

对文件写入支持单一,只支持追加写入,不支持随机写入

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hdfs

    如果NameNode挂掉了怎麼辦 hadoop2有兩個NameNode,一個是active狀態,另一個是備份。一個宕機可以馬上切換成另一個,用戶則不會感覺到變...

    平凡的学生族
  • HDFS

    HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)最开始是作为Apache Nutch搜索引擎项目的基础架构而...

    week
  • HDFS Federation

    Federation翻译成中文是联盟或联邦的意思,网上有很多介绍HDFS Federation的文章,官网上的Federation.html也做了专门的介绍...

    一见
  • HDFS safemode

    处于safemode的集群是无法接收任何写操作的,包括创建目录、删除文件、修改文件、上传文件等等。hdfs集群在启动和关闭的时候一般会有一段时间处于safemo...

    用户1621453
  • 【HDFS】分布式文件系统HDFS

    HDFS全称Hadoop Distributed File System,Hadoop分布式文件系统。它是2003年10月Google发表的GFS(Google...

    十里桃花舞丶
  • HDFS系列(6) | HDFS的java API操作

    不温卜火
  • HDFS系列(2) | HDFS优缺点分析

    不温卜火
  • Hadoop之--HDFS

    what is Hadoop The Apache Hadoop software library is a framework that allows for...

    GavinZhou
  • HDFS详解

    【一】HDFS简介 HDFS的基本概念1.1、数据块(block) HDFS(Hadoop Distributed File System)默认的最基本的存储...

    猿人谷
  • Hadoop API——HDFS

    羊羽shine
  • hadoop之hdfs

    随着时间的推移,海量的数据都被积累起来,人人都是数据的产生者,产生各种各样的结构化数据,半结构化数据,非结构化数据,原来的关系型数据库搭建的数仓已经不能...

    SRE运维实践
  • HDFS简介

    把数据文件分布到不同的节点上的目的是什么?在不同的节点上分布式计算,计算靠近数据的原则。

    字母哥博客
  • Flink HDFS Connector

    此连接器提供一个 Sink,将分区文件写入 Hadoop FileSystem 支持的任何文件系统。要使用此连接器,添加以下依赖项:

    smartsi
  • Hadoop 之 HDFS

    “ Hadoop 可以看成是 HDFS + MapReduce + Yarn组成,其中HDFS作为分布式文件系统被用到了很多其他系统,本文将简要介绍HDFS的概...

    搬砖俱乐部
  • HDFS 特性

    数据保存多个副本,副本丢失后自动恢复。 可构建在廉价(与小型机大型机对比)的机器上,实现线性扩展。(随着节点数量的增加,集群的性能-计算性能和 存储性能都会有...

    云缓缓知我意
  • HDFS系列(7) | HDFS的 I/O流 API操作

    需求:分块读取HDFS上的大文件,比如根目录下的/hadoop-2.7.2.tar.gz

    不温卜火
  • HDFS系列(4) | HDFS文件读写流程

    不温卜火
  • HDFS Router-based Federation

    Hadoop 社区为了解决 HDFS 横向扩展的问题,早前的版本中实现了基于 ViewFs 的 Federation 架构,而在最新的 Hadoop 版本中,社...

    Fayson
  • Python3 操作 HDFS

    py3study

扫码关注云+社区

领取腾讯云代金券