【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)
【HDFS】相关概念及常用命令的更多相关文章
- hadoop(十一)HDFS简介和常用命令介绍
HDFS背景 随着数据量的增大,在一个操作系统中内存不了了,就需要分配到操作系统的的管理磁盘中,但是不方便管理者维护,迫切需要一种系统来管理多态机器上的文件,这就是分布式文件管理系统. HDFS的概念 ...
- Hadoop HDFS分布式文件系统 常用命令汇总
引言:我们维护hadoop系统的时候,必不可少需要对HDFS分布式文件系统做操作,例如拷贝一个文件/目录,查看HDFS文件系统目录下的内容,删除HDFS文件系统中的内容(文件/目录),还有HDFS管理 ...
- [转]hadoop hdfs常用命令
FROM : http://www.2cto.com/database/201303/198460.html hadoop hdfs常用命令 hadoop常用命令: hadoop fs 查看H ...
- Hadoop_常用命令(hdfs上)
Hadoop_常用命令(hdfs上) hadoop fs所有文件系统都可以使用 hdfs dfs仅针对于hdfs文件系统 - 1 - 查看所有目录(文件夹)及文件 hdfs dfs -ls / - ...
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- HDFS的常用命令
一.常用命令 二.其他命令
- [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令
一.简介 Apache Sqoop is a tool designed for efficiently transferring data betweeen structured, semi-str ...
- Git基础知识与常用命令
一:相关概念: 1:工作区(Working Directory): 就是你在电脑里能看到的目录 2:版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. ...
- hbase shell基础和常用命令详解(转)
HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...
随机推荐
- Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class
如果在使用SpringMVC中使用文件上传的MultipartFile对象时,出现了以下的错误: Could not instantiate bean class [org.springframewo ...
- 交互模式下测试python代码及变量的四则运算
在交互模式下,python代码可以立即执行,所以这很方便我们进行代码测试 1.命令窗口,输入python (如果没配置环境变量则需带python安装目录的绝对路径) >>> 这个就是 ...
- Linux 下安装maven
1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令:2.进入下载文件夹,找到下载的文件,运行 ...
- QT4.8.5 连接数据库(读写数据)
#include "mainwindow.h" #include <QApplication> #include <QLabel> #include < ...
- NDK调试
第一种(控制台输出): 1.配置好环境变量,这是为了方便起见.将你sdk和ndk的根目录放到环境变量path中.配置完成之后可以来个小检测: 在命令行分别输入adb和ndk-stack后点击回车,只要 ...
- window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法
摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sud ...
- RMQ-ST算法的理解与实现(C++)
RMQ-ST的含义 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返 ...
- 【OOM】GC overhead limit exceeded
我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...
- php里的抽象类和接口
//实例化类产生对象.//class fenbi//{// //普通成员,属于对象// public $length = "10cm";// //静态成员,静态变量,属于类.// ...
- DB2插入数据 sqlcode302 sqlstate22001错误如何解决?
总结:出现这种错误的原因主要是,插入数据时的长度和数据库中定义的长度不匹配或超出限制.