• 【HDFS】相关概念及常用命令


    本文用于记录Hadoop中HDFS相关概念以及常用命令,以便日后查询。

    概念之间无先后顺序,只是用于记录。

    参考的Hadoop的版本是2.7.3

    1. 角色

    hadoop fs [hdfs dfs]          // 普通用户
    hdfs dfsadmin                 // hdfs管理员

    2. edit日志和fsimage文件融合

    a. hadoop集群启动时融合
      生成新的inprogress_edits日志文件,将旧的inprogress_edits日志文件与fsimage文件融合,但是不生成新的fsimage文件
    b. SecondaryNamenode周期生成检查点,进行融合(并不生成检查点)
      生成新的inprogress_edits日志文件,将旧的inprogress_edits日志文件与fsimage文件拷贝到secondaryNamenode中,逐一执行edits日志文件中的指令,并写进fsimage文件中,生成一个检查点文件,将检查点文件拷贝到namenode中,重命名检查点,即去掉后缀,并使之生效
    c. 手动融合,进入安全模式,保存命名空间
      生成新的inprogress_edits日志文件,将旧的inprogress_edits日志文件与fsimage文件融合,写进一个新的fsimage文件中

    3. dfs.hosts / dfs.hosts.exclude

    a. 说明: slaves.sh 中配置的节点信息只是说明在集群启动的时候启动这些节点,而这些节点能否连上 resourcemanager ,需要配置这两个属性
    b. 若没有配置这两个属性,则默认情况下,属性值为空,表示所有节点都能连
    c. 在 hdfs-site.xml 文件中配置 dfs.hosts / dfs.hosts.exclude 属性
    d. 属性值是文件的绝对路径,可在 hadoop 配置目录下创建 dfs.hosts.include / dfs.hosts.exclude 两个文件
    e. 文件中的内容是 slaves.sh 中配置的节点
    f. 属性优先级: include > exclude

    dfs.hosts dfs.hosts.exclude 说明
    0 0 不能连
    0 1 不能连
    1 0 能连
    1 1 能连,但是显示decommissioning,即不可用,但文件能够存储在该节点上

     

     

     

     

     

    g. 重新配置后,可刷新节点,而无需重启集群

      hdfs dfsadmin -refreshNodes

    4. safemode(安全模式)

    a. dfsadmin 手动进入
    b. 安全模式下,不可put文件
    c. 安全模式下,可手动融合edits日志和fsimage文件,即保存命名空间
    d. 安全模式下,不可向hdfs文件系统中写入数据,比如,put文件,创建目录...
    e. 常用命令
      hdfs dfsadmin -safemode get       // 获取当前是否在安全模式下
      hdfs dfsadmin -safemode enter    // 手动进入安全模式
      hdfs dfsadmin -safemode leave    // 手动离开安全模式
      hdfs dfsadmin -safemode wait     // 等待退出安全模式,一般在脚本中使用

    5. 目录快照

    a. 默认情况下,目录是不允许创建快照的
    b. 需要管理员允许目录快照
      hdfs dfsadmin -allowSnapshot <dirname>
    c. 创建快照
      hadoop fs -createSnapshot <dirname> <snapname>
      快照保存在<dirname>/.snapshot/<snapname>下
    d. 重命名快照
      hadoop fs -renameSnapshot <dirname> <oldSnapname> <newSnapname>
    e. 删除快照
      hadoop fs -deleteSnapshot <dirname> <snapname>

    6. 回收站

    a. 每个用户都有一个回收站,在 /user/xw(用户名)/.Trash下
    b. 回收站默认保存时间是 0s,即禁用回收站,可在core-site.xml中配置fs.trash.interval属性设置
    c. shell中的删除是进回收站的,而编程中的删除是不进入回收站的,直接被删除,除非调用moveToTrash()方法
    d. 清空回收站
      1) hadoop fs -expunge 或者 超过fs.trash.interval设置的时间,则将回收站内的文件设置检查点,放到时间戳表示的文件夹下
      2) 配置fs.trash.checkpoint.interval属性,设置间隔多长时间检查回收站的检查点中的文件,若该属性的值为0,则和fs.trash.interval属性值相同,将其删除
      3) fs.trash.checkpoint.interval属性 <= fs.trash.interval属性值

    7. 配额(也可以叫限制)

    a. 配额:hdfs dfsadmin -setQuota <quota> <dirname>
      即设置该<dirname>中元素的个数,该元素包括文件,目录,以及子元素
      <quota> > 0
    b. 空间配额:hdfs dfsadmin -setSpaceQuota <quota> <dirname>
      即设置该<dirname>中物理空间的大小
      <quota> > 0,比如 10[B],10m,10g

    8. image/edits查看器

    a. oiv(offline image viewer)
      hdfs oiv -i imagefile -o outputfile -p processor(XML)
    b. oev(offline edits viewer)
      hdfs oev -i editsfile -o outputfile -p processor(XML)

  • 相关阅读:
    禁用Clusterware在系统启动后自己主动启动
    码农的产品思维培养第4节----听用户饿但不要照着做《人人都是产品经理》
    android RecycleView复杂多条目的布局
    【shell脚本练习】网卡信息和简单日志分析
    Java太阳系小游戏分析和源代码
    《你是我的眼》,歌曲非常好听
    hdu 1856 More is better(并查集)
    Python 中的isinstance函数
    Python中的 isdigit()方法
    Python中的split()函数的使用方法
  • 原文地址:https://www.cnblogs.com/sqdmydxf/p/7755743.html
Copyright © 2020-2023  润新知