HDFS是什么?

HDFS是什么?

  1. 易于扩展的分布式文件系统
  2. 运行在大量普通廉价机器上提供容错机制
  3. 为大量用户提供性能不错的存取服务

设计目标:

  1. 自动快速检测应对硬件错误
  2. 流式访问数据,以流的方式访问数据,设计用于数据的批量处理
    缺点:不适合存储大量小文件;不适合低延迟的数据访问;不支持多用户写入及任意修改文件
  3. 移动计算不移动数据(大数据基本原则,空间换时间)
  4. 简单一致性模型
  5. 异构平台可移植性

安装配置

追加连接

hdfs://(协议头)host(主机名):port(端口号)/

   
   
  • 1

查看${HADOOP_HOME}/bin${HADOOP_HOME}/sbin
在这里插入图片描述

#学会help(很多地方都可以查看帮助文档)
hdfs dfsadmin -help

   
   
  • 1
  • 2

HDFS的基本组件

  1. namenode:管理整个文件系统的元数据
    namenode工作职责:管理元数据、维护目录结构、响应客户端请求
  2. datanode:复制管理用户的文件数据块
    datanode的工作职责:管理用户提交的数据 心跳机制 块报告
  3. secondarynamenode:namenode的助理,帮助加载元数据,紧急情况下(例如namenode宕机),可以帮助恢复数据
    在这里插入图片描述

HDFS读写流程图解

一、 写数据流程
在这里插入图片描述
节点服务器传输数据方式:网络传输,以package包的形式(第8步,上传数据的时候会把package先放到缓存队列,如果此时package出错的话,会默认重传 4次)
这里的话,追加一下一些问题(分布式系统之间可能故障,而且网络的不可靠性都是设计人员需要考虑的问题):socket(长连接),http(短连接),还有其他的方式,比如管道、FIFO、消息队列(kafka。。。)
为什么使用长链接?
最简单分布式系统是一直存在的,很少是短时间的访问,维持心跳机制
什么是心跳机制?
namenode启动的时候,会有一个加载元数据(数据的数据,类似于表的索引)和块报告(datanode会定时(可以再配置文件中设置,所以一定要时间同步)对块信息进行统计)的过程,namenode通过心跳机制维护整个集群的可用性。如果块报告上传失败,namenode不会更新元数据,在块报告的时候就会将其删除掉。
安全模式
什么时候进入安全模式?
刚刚启动(namenode加载元数据的时候(先加载元数据镜像到内存中,在将edits日志的操作在内存中执行一遍,namenode进入安全模式,进行块报告,阈值安全的话30秒退出安全模式))
阈值低于0.999f(默认)
datanode存活数量小于0

怎么解除安全模式?
1. 格式化集群(需要删除namenode.dir的配置路径)
基本不会采用这种方式
2. 强制离开安全模式
hdfs dfsadmin -safemode leave
3 .
# 检测集群文件、节点、块是否出现问题
hdfs fsck /
#删除损坏块的block
hdfs fsck / -delete
4. 调低阈值(在配置文件 safemode)
二、 读数据流程
在这里插入图片描述
磁盘故障
多个副本策略
namenode故障宕机
简单方案:secondarynamenode取出fsimage文件copy到namenode的元数据存储目录下
完美解决:在namenode上挂多块磁盘,配置fs.namenode.name.dir(用,分割磁盘 )

CheckPoint

触发条件:

  1. 事务达到1000000条(默认)
  2. 1小时(默认)
<property>
  <name>dfs.namenode.checkpoint.dir</name>
  <value>/hadoop/data/name</value>
</property>
<!--日志文件edits的检测目录-->
<property>
  <name>dfs.namenode.checkpoint.edits.dir</name>
  <value>/hadoop/data/edits</value>
</property>
<!--时间一小时-->
<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>3600</value>
</property>
<!--事物达到1000000-->
<property>
  <name>dfs.namenode.checkpoint.txns</name>
  <value>1000000</value>
</property>

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述
注:namenode存储元数据,secondarynamenode执行checkpoint的时候去namenode下载edits和fsimage
注意的问题
客户端和服务器端解释

  1. 客户端的配置文件决定副本数量,而不是服务器
  2. 文件存储以块的形式存储在服务器上(客户端决定文件切分,块大小)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值