HDFS常用操作命令
- 查看HDFS文件目录:
hadoop fs -ls hdfs://kt:9000(当前还没有文件)
效果等同于:hadoop fs -ls /
效果也等同于:hdfs dfs -ls / - 在这个根目录创建一个文件或目录:
hadoop fs -mkdir /user
效果等同于:hadoop fs -mkdir hdfs://kt:9000/user
在WebUI上刷新可以看到多了一个user目录
再创建一个目录:hadoop fs -mkdir /user/hadoop-twq/cmd(会报错)
正确的方式:hadoop fs -mkdir -p /user/hadoop-twq/cmd(递归创建) - 把本地文件word.txt上传到HDFS文件系统上去:
hadoop fs -copyFromLocal word.txt /user/hadoop-twq/cmd
查看:hadoop fs -ls /user/hadoop-twq/cmd(txt文件存在)
再上传一次就会报错,如果想要覆盖文件要加-f
hadoop fs -copyFromLocal -f word.txt /user/hadoop-twq/cmd - 看文件内容:
hadoop fs -cat /user/hadoop-twq/cmd/word.txt - 用put方式代替copyFromlocal方式上传:
hadoop fs -put -f word.txt /user/hadoop-twq/cmd
将两个文件一起上传:
hadoop fs -put test.sh word2.txt /user/hadoop-twq/cmd
put还可以将文件流写到hdfs中:
hadoop fs -put - /user/hadoop-twq/cmd/put.txt(回车输入内容,Ctrl+D结束输入)然后查看 - 从hdfs下载put.txt到本地:
hadoop fs -get /user/hadoop-twq/cmd/put.txt - 创建文件:
hadoop fs -touchz /user/hadoop-twq/cmd/flag.txt - 将flag.txt移动到/user/hadoop-twq目录下:
hadoop fs -mv /user/hadoop-twq/cmd/flag.txt /user/hadoop-twq - 将put.txt文件权限改成744:
hadoop fs -chmod 744 /user/hadoop-twq/cmd/put.txt
将cmd目录权限改成777:
hadoop fs -chmod -R 777 /user/hadoop-twq/cmd - 查尝试列出文件命令的异同:
hadoop fs -ls /user/hadoop-twq/cmd
hadoop fs -ls -h /user/hadoop-twq/cmd
hadoop fs -ls -d /user/hadoop-twq/cmd
hadoop fs -ls -R /user/hadoop-twq/cmd
hadoop fs -ls -R /user/hadoop-twq
hadoop fs -ls -R /user - 查看文件大小:
hadoop fs -du /user/hadoop-twq/cmd
hadoop fs -du -h /user/hadoop-twq/cmd(大小可读)
hadoop fs -du -s -h /user/hadoop-twq/cmd(整个目录有多大) - 查看hdfs总共有多大:
hadoop fs -df
hadoop fs -df -h(大小可读) - 删除文件
hadoop fs -rm /文件名 (只可以删除文件)
hdfs dfs -rm /目录名/* (删除该目录下的所有文件)
hadoop fs -rm -r /目录名 (删除该目录以及里面的所有文件)
eclipse基于hdfs的Api编程
常用代码如下
package com.testHDFS; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.util.LineReader; public class TestHDFS { private static Configuration conf = new Configuration(); private static final String HADOOP_URL="hdfs://kt:9000"; private static FileSystem fs; /** * @param args */ public static void main(String[] args)throws Exception { // TODO Auto-generated method stub FileSystem.setDefaultUri(conf, HADOOP_URL); fs = FileSystem.get(conf); //创建目录test /*boolean flag=fs.mkdirs(new Path("/test")); if(flag){ System.out.println("success!"); }else{ System.out.println("fail"); }*/ //复制D盘的文件到HDFS的/test中 /*fs.copyFromLocalFile(new Path("e:\\sad.txt"), new Path("/test"));*/ //在HDFS中创建文件 /*boolean flag=fs.createNewFile(new Path("/test/test1.txt")); if(flag){ System.out.println("success"); }else{ System.out.println("fail"); }*/ //列出所有文件状态信息 FileStatus[] lists=fs.listStatus(new Path("/")); for(FileStatus k:lists){ System.out.println( k.getPath()+";"+ k.getPermission().toString()+";"+k.getOwner()+";"+k.getLen()+";"+k.getAccessTime()); } //更改文件的名称 /*boolean flag=fs.rename(new Path("/test/test1.txt"), new Path("/test/test0.txt")); if(flag){ System.out.println("success"); }else{ System.out.println("fail"); }*/ //文件流 /*FSDataOutputStream out = fs.create(new Path("/test0.txt"), true); FSDataInputStream in = fs.open(new Path("/test/test0.txt")); IOUtils.copyBytes(in, out, 4096, true);//true表示自动关闭流 */ //删除操作 /*boolean flag=fs.delete(new Path("/test0.txt"),true); if(flag){ System.out.println("success"); }else{ System.out.println("fail"); }*/ //远程 下载或者删除 // fs.copyFromLocalFile(new Path("d:\\article.data"),new Path("/user/hadoop/input")); // fs.setReplication(new Path("/test/test124.txt"), (short)5); // fs.copyFromLocalFile(new Path("e:\\test2.txt"), new Path("/test")); // fs.copyToLocalFile(new Path("/test"), new Path("d:/")); //判断文件是否存在 /*boolean flag=fs.exists(new Path("/test")); if(flag){ System.out.println("exists!"); }else{ System.out.println("not exists!"); }*/ //读取HDFS的文件内容 /*FSDataInputStream inputStream = fs.open(new Path("/test/test2.txt")); Text line = new Text(); LineReader liReader = new LineReader(inputStream); while (liReader.readLine(line) > 0) { System.out.println(line); } inputStream.close();*/ //获取根目录信息 /*System.out.println(fs.getDefaultBlockSize()); System.out.println(fs.getHomeDirectory());*/ } }
测试列出所有文件状态信息
Hadoop的相关文档如下
点击下载
链接:https://pan.baidu.com/s/1s2SdzrD11kB7AePxWcCxYQ
提取码:lw20