• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

HDFS入门教程

武飞扬头像
小猫不会去楼兰捉虫
帮助3

1. HDFS体系结构
 

HDFS采⽤的是master/slaves这种主从的结构模型来管理数据,这种结构模型主要由 四个部分组成,分别是 Client、NameNode、DataNode、SecondaryNameNode

学新通

 不同的线代表不同的通信协议

1.1 NameNode

1. NameNode时整个文件系统的管理节点,它主要作用

  • 维护整个文件系统的目录树
  • 维护每个文件对应的数据块列表
  • 接收客户端的请求

2. NameNode主要包含以下文件,这些内容常驻内存,也会存在文件里面。

学新通

学新通

  • Fsimage: 元数据镜像文件,是元数据的镜像快照,元数据信息包括:文件目录树、每个文件对应的数据块列表
  • Edits: 操作日志文件(事务文件)会实时记录用户的所有操作
  • seen_txid : 存储的是edits文件的尾数,是一个数字
  • VERSION : 保存的集群的版本信息

NameNode总结

学新通

 1.2 SecondaryNameNode

主要负责定期把edits文件中的内容合并到fsimage中,这个合并操作被称为checkpoint,在合并的时候会对edits中的内容进行转换,生成新的内存保存到fsimage中

注意: 在NameNode的HA架构中没有SecondaryNameNode进程,文件合并操作会由standby NameNode负责实现。

1.3 DataNode

学新通

 查看数据块的位置

学新通

/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-1435466945-192.168.21.101-1664012102328/current/finalized/subdir0/subdir0

学新通

 注:

NameNode、datanode目录下 都有一个clusterID,当重新格式化NameNode时,clusterID会发生改变,而datanode中的clusterID不变。因此在格式化NameNode时要先删除data目录。

2. HDFS高级操作

2.1 HDFS垃圾回收站

开启HDFS的垃圾箱功能

  •  在core-site.xml 添加如下配置 , 单位是分钟
  1.  
    <property>
  2.  
    <name>fs.trash.interval</name>
  3.  
    <value>1140</value>
  4.  
    </property>
  • 重启集群
     
  • 删除测试

学新通

  • 恢复数据
hadoop fs -mv hdfs://linux01:9000/user/root/.Trash/Current/user/root/input/ /user/root/

说明:

(1)垃圾回收目录是一个HDFS目录,恢复数据时只需要mv回去就行了。

(2)skipTrash 选项删除文件,该选项不会将文件发送到垃圾箱

hadoop fs -rm -R  -skipTrash /user/root/input

(3)HDFS会为每个用户创建一个回收站目录: /user/用户名/.Trash/

(4)回收站中的数据都会有一个默认保存周期,过期未恢复则会被HDFS自动彻底删除

2.2 HDFS的安全模式

集群刚启动时HDFS会进入安全模式,此时无法执行写操作

查看安全模式:

hdfs dfsadmin -safemode get

离开安全模式

hdfs dfsadmin -safemode leave

2.3 定时上传数据到HDFS

定时上传日志数据到HDFS,有补数据的功能

  1.  
    #!/bin/bash
  2.  
     
  3.  
    # 获取昨天日期字符串
  4.  
    yesterday=$1
  5.  
     
  6.  
    if [ "$yesterday" = "" ]
  7.  
    then
  8.  
    yesterday=`date %Y_%m_%d --date="1 days ago"`
  9.  
    fi
  10.  
    # 拼接日志路径信息
  11.  
    logPath=/opt/data/log/access_${yesterday}.log
  12.  
     
  13.  
    # 将日期字符串中的_去掉,并且拼接称HDFS的路径
  14.  
    hdfsPath=/log/${yesterday//_/}
  15.  
     
  16.  
    # 在HDFS创建目录
  17.  
    hadoop fs -mkdir -p ${hdfsPath}
  18.  
    # 将数据上传到HDFS的指定目录中
  19.  
    hadoop fs -put ${logPath} ${hdfsPath}
学新通

注: 执行脚本时加上-x 选项可以看到脚本的执行过程

3. HDFS的高可用和高扩展

抛出两个问题

NameNode节点宕机了怎么办?

NameNode节点内存不够了怎么办?

3.1 HDFS的高可用(HA)

学新通HA : 集群中有多个NameNode

  •  HFDS的HA 表示集群中存在多个NameNode,只有一个NameNode时Active状态,其它的是Standby状态
  • Active NameNode(ANN)负责所有客户端的操作
  • Standby NameNode(SNN) 用来同步ANN的状态信息,以提供快速故障恢复能力
  • 使用HA的时候不能启动SecondayNameNode,会出错。因为SecondayNameNode的职责已经分配给了StandBy NN

3.2 HDFS的高扩展(Federation)

Federation可解决单一命名空间的问题,提供一下特性

  • HDFS集群扩展性
  • 性能更高效
  • 良好的隔离性

可以和HA结合起来使用

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhbbgj
系列文章
更多 icon
同类精品
更多 icon
继续加载