基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口

对于hadoop HDFS 中的所有命令进行解析(其中操作流程是自己的想法有不同意见欢迎大家指正)


接口名称


功能


操作流程


get


将文件复制到本地文件系统 。如果指定了多个源文件,本地目的端必须是一个目录。


(1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得文件名(或大文件元数据信息);

(2)根据文件名(或大文件元数据信息)到相应的Data server中获取相应的文件(大文件需要拼接);

(3)将获取的文件写入本地文件系统。


put


从本地文件系统中复制文件或目录到目标文件系统。


(1)按照上述章节所述,逐层解析<dst>绝对路径,获取目标文件夹的key/value数据;

(2)根据章节所述规则,结合目标文件夹的标号和源文件的文件名生成对应的key/value;

(3)根据步骤(2)生成的key/value上传源文件的相关信息;

(4)上传源文件内容到系统中。


rm


删除指定的文件,只删除非空目录和文件。


(1)根据上述章节所述,逐层解析到目标文件所在的位置获取指定文件的key/value;

(2)根据key找到指定的文件或目录所在的DataNode上存储的信息;

(3)删除信息;

(4)将删除记录写入edit log。


mkdir


创建目录,会创建路径中所有缺失的父目录。


(1)按照上述机制,逐层解析找到父目录,获取标记,如果父目录不存在则递归的创建路径上的目录;

(2)将父目录的标记作为key的父节点字段部分,创建新目录。


appendToFile


添加源文件从本地文件系统到目标文件系统。


(1)按照上述章节所述,逐层解析<dst>绝对路径,获取目标文件夹的key/value数据;

(2)根据章节所述规则,结合目标文件夹的标号和源文件的文件名生成对应的key/value;

(3)根据步骤(2)生成的key/value上传源文件的相关信息;

(4)上传源文件内容到系统中。


cat


将路径指定文件的内容输出到stdout。


(1)按照上述机制,逐层解析path到目标文件,获取文件的key/value;

(2)根据key值在找到文件内容输出到stdout中;

(3)将结果在终端显示出来。


chgrp


改变文件和目录的群组。


(1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得所操作的文件名/目录(或大文件元数据信息);

(2)修改这个K-V中的value的表示群组的字段并重新插入新的K-V。


chmod


改变文件和目录的访问权限。


(1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得所操作的文件名/目录(或大文件元数据信息);

(2)修改这个K-V中的value的表示访问权限的字段并重新插入新的K-V。


chown


变更文件和目录的拥有者。


(1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得所操作的文件名/目录(或大文件元数据信息);

(2)修改这个K-V中的value的表示所有者的字段并重新插入新的K-V。


copyFromLocal


从本地文件系统中复制文件,和put命令相似。


操作流程参见put接口。


copToLocal


将文件复制到本地文件系统,和get命令类似。


操作流程参见get接口。


count


显示由路径确定的子目录的个数,文件个数,使用字节个数,以及所有的文件目录名。


(1)解析到目标路径,获取相关的key/value;

(2)获取value中的子目录个数,文件个数,使用字符串等相关信息的字段。


cp


将文件从源路径复制到目标路径。这个命令允许有多个原路径,此时目标路径必须是一个目录。


(1)根据上述章节所述,逐层解析<dest>,获取目标文件的位置信息;

(2)获取源文件的内容;

(3)逐块复制源文件信息到目标文件当中。


du


显示文件大小,如果path是一个目录,则显示该目录中所有文件的大小。


(1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得文件名或目录;

(2)如果是文件读取相应的key/value中,读取value中表示文件大小的字段,如果是目录则读取标记,递归的查询属于该目录下的所有文件。


dus


显示文件的大小,但是当作用于目录时,会显示文件大小之和。


(1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得文件名或目录;

(2)如果是文件读取相应的key/value中,读取value中表示文件大小的字段,如果是目录则读取标记,递归的查询属于该目录下的所有文件value信息,将value中关于文件大小的字段信息相加取和。


expunge


清空回收站。


(1)按照上述机制,解析到HDFS系统回收站目录下(/user/用户名/.Trash/current);

(2)删除(参考接口rm)。


getfacl


显示文件和目录的访问控制列表


(1)按照上述章节所述,逐层解析,获取目标文件或路径的key/value数据;

(2)获取value中有关的ACL的字段信息。


getmerge


获取由源目录指定的所有文件,将它们合并为单个文件并写入本地文件系统中的LOCALDST


(1)按照上述机制,逐层解析,获取源目录文件的标记;

(2)根据标记,在config server中寻找目录文件下的子文件;

(3)创建目标文件,将子文件的内容依次合并到目标文件当中;

(4)将目标文件写入本地文件系统。


ls


列出目录及文件信息。


(1)按照上述机制,逐层解析获取到目标文件或者文件夹的标记;

(2)根据标记查询子目录或者文件相关信息;

(3)列出信息。


lsr


循环列出目录,子目录及文件信息。


操作流程参见参照ls接口。


moveFromLocal


类似于put,只是本地的源在复制之后会被删除。


1)按照上述章节所述,逐层解析<dst>绝对路径,获取目标文件夹的key/value数据;

(2)根据章节所述规则,结合目标文件夹的标号和源文件的文件名生成对应的key/value;

(3)根据步骤(2)生成的key/value上传源文件的相关信息;

(4)上传源文件内容到系统中;

(5)删除本地源文件。


moveToLocal


于get命令类似。


操作流程参见get接口。


mv


移动文件从源地址到目标地址。


(1)按照上述机制,逐层解析<dest>绝对路径获取目标文件夹的标号;

(2)逐层解析到源文件获取源文件的key/value数据;

(3)更改源文件中的key值将其中的父节点标号字段改为目标文件夹的标号。


rmr


递归删除指定文件和目录。


(1)按照上述机制,逐层解析到目标文件所在的位置获取指定文件的标记;

(2)采用递归算法根据标记删除指定的文件或目录。


setfacl


设置访问控制列表(acl)的文件和目录。


(1)按照上述机制,逐层解析,获取目标文件或路径的key/value数据;

(2)设置value中的ACL。


setrep


改变文件的目标副本系数。


(1)按照上述章节所述,逐层解析,获取目标文件的key/value数据;

(2)修改value中有关副本系数的字段。


stat


显示文件中的统计信息。


(1)按照上述章节所述,逐层解析,获取目标文件的key/value数据;

(2)获取value中关于文件的统计信息的相关字段。


tail


显示目标文件中的最后1KB数据。


(1)按照上述章节所述,逐层解析,获取目标文件的key/value数据;

(2)根据所得到的key/value查询最后一块中的1KB信息,如果最后一块不足1KB,则查询倒数第二块中信息,拼接成1KB。返回信息。


test


对路径进行检查。


(1)按照上述章节所述,对目标路径逐层解析,获取目标文件的key/value数据;

(2)检查目标文件中的key/value中的相关字段,以检测文件是否存在,大小是否为0,目录路径是否存在。


text


显示文件的文本内容,当文件为文本文件时,等同于cat。文件为压缩格式时,会先解压缩。


操作流程参见cat接口。


touchz


创建长度为0的文件。


操作流程参见mkdir接口。

基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口,布布扣,bubuko.com

时间: 2024-12-07 02:08:00

基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口的相关文章

HADOOP HDFS的设计

Hadoop提供的对其HDFS上的数据的处理方式,有以下几种, 1 批处理,mapreduce 2 实时处理:apache storm, spark streaming , ibm streams 3 交互式: 如pig , spark shell 都可以提供交互式地数据处理 4 sql: hive , impala 提供接口,可以使用sql标准语言进行数据查询分析 5 迭代处理:尤其是机器学习相关的算法,需要对数据反复数据,mapreduce不适应这种计算方式,它总是把它的中间结果输出到磁盘,

数道云大数据平台解决方案,Hadoop + HDFS+Hive+Hbase大数据开发整体架构设计

波若大数据平台(BR-odp)Hadoop + HDFS+Hive+Hbase大数据开发工具剖析: HDFS:分布式.高度容错性文件系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用,大规模的波若大数据平台(BR-odp)用户部署上1000台的HDFS集群.数据规模高达50PB以上 HDFS和MR共同组成Hadoop分布式系统体系结构的核心.HDFS在集群上实现了分布式文件系统,MR在集群上实现了分布式计算和任务处理.HDFS在MR任务处理过程中提供了文件操作和存储等支持,MR在HDF

HDFS跨外部存储系统的多层级存储

前言 目前大数据和云计算是当下讨论非常火热的2个词,笔者也非常相信在未来的时间内,以Hadoop系统生态圈为代表的大数据工具,将会被更多的企业所使用.在一些更大规模的公司,已经将大数据与云联系在了一起了,举个例子,我们将数据存储在HDFS内,然后在定期同步到云上,相当于云端存储的数据是一个back store.这样做的一个好处是防止本地集群的数据遭到意外的破坏或丢失,至少在云端我们还有备份.或者有另外的一些做法是,我们通过一层适配操作,将用户写入集群的数据直接就写到了远端的云上,但是对于用户而言

基于 ZooKeeper 搭建 Hadoop 高可用集群

一.高可用简介 二.集群规划 三.前置条件 四.集群配置 五.启动集群 六.查看集群 七.集群的二次启动 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多,所以它的实现也更加复杂,故下面先进行讲解: 1.1 高可用整体架构 HDFS 高可用架构如下: 图片引用自:https://www.edure

Hadoop HDFS (3) JAVA访问HDFS

现在我们来深入了解一下Hadoop的FileSystem类.这个类是用来跟Hadoop的文件系统进行交互的.虽然我们这里主要是针对HDFS,但是我们还是应该让我们的代码只使用抽象类FileSystem,这样我们的代码就可以跟任何一个Hadoop的文件系统交互了.在写测试代码时,我们可以用本地文件系统测试,部署时使用HDFS,只需配置一下,不需要修改代码了. 在Hadoop 1.x以后的版本中引入了一个新的文件系统接口叫FileContext,一个FileContext实例可以处理多种文件系统,而

atitit.基于http json api 接口设计 最佳实践 总结o7

atitit.基于http  json  api 接口设计 最佳实践 总结o7 1. 需求:::serverand android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通參数 meth,param, 2 2.2. 全部的參数定义 2 2.3. key,dynami key)韩式 static key? 2 2.4. 防篡改 sign 2 2.5. Encry加密 3 2.6. zip压缩:: 3 2.7. 首先压缩韩式加密??? 3 3. 选型大全:rim ,ws, http 

基于Spring的简易SSO设计

通常稍微规模大一些的企业,内部已经有很多的应用系统,多个系统整合首先要解决的便是“统一登录(SSO)”问题,之前写过一篇 利用Membership实现SSO(单点登录) ,java环境下已经有一些开源的成熟sso项目(比如CAS),但如果觉得CAS太麻烦,想自己再造轮子重复发明一个,可以参考下面的思路:(仍然是基于Cookie的实现,只不过安全性上略有加强,cookie端存放的token标识,不再与用户名.密码等这些敏感信息相关) 1.组件图 主要由3大部分组成, 1.1 SSO Client

Hadoop大象之旅009-通过Shell操作hdfs

Hadoop大象之旅009-通过Shell操作hdfs 老帅 调用Hadoop分布式文件系统(HDFS)Shell命令应使用bin/hadoop fs <args>的形式. 1.查看hdfs都有哪些Shell命令 参照前面章节中所述方法,使用SecureCRTPortable.exe登录CentOS; 使用命令"hadoopfs"查看hdfs的命令列表,如下图所示: hdfs的所有命令的格式,都为:hadoop fs –xx,具体使用方法,可参考官方文档: http://h

Windows 7中的VirtualBox中的Ubuntu 14.04中基于Docker安装Hadoop

1. 在VirtualBox中安装Ubuntu 14.04 2. 在Ubuntu 14.04中安装Docker 3. 安装基于Docker的Hadoop 下载image docker pull sequenceiq/hadoop-docker:2.6.0   运行container docker run -i -t sequenceiq/hadoop-docker:2.6.0 /etc/bootstrap.sh –bash   测试Hadoop(将ubuntu的内存调到2G,即2048MB,否则