HDFS&HBase常用命令

HDFS常用命令

1.启动与关闭hadoop

$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh #启动hadoop

$ cd /usr/local/hadoop
$ ./sbin/stop-dfs.sh #关闭hadoop

2.利用Shell命令与HDFS进行交互

有三种shell命令方式:

$ hadoop fs   #适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
$ hadoop fs   #只能适用于HDFS文件系统
$ hdfs dfs    #只能适用于HDFS文件系统

其中fs命令是HDFS最常用的命令,利用fs命令可以查看HDFS文件系统的目录结构、上传和下载数据、创建文件等。该命令的用法如下:

$ hadoop fs -ls <path>   # 显示<path>指定的文件的详细信息

$ hadoop fs -ls -R <path>   # ls命令的递归版本

$ hadoop fs -cat <path>   # 将<path>指定的文件内容输出到标准输出(stdout)

$ hadoop fs -chgrp [-R] group <path>   # 将<path>指定的文件所属的组改为group,使用-R对<path>指定的文件夹内的文件进行递归操作,这个命令只适用于超级用户

$ hadoop fs -chown [-R] [owner] [:[group]] <path>   # 改变<path>指定的文件的拥有者,-R用于递归改变文件夹内的文件的拥有者,这个命令只适用于超级用户

$ hadoop fs -chmod [-R] <mode><path>   # 将<path>指定的文件的权限更改为<mode>,这个命令只适用于超级用户和文件的所有者

$ hadoop fs -tail [-f] <path>   # 将<path>指定的文件最后1KB的内容输出到标准输出(stdout)上,-f选项用于持续检测新添加到文件中的内容

$ hadoop fs -stat [format] <path>   # 以指定的格式返回显示<path>指定的文件的相关信息,当不指定format的时候,返回文件<path>的创建日期

$ hadoop fs -touchz <path>   # 创建一个<path>指定的空文件

$ hadoop fs -mkdir [-p] <path>   # 创建<path>指定的一个或多个文件夹,-p选项用于递归创建子文件夹

$ hadoop fs -copyFromLocal <localsrc><dst>   # 将本地源文件<localsrc>复制到路径<dst>指定的文件或文件夹中

$ hadoop fs -copyToLocal [-ignorecrc] [-crc] <target><localdst>   # 将目标文件<target>复制到本地文件或文件夹<localdst>中,可用-ignorecrc选项复制CRC校验失败的文件,使用-crc选项复制文件以及CRC信息

$ hadoop fs -cp <src><dst>   # 将文件从源路径<src>复制到目标路径<dst>

$ hadoop fs -du <path>   # 显示<path>指定的文件或文件夹中所有文件的大小

$ hadoop fs -expunge   # 清空回收站

$ hadoop fs -get [-ignorecrc] [-crc] <src><localdst>   # 复制<src>指定的文件到本地文件系统<localdst>指定的文件或文件夹,可用-ignorecrc选项复制CRC校验失败的文件,使用-crc选项复制文件以及CRC信息

$ hadoop fs -getmerge [-nl] <src><localdst>   # 对<src>指定的源目录中的所有文件进行合并,写入<localdst>指定的本地文件。-nl是可选的,用于指定在每个文件结尾添加一个换行符

$ hadoop fs -put <localsrc><dst>   # 从本地文件系统中复制<localsrc>指定的单个或多个源文件到<dst>指定的目标文件系统中,也支持从标准输入(stdin)中读取输入写入目标文件系统

$ hadoop fs -moveFromLocal <localsrc><dst>   # 与put命令功能相同,但是文件上传结束后会从本地文件系统中删除<localsrc>指定的文件

$ hadoop fs -mv <src><dst>   # 将文件从源路径<src>移动到目标路径<dst>

$ hadoop fs -rm <path>   # 删除<path>指定的文件,只删除非空目录和文件

$ hadoop fs -rm -r <path>   # 删除<path>指定的文件夹下的所有文件,-r选项表示递归删除子目录

$ hadoop fs -setrep [-R] <path>   # 改变<path>指定的文件的副本系数,-R选项用于递归改变目录下所有文件的副本系数

$ hadoop fs -test -[ezd] <path>   # 检查<path>指定的文件或文件夹的相关信息,不同选项的作用如下:
-e 检查文件是否存在,存在返回0,否则返回1
-z 检查文件是否是0字节,是则返回0,否则返回1
-d 如果路径是个目录,则返回1,否则返回0

$ hadoop fs -text <path>   # 将<path>指定的文件输出为文本格式,文件的格式允许是zip和TextRecordInputStream等

