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中删除退役节点

  • 相关阅读:
    第五周的学习进度情况
    周末经历之小体会
    构建之法阅读笔记5
    第四周的学习进度情况
    hashMap中如何形成循环链表的?
    代理模式
    sharing-jdbc实现读写分离及分库分表
    分库分表
    读写分离实现方式
    MySQL主从复制
  • 原文地址:https://www.cnblogs.com/xupccc/p/9655323.html
Copyright © 2011-2022 走看看