02hdfs简介

本文最后更新于 2021-08-05 11:42:59

HDFS

hadoop中有3个核心组件:

  • 分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上
  • 分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算
  • 分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源

hdfs整体运行机制

  • hdfs:分布式文件系统
  • hdfs有着文件系统共同的特征:
    • 有目录结构,顶层目录是: /
    • 系统中存放的就是文件
    • 系统可以提供对文件的:创建、删除、修改、查看、移动等功能
  • hdfs跟普通的单机文件系统有区别:
    • 单机文件系统中存放的文件,是在一台机器的操作系统中
      hdfs的文件系统会横跨N多的机器
    • 单机文件系统中存放的文件,是在一台机器的磁盘上
    • hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于==linux==本地文件系统之上的文件系统)
  • hdfs的工作机制
    • 客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:==data node==)<准确来说:切块的行为是由客户端决定的>
    • 一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:==name node==)
    • 为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)

hdfs特性

  • 文件权限和身份验证。
  • Rack awareness:在调度任务和分配存储时考虑节点的物理位置。
  • Safemode:维护管理模式。
  • fsck:诊断文件系统运行状况的实用程序,查找丢失的文件或块。
  • fetchdt:获取委托令牌并将其存储在本地系统的文件中的实用程序。
  • Rebalancer:当数据不均匀地分布在datanode上时,用来平衡集群的工具。
  • Upgrade and rollback:软件升级后,如果出现意外问题,可以回滚到升级前的HDFS状态。
  • Secondary NameNode:定期检查名称空间,帮助将包含HDFS修改日志的文件的大小保持在NameNode的某些限制内。
  • Web Interface:NameNode和DataNode各自运行一个内部web服务器,以显示关于集群当前状态的基本信息。
  • Import Checkpoint:如果丢失了映像和编辑文件的所有其他副本,则可以将最新的检查点导入到NameNode

NameNode 概述

  • NameNode是hdfs的核心
  • NameNode也成为master
  • Namenode仅储存HDFS元数据:文件系统中的所有文件的目录树,文件的分块大小,权限等等,并跟踪整个集群文件中的文件
  • NameNode不存储实际数据或数据集。数据本身存储在DataNode中
  • NameNode知道HDFS中任何给定文件的块列表及其位置。使用此信息可以知道如何从块中构建文件
  • NameNode并不持久化储存每个文件中各个块所在的DataNode位置信息,这些信息会在系统启动的时候从数据节点重建
  • NameNode关闭时,集群无法访问
  • NameNode所在的机器通常会配置之大量RAM(把元数据保存在内存中)

SecondaryNameNode

  • 将edites和fsimage合并,减少NameNode启动时间
  • edites 操作记录,恢复时一条一条指令读取
  • fsimage内存镜像
  • 合并时机1 fs.checkpoint.period 默认3600秒
  • 合并时机2 fs.checkpoint.size 默认64MB

DataNode概述

  • DataNode负责将实际数据储存在HDFS中
  • DataNode也成为Slave
  • NameNode和DataNode将保持不断通信
  • DataNode启动时,将自己发布到NameNode并汇报自己持有的块列表
  • 但某个NameNode关闭时,不会影响数据和集群的可用性,有备份
  • DataNode所在机器通常配置有大量的硬盘空间,因为实际数据储存在DataNode中
  • DataNode会定期(dfs.heartbeat.interval配置,默认时3秒)先NameNode发送心跳,如果长期没有收到DateNode发送的心跳信息,NameNode将会认为DataNode失效
  • block汇报时间配置(dfs.blockreport.intervalMsec 默认为6小时)

02hdfs简介
https://jiajun.xyz/2020/10/10/bigdata/01hadoop/02hdfs简介/
作者
Lambda
发布于
2020年10月10日
更新于
2021年8月5日
许可协议