前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop——hdfs常用操作和api编程

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

作者头像
不愿意做鱼的小鲸鱼
发布2022-09-24 09:41:22
2140
发布2022-09-24 09:41:22
举报
文章被收录于专栏:web全栈web全栈

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编程

常用代码如下

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HDFS常用操作命令
  • eclipse基于hdfs的Api编程
  • Hadoop的相关文档如下
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档