zoukankan      html  css  js  c++  java
  • Hadoop常用操作

    Hadoop常用操作

    1、Hadoop安装

    2、Hadoop配置

    3、Hadoop多目录配置

    namenode和datanode节点下都可以进行多个目录的配置,但是意义不同。namenode的多目录配置是副本策略,保证数据可靠性,datanode多目录配置是对容量进行扩容,由于datanode已经有副本机制了。

    [hdfs-site.xml]

    <!-- namenode多目录配置 -->
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
    </property>
    <!-- datanode多目录配置 -->
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
    </property>
    

    其中${hadoop.tmp.dir}是hadoop临时目录配置。

    [core-site.xml]

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/centos/hadoop/ha</value>
    </property>
    

    4、hadoop配额管理

    配额是对空间和目录个数进行限制,放置目录下的文件个数或大小过于庞大。因此配额分为空间配额和目录配额。

    • 目录配额

      限制目录所含文件或文件夹的个数。如果为1,则保持目录为空(可以认为将目录本身也包含在内)。

      #设置配额
      $>hdfs dfsadmin -setQuota 1 data
      #清除配额
      $>hdfs dfsadmin -clsQuota data
      

    • 空间配额

      由于每份文件都有三个副本,空间配额计算时也将副本数计算在内,加上每个数据块文件默认为128m,因此空间配额至少要指定384m的空间值。即128 * 3 = 384。

      #该设置会出错,说至少是384m空间
      $>hdfs dfsadmin -setSpaceQuota 384m data
      

    5、快照

    快照是对hdfs的目录进行瞬间照相,内部采用差异化存储机制。因此不会空间造成大量的消耗。这可以通过查看blockid来考察。默认情况下目录是不允许快照的,因此如果要使用该功能,还需要对特定目录先启用快照。

    #启用快照
    $>hfds dfsadmin -allowSnapshot data
    #禁用快照
    $>hfds dfsadmin -disallowSnapshot data
    
    #创建快照
    $>hdfs dfs -createSnapshot data sp1
    #删除
    $>hdfs dfs -deleteSnapshot data sp1
    #重命名
    $>hdfs dfs -renameSnapshot data sp1 sp2
    

    注意:删除目录时,如果是可快照目录并且有快照,需要先删除快照,再删除目录。

    6、元数据管理

    6.1 镜像文件查看

    镜像文件存放的是hdfs的元数据,是最重要的数据文件。可以通过多种格式进行查看。内容包括目录、权限、配额、数据块等信息。

    #i:input o:output p:处理方式
    $>hdfs oiv -i fsimage_0000000000000207400 -o ~/1.xml -p XML
    

    6.2 编辑日志查看

    对hdfs的每个写操作都会记录到编辑日志中,查看方式同镜像类似。

    $>hdfs oev -i edits_0000000000000200088-00000000000002000199 -o 2.xml -p XML
    

    6.3 镜像控制

    2nn节点对nn节点会进行周期性检查,以完成元数据的备份与融合。具体可以通过以下属性进行控制:

    1. dfs.namenode.checkpoint.period

      检查周期,多长时间生成一次新的检查点,默认为3600秒,即1小时。

    2. dfs.namenode.checkpoint.txns

      操作记录数控制,默认1000,000,发生这些次操作也会生成新的检查点,即时时间不到1小时。

    3. dfs.namenode.checkpoint.check.period

      <property>
        <name>dfs.namenode.checkpoint.check.period</name>
        <value>60</value>
        <description>The SecondaryNameNode and CheckpointNode will poll the NameNode
          every 'dfs.namenode.checkpoint.check.period' seconds to query the number
          of uncheckpointed transactions.
        </description>
      </property>
      

    4. dfs.namenode.num.checkpoints.retained

      <property>
        <name>dfs.namenode.num.checkpoints.retained</name>
        <value>2</value>
        <description>The number of image checkpoint files (fsimage_*) that will be retained by
          the NameNode and Secondary NameNode in their storage directories. All edit
          logs (stored on edits_* files) necessary to recover an up-to-date namespace from the oldest retained
          checkpoint will also be retained.
        </description>
      </property>
      

    7、旧节点下线操作

    7.1 介绍

    旧节点下线操作,需要通过黑白名单进行控制。下线时主要完成旧节点数据的安全转移。成功后,就可以安全下线了。hdfs的黑白名单由dfs.hosts.exclude和dfs.hosts控制,yarn的黑白名单由yarn.resourcemanager.nodes.exclude-path和yarn.resourcemanager.nodes.include-path控制。

    • dfs.hosts

      白名单,可以连到namenode的datanode节点列表。

    • dfs.hosts.exclude

      黑名单,不允许连接到namenode的datanode节点列表。

    黑白名单组合规则:

    dfs.hosts dfs.hosts.exclude 结果
    NO NO Not
    NO YES Not
    YES NO YES
    YES YES YES并将退役

    7.2 HDFS旧节点下线操作

    1. 准备黑白名单

      • dfs_exclude.conf
      • dfs_include.conf
    2. 配置hdfs-site.xml的黑白名单属性

      [hdfs-site.xml]

      <!-- 白名单 -->
      <property>
        <name>dfs.hosts</name>
        <value>/soft/hadoop/etc/full/dfs_include.conf</value>
      </property>
      <!-- 黑名单 -->
      <property>
        <name>dfs.hosts.exclude</name>
        <value>/soft/hadoop/etc/full/dfs_exclude.conf</value>
      </property>
      

    3. 添加退役节点地址到黑名单,不要更新白名单

      [dfs_exclude.conf]

      s102

    4. 刷新nn

      $>hdfs dfsadmin -refreshNodes
      
    5. 进入webui,查看退役的节点是否显式为"退役中",开始复制数据块到其他节点。

      http://s101:50070/
      
    6. 一旦复制完成,状态显式"Decommissioned",停止退役节点

    7. 从白名单中删除退役节点

    8. 再次刷新节点

      $>hdfs dfsadmin -refreshNodes
      
    9. 从slaves中删除退役节点

    8、HDFS新节点上线

    新节点上线时,需要先配置ssh和hadoop软件包。上线实操过程如下:

    1. 配置新节点ssh和安装hadoop软件包以及配置环境变量

    2. 添加新地址到白名单

    3. 刷新名称节点

      $>hdfs dfsadmin -refreshNodes
      
    4. 更新slaves文件

    5. 单独启动新节点的datanode进程

      $>hadoop-daemon.sh start datanode
      
    6. 检查webui

    9、YARN旧节点下线

    1. 准备黑白名单

      yarn_exclude.conf

      yarn_include.conf

    2. 配置yarn-site.xml的黑白名单属性

      [yarn-site.xml]

      <!-- yarn白名单 -->
      <property>
        <name>yarn.resourcemanager.nodes.include-path</name>
        <value>/soft/hadoop/etc/full/yarn_include.conf</value>
      </property>
      <!-- yarn黑名单 -->
      <property>
        <name>yarn.resourcemanager.nodes.exclude-path</name>
        <value>/soft/hadoop/etc/full/yarn_exclude.conf</value>
      </property>
      
    3. 添加退役节点地址到黑名单,不要更新白名单

      [yarn-exclude.conf]

      s102

    4. 刷新yarn

      $>yarn rmadmin -refreshNodes
      
    5. 进入webui,查看退役的节点是否显式为"退役中",开始复制数据块到其他节点。

      http://rm:8088/
      
    6. 一旦复制完成,状态显式"Decommissioned",停止退役节点

    7. 从白名单中删除退役节点

    8. 再次刷新节点

      $>yarn rmadmin -refreshNodes
      
    9. 从slaves中删除退役节点

  • 相关阅读:
    Constants and Variables
    随想
    C#基础篇之语言和框架介绍
    Python基础19 实例方法 类方法 静态方法 私有变量 私有方法 属性
    Python基础18 实例变量 类变量 构造方法
    Python基础17 嵌套函数 函数类型和Lambda表达式 三大基础函数 filter() map() reduce()
    Python基础16 函数返回值 作用区域 生成器
    Python基础11 List插入,删除,替换和其他常用方法 insert() remove() pop() reverse() copy() clear() index() count()
    Python基础15 函数的定义 使用关键字参数调用 参数默认值 可变参数
    Python基础14 字典的创建修改访问和遍历 popitem() keys() values() items()
  • 原文地址:https://www.cnblogs.com/xupccc/p/9655323.html
Copyright © 2011-2022 走看看