原文作者:jiangw-Tony

原文地址:HDFS基础使用

1、HDFS心跳机制(heartbeat)

  1. Hadoop 是 Master/Slave 结构,Master 中有 NameNode 和 ResourceManager,Slave 中有Datanode 和 NodeManager。
  2. Master 启动的时候会启动一个 IPC(Inter-Process Comunication,进程间通信)server 服务,等待 slave 的链接。
  3. Slave 启动时,会主动链接 master 的 ipc server 服务,并且每隔 3 秒链接一次 master,这个间隔时间是可以调整的,参数为 dfs.heartbeat.interval,这个每隔一段时间去连接一次的机制,我们形象的称为心跳。Slave 通过心跳汇报自己的信息给 master,master 也通过心跳给 slave 下达命令。
  4. NameNode 通过心跳得知 Datanode 的状态,ResourceManager 通过心跳得知 NodeManager 的状态。
  5. 如果 master 长时间都没有收到 slave 的心跳,就认为该 slave 挂掉了。

Namenode 感知到 Datanode 掉线死亡的时长计算:

HDFS 默认的超时时间为 10 分钟+30 秒。这里暂且定义超时时间为 timeout,计算公式为:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval

而默认的 heartbeat.recheck.interval 大小为 5 分钟,dfs.heartbeat.interval 默认的大小为 3 秒。需要注意的是 hdfs-site.xml 配置文件中的 heartbeat.recheck.interval 的单位为毫秒,dfs.heartbeat.interval 的单位为秒。所以,举个例子,如果heartbeat.recheck.interval 设置为 5000(毫秒),dfs.heartbeat.interval设置为 3(秒,默认),则总的超时时间为 40 秒。

<property><name>heartbeat.recheck.interval</name><value>5000</value>
</property>
<property><name>dfs.heartbeat.interval</name><value>3</value>
</property>

2、HDFS安全模式

问题引出:集群启动后,可以查看目录,但是上传文件时报错,打开web页面可看到namenode正处于 safemode 状态,怎么处理?

解释:safemode 是 namenode 的一种状态(active/standby/safemode 安全模式)

namenode 进入安全模式的原理

1. namenode 发现集群中的 block 丢失率达到一定比例时(0.1%),namenode 就会进入安全模式,在安全模式下,客户端不能对任何数据进行操作,只能查看元数据信息(比如 ls/mkdir),这个丢失率是可以手动配置的,默认是 dfs.safemode.threshold.pct=0.999f

2.如何退出安全模式?

  • 找到问题所在,进行修复(比如修复宕机的 datanode)
  • 或者可以手动强行退出安全模式(但是并没有真正解决问题)

在 hdfs 集群正常冷启动时,namenode 也会在 safemode 状态下维持相当长的一段时间,此时你不需要去理会,等待它自动退出安全模式即可。

正常启动的时候进入安全的原理:

namenode 的内存元数据中,包含文件路径、副本数、blockid,及每一个 block 所在datanode 的信息,而 fsimage 中,不包含 block 所在的 datanode 信息,那么,当 namenode冷启动时,此时内存中的元数据只能从 fsimage 中加载而来,从而就没有 block 所在的datanode 信息——>就会导致 namenode 认为所有的 block 都已经丢失——>进入安全模式——>datanode 启动后,会定期向 namenode 汇报自身所持有的 blockid 信息,——>随着datanode 陆续启动,从而陆续汇报 block 信息,namenode 就会将内存元数据中的 block 所在 datanode 信息补全更新——>找到了所有 block 的位置,从而自动退出安全模式。

安全模式常用操作命令

# 强制 NameNode 退出安全模式
hdfs dfsadmin -safemode leave
# 进入安全模式
hdfs dfsadmin -safemode enter
# 查看安全模式状态
hdfs dfsadmin -safemode get
# 等待,一直到安全模式结束
hdfs dfsadmin -safemode wait 

如果你使用的版本是 2.X 之前的版本,那么这个 hdfs 命令可以替换成 hadoop,它们都在 bin目录下。

3、HDFS副本存放策略

1.作用:数据分块存储和副本的存放,是保证可靠性和高性能的关键。

2.方法:将每个文件的数据进行分块存储,每一个数据块又保存有多个副本,这些数据块副本分布在不同的机器节点上。

3.存放说明

在多数情况下,HDFS 默认的副本系数是 3。Hadoop 默认对 3 个副本的存放策略如下图,其中 Block1,Block2,Block3 分别表示 Block的三个副本:

  • 第一个 block 副本放在和 client 所在的 node 里(如果 client 不在集群范围内,则这第一个 node是随机选取的,系统会尝试不选择哪些太满或者太忙的 node)。
  • 第二个副本放置在与第一个节点不同的机架中的 node 中(近乎随机选择,系统会尝试不选择哪些太满或者太忙的 node)。
  • 第三个副本和第二个在同一个机架,随机放在不同的 node 中。

4.修改副本数

第一种方式:修改集群文件 hdfs-site.xml

<property><name>dfs.replication</name><value>1</value>
</property>

第二种方式:命令设置 bin/hadoop fs -setrep -R 1 /

4、负载均衡

机器与机器之间磁盘利用率不平衡是 HDFS 集群非常容易出现的情况,尤其是在 DataNode 节点出现故障或在现有的集群上增添新的 DataNode 的时候。分析数据块分布和重新均衡 DataNode 上的数据分布的工具:

sbin/start-balancer.shsbin/start-balancer.sh -threshold 5

