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

Hadoop常用操作的更多相关文章

  1. Hadoop常用操作汇总

    Hadoop Streaming示例程序(wordcount) run_hadoop_word_counter.sh $HADOOP_BIN streaming \ -input "${IN ...

  2. Hadoop HDFS文件常用操作及注意事项

    Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...

  3. Hdfs常用操作

    一.linux rm是删除,不是del 二.常用操作 package hdfs; import java.io.FileInputStream; import java.io.FileNotFound ...

  4. linux常用操作指令

    Linux常用操作指令: 常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(a ...

  5. hadoop 常用配置项【转】

    hadoop 常用配置项[转] core-site.xml  name value  Description   fs.default.name hdfs://hadoopmaster:9000 定义 ...

  6. 【Hadoop篇】--Hadoop常用命令总结

    一.前述 分享一篇hadoop的常用命令的总结,将常用的Hadoop命令总结如下. 二.具体 1.启动hadoop所有进程start-all.sh等价于start-dfs.sh + start-yar ...

  7. Hbase常用操作记录

    Hbase常用操作记录 Hbase 创建表 查看表结构 修改表结构 删除表 创建表 语法:create <table>, {NAME => <family>, VERSI ...

  8. Hadoop2.7.6_02_HDFS常用操作

    1. HDFS常用操作 1.1. 查询 1.1.1.  浏览器查询 1.1.2. 命令行查询 [yun@mini04 bin]$ hadoop fs -ls / 1.2. 上传文件 [yun@mini ...

  9. Hadoop常用命令总结

    一.前述 分享一篇hadoop的常用命令的总结,将常用的Hadoop命令总结如下. 二.具体 1.启动hadoop所有进程start-all.sh等价于start-dfs.sh + start-yar ...

随机推荐

  1. 321B

    MCMF必须是满足流量最大为前提下的最小费用流(这里是最大费用流) 因此还必须不断地枚举m的流量才行 #include<iostream> #include<algorithm> ...

  2. slf4j + loback配置

    目前Java主流的log体系是 Slf4j +logback Spring boot 中配置log十分简单,常见的方式在application.yml文件中使用如下配置 logging: path: ...

  3. PHP HTTP的PUT,DELETE的使用

    GET操作是安全的.所谓安全是指不管进行多少次操作,资源的状态都不会改变.比如我用GET浏览文章,不管 浏览多少次,那篇文章还在那,没有变化.当然,你可能说每浏览一次文章,文章的浏览数就加一,这不也改 ...

  4. n阶乘,位数,log函数,斯特林公式

    一.log函数 头文件: #include <math.h> 使用: 引入#include<cmath> 以e为底:log(exp(n)) 以10为底:log10(n) 以m为 ...

  5. java——快排、冒泡、希尔、归并

    直接贴代码 快排: public class Test { private static void sort(int[] nums){ if(nums == null || nums.length = ...

  6. input校验不能以0开头的数字

    不以零开头 <input type="text"  class="form-control"  onkeyup="value=value.rep ...

  7. Flag-2019上半年

    1.坚持做博客记录,把日常学习到的技能以日记的形势进行呈现,每周进行总结: 2.2月底完成吴老师的机器学习视频课程: 3.6月底完成吴老师的深度学习视频课程: 相信自己,可以的,半年后见!

  8. (转)AIX修改系统时区的3种方法和AIX 时间问题(夏令时)

    原文:http://blog.csdn.net/fuwencaho/article/details/28267283 http://www.wo81.com/tec/os/aix/2014-04-30 ...

  9. 01-取消文件与svn服务器的关联

    有的时候一个和svn服务器关联的文件,svn的链接已经失效,但是文件还是显示和svn关联的状态. 下面主要是解决怎么取消一个文件和svn服务器的关联. 1 新建一个文本文件 在任意目录下新建一个文本文 ...

  10. 错误处理(Operation Result)方法

    自己开发的公众号,可以领取淘宝内部优惠券 问题 现在有一个FileStorageService类,继承自IStorageService,具体实现如下 public interface IStorage ...