Hadoop——hdfs常用操作和api编程

11 篇文章 0 订阅

HDFS常用操作命令

  1. 查看HDFS文件目录:
    hadoop fs -ls hdfs://kt:9000(当前还没有文件)
    效果等同于:hadoop fs -ls /
    效果也等同于:hdfs dfs -ls /
  2. 在这个根目录创建一个文件或目录:
    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(递归创建)
  3. 把本地文件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
  4. 看文件内容:
    hadoop fs -cat /user/hadoop-twq/cmd/word.txt
  5. 用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结束输入)然后查看
  6. 从hdfs下载put.txt到本地:
    hadoop fs -get /user/hadoop-twq/cmd/put.txt
  7. 创建文件:
    hadoop fs -touchz /user/hadoop-twq/cmd/flag.txt
  8. 将flag.txt移动到/user/hadoop-twq目录下:
    hadoop fs -mv /user/hadoop-twq/cmd/flag.txt /user/hadoop-twq
  9. 将put.txt文件权限改成744:
    hadoop fs -chmod 744 /user/hadoop-twq/cmd/put.txt
    将cmd目录权限改成777:
    hadoop fs -chmod -R 777 /user/hadoop-twq/cmd
  10. 查尝试列出文件命令的异同:
    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
  11. 查看文件大小:
    hadoop fs -du /user/hadoop-twq/cmd
    hadoop fs -du -h /user/hadoop-twq/cmd(大小可读)
    hadoop fs -du -s -h /user/hadoop-twq/cmd(整个目录有多大)
  12. 查看hdfs总共有多大:
    hadoop fs -df
    hadoop fs -df -h(大小可读)
  13. 删除文件
    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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿意做鱼的小鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值