自动进行均衡非常慢,一天能移动的数据量在 10G-10T 的级别,很难满足超大集群的需求。原因:HDFS 集群默认不允许 balance 操作占用很大的网络带宽,这个带宽是可以调整的

hdfs dfsadmin -setBalanacerBandwidth newbandwidthhdfs dfsadmin -setBalanacerBandwidth 10485760

该数值的单位是字节,上面的配置是 10M/s,默认是 1M/s。另外,也可以在 hdfs-site.xml 配置文件中进行设置:

<property><name>dfs.balance.bandwidthPerSec</name><value>10485760</value><description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description>
</property>
# 机器容量最高的那个值 和 最低的那个值得差距 不能超过 10%sbin/start-balancer.sh -t 10%    

分布式文件系统—HDFS—核心设计相关推荐

  1. 第三章-分布式文件系统HDFS

    第三章-分布式文件系统HDFS 文章目录 第三章-分布式文件系统HDFS HDFS简介 HDFS相关概念 HDFS块与组件 名称节点 第二名称节点 数据节点 HDFS体系结构 HDFS存储原理 冗余数 ...

  2. 分布式文件系统HDFS解析

    分布式文件系统HDFS解析 设计目标 Namenode 和 Datanode HDFS HA HDFS Federation 读写流程 Replication 元数据 副本均衡 元数据磁盘错误 快照 ...

  3. 大数据学习(3)- 分布式文件系统HDFS

    文章目录 目录 1.分布式文件系统 1.1 计算机集群概念 1.2 分布式文件系统结构 2.HDFS简介 2.1 HDFS设计的目标 2.2HDFS的局限性 2.3 块的概念 2.4 HDFS主要组件 ...

  4. 分布式文件系统-HDFS(   HDFS全称是Hadoop Distributed System)

    分布式文件系统-HDFS HDFS Hadoop的核心就是HDFS与MapReduce.那么HDFS又是基于GFS的设计理念搞出来的. HDFS全称是Hadoop Distributed System ...

  5. Hadoop大数据原理(2) - 分布式文件系统HDFS

    文章目录 1. 数据存储问题 2. RAID技术的原理和思路 2.1 常用RAID的原理介绍 2.2 RAID间的性能比较 3. 大数据时代的分布式文件系统 3.1 HDFS的稳固地位 3.2 HDF ...

  6. 分布式文件系统HDFS实践及原理详解part3

    HDFS原理 说明:3.5开头目录是因为和上篇文章内容同属一章,所以开头使用了3.5 3.5 HDFS核心设计 3.5.1 心跳机制 1. Hadoop 是 Master/Slave 结构,Maste ...

  7. JAVA大数据(二) Hadoop 分布式文件系统HDFS 架构,MapReduce介绍,Yarn资源调度

    文章目录 1.分布式文件系统HDFS 1.HDFS的来源 2.HDFS的架构图之基础架构 2.1 master/slave 架构 2.2 名字空间(NameSpace) 2.3 文件操作 2.4副本机 ...

  8. 【hadoop期末复习】第三章 分布式文件系统HDFS 超详细讲解(更新完毕)

    ** 本专栏的Hadoop复习计划文章内容主要包含以下几个部分: [简单]学习通习题 [进阶]课本课后练习 [操作]相关章节实验回顾 ** 使用教材:大数据技术原理与应用(第3版)林子雨 编著 ** ...

  9. 大数据技术基础笔记3 分布式文件系统HDFS

    文章目录 3.1 分布式文件系统 3.2 HDFS简介 3.3 HDFS相关概念 3.4 HDFS体系结构 3.5 HDFS存储原理 3.6 HDFS数据读写过程 3.7 HDFS编程实践 3.1 分 ...

最新文章

  1. H3C 交换机命名规则
  2. 用数据告诉你王思聪到底有多少钱?
  3. Nginx设置成服务并开机自动启动的配置详解
  4. JavaWeb-综合案例(用户信息)-学习笔记01【列表查询】
  5. java ndc_通过slf4j/log4j的MDC/NDC 实现日志追踪
  6. win10怎么把c盘锁住_老司机教你win10下怎么清理c盘
  7. 看完白鹤滩水电站建造历程 感觉《流浪地球》那些真能造出来
  8. 什么是分布式系统的CAP理论?
  9. 设计抗100亿请求的春晚红包系统
  10. 三星Galaxy S21+真机上手视频曝光:外观彻底无悬念
  11. 排烟管道过长怎么处理_厨房装修失误导致烟道过长该怎么办?
  12. 高级着色语言HLSL入门(4)
  13. AS3 CookBook学习整理(二)
  14. XenApp_XenDesktop_7.6实战篇之十七:XenApp应用程序交付
  15. Unity 移动方法总结
  16. 深度相机原理揭秘之结构光法
  17. eclipse 实用的快捷键
  18. 百度指数-批量查询器
  19. 数据可视化——seaborn(二)
  20. OSChina 周二乱弹 —— 还是喜欢看西游记,有家的感觉

热门文章

  1. WIN7+wampserver2.4+zend stadio10.6.1配置Xdebug
  2. 运用alarm系统调用检测网络是否断开
  3. JavaMail发送和接收邮件
  4. MVVM实践中的Command与CommandParameter的使用
  5. Python3之Django Web框架中间件???
  6. BZOJ3123: [Sdoi2013]森林
  7. 2018 GDCPC 省赛总结
  8. Unity2017.1官方UGUI文档翻译——Visual Components
  9. C++ smart pointer
  10. Lumen中启用session