3.hdfs常用的Java API

  • org.apache.hadoop.fs.FileSystem
    一个通用文件系统的抽象基类,可以被分布式文件系统继承。所有可能使用Hadoop文件系统的代码都要使用到这个类。Hadoop为FileSystem这个抽象类提供了多种具体的实现,如LocalFileSystem、DistributedFileSystem 、HftpFileSystem 、HsftpFileSystem、HarFileSystem 、KosmosFileSystem 、FtpFileSystem、NativeS3FileSystem等。
  • org.apache.hadoop.fs.FileStatus
    一个接口, 用于向客户端展示系统中文件和目录的元数据,具体包括文件大小、块大小、副本信息、所有者、修改时间等,可通过FileSystem.listStatus0方法获得具体的实例对象。
  • org.apache.hadoop.fs.FSDataInputStream
    文件输人流,用于读取Hadoop文件。
  • org.apache.hadoop.fs.FSDataOutputStream
    文件输出流,用于写Hadoop文件。
  • org.apache.hadoop.conf.Configuration
    访问配置项。所有的配置项的值,如果在core-site.xml中有对应的配置,则以core-site.xml为准。
  • org.apache.hadoop.fs.Path
    用于表示Hadoop文件系统中的一一=个文件或者一个目录的路径。
  • org.apache.hadoop.fs.PathFilter
    一个接口, 通过实现方法PathFilter.accept(Path path)来判定是否接收路径path表示的文件或目录。

HBASE常用命令

1.启动&关闭hbase

$ cd /usr/local/hbase
$ bin/start-hbase.sh #启动hbase

$ cd /usr/local/hbase
$ bin/stop-hbase.sh #关闭hbase

2.hbase常用的Shell命令

启动hbase后输入hbase shell进入shell环境,可输入help查看所有shell命令。

1.create:创建表
#创建表t1,列族为f1,列族版本号为5
hbase>create 't1',{NAME => 'f1', VERSION => 5}
#创建表t1,列族分别为f1、f2、f3
hbase>create 't1',{NAME => 'f1'},{NAME => 'f2'},{NAME => 'f3'}
hbase>create 't1','f1','f2','f3' #等价
#创建表t1,将表依据分割算法HexStringSplit分布在15个region里
hbase>create 't1','f1',{NUMREGIONS => 15,SPLITALGO => 'HexStringSplit'}
#创建表t1,指定切分点
hbase>create 't1','f1',{SPLITS => ['10','20','30','40']}

2.list:列出HBase中所有表的信息

3.put:向表、行、列指定的单元格添加数据
hbase>put 't1','row1','f1:c1','value',1421822284898

4.get:指定表名、行、列、时间戳、时间范围和版本号获得相应单元格的值
hbase>get 't1','r1',{COLUMN => 'c1',TIMERRANGE => [ts1,ts2],VERSIONS => 4}
#获得表t1、行r1、列c1和c2上的数据
hbase>get 't1','r1','c1','c2'

5.scan:浏览表的相关信息
# 可以通过TIMERANGE、FILTER、LIMIT、STARTROW、STOPROW、TIMESTAMP、MAXLENGTH、COLUMES、CACHE来限定
#浏览表.META.、列info:regioninfo上的数据
hbase>scan '.META.',{COLUMN => 'info:regioninfo'}
#浏览表t1、列c1、时间范围[1303668804,1303668904]的数据
hbase>scan 't1',{COLUMN => 'c1',TIMERANGE => [1303668804,1303668904]}

6.alter:修改列族模式
#向表t1添加列族f1
hbase>alter 't1',NAME='f1'
#删除表t1中的列族f1
hbase>alter 't1',NAME='f1',METHOD => 'delete'
#设定表t1中列族f1最大为128MB
hbase>alter 't1',METHOD => 'table_att',MAX_FILESIZE => '134217728'

7.count:统计表中的行数
hbase>count 't1'

8.describe:显示表的相关信息
hbase>describe 't1'

9.enable/disable:使表有效或无效

10.delete:删除指定单元格的数据
#删除表t1、行r1、列c1、时间戳为ts1上的数据
hbase>delete 't1','r1','c1',ts1

11.drop:删除表,删除之前必须使表无效

12.exists:判断表是否存在

13.truncate:使表无效,删除该表,然后重新建立表

14.exit:退出HBase Shell

15.shutdown:关闭HBase集群

16.version:输出HBase版本信息

17.status:输出HBase集群状态信息
#信息详细程度:summary、simple、detailed
hbase>status 'detailed'

3.hbase常用的Java API

参考:Hbase(六) hbase Java API – 博客园

    原文作者:Catchy_
    原文地址: https://www.jianshu.com/p/3a1c80fd0e5a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