前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

HDFS

原创
作者头像
李才哥
修改2021-03-02 18:08:21
6810
修改2021-03-02 18:08:21
举报
文章被收录于专栏:李才哥李才哥

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节点中,若集群外提交则放置空闲节点

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

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

· 更多副本:随机节点

优缺点

优点

高容错性

· 数据保存多个副本

· 数据丢失易恢复

适合批处理

· 计算向数据移动

· 偏移量暴露给框架

适合大数据处理

单独节点廉价

缺点

数据访问延时较长

不适合小文件存储

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 架构模型
    • NameNode
      • 功能
      • 存储
    • DataNode
      • 本地磁盘存储block块数据
      • 存储block元信息
      • 启动时通过心跳汇报block元信息
      • 若NN10分钟没有收到DN的心跳回应,则判断挂掉,则将DN上的数据复制到其他DN中
    • 版本差异
      • Hadoop1.0版本
      • Hadoop2.0版本
  • 部署步骤
    • hdfs全节点安装
      • 1.对环境的准备
      • 2.在一个节点对压缩包进行解压
      • 3.添加环境变量
      • 4.对三个hadoop,mapred,yarn对应的env.sh的JAVA_HOME进行重新配置
      • 5.对core-site.xml,hdfs-sit.xml,slave进行配置
      • 6.将已经配置好的部署文件通过scp命令分发到各个节点
      • 7.对namenode进行格式化
      • 8.start-dfs.sh
      • 9.在各个节点用jps命令验证hdfs进程是否启动
    • HA安装
      • 1.环境需要准备好,包括jdk,hdfs,免密钥等
      • 2.安装zookeeper
      • 3.在hdfs-site.xml进行若干配置
      • 4.在core-site.xml进行若干配置
      • 5.将这些配置分发到另外一个节点中
      • 6.进行若干初始化操作
  • 读写策咯
    • 写策略
      • 1.切分文件为block块
      • 2.NN获取DN列表和副本数,存储每个block以及副本放置位置
      • 3.block传输
      • 4.block传输结束
      • 5.下一个block传输
    • 读策略
      • 1.client通过NN获取若干block的位置
      • 2.选择最近的节点进行读取
      • 3.线性读取block,合并为一个文件
  • 存储模型
    • Block
      • 特点
      • 副本放置策略
  • 优缺点
    • 优点
      • 高容错性
      • 适合批处理
      • 适合大数据处理
      • 单独节点廉价
    • 缺点
      • 数据访问延时较长
      • 不适合小文件存储
      • 对文件写入支持单一,只支持追加写入,不支持随机写入
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档