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'