• hadoop学习(三)HDFS常用命令以及java操作HDFS


    一、HDFS的常用命令

      1、查看根目录下的信息:./hadoop dfs -ls

      2、查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./in

      3、删除文件:./hadoop dfs -rmr 文件名

      4、上传文件到HDFS:./hadoop dfs -put 系统目录下的文件 hadoop目录

      5、将HDFS的文件复制到本地:./hadoop dfs -get haddo目录 本地目录

      6、查看HDFS下某个文件的内容:./hadoop dfs -cat 文件名

      7、查看HDFS基本统计信息:./hadoop dfsadmin -report

      8、进入安全模式:./hadoop dfsadmin -safemode enter

      9、退出安全模式:./hadoop dfsadmin -safemode leave

      10、用hdfs(管理员)用户创建目录:sudo -u hdfs hadoop fs -mkdir /user/neu

      11、用hdfs(管理员)用户给目录分配权限:sudo -u hdfs hadoop fs -chown neu /user/neu

       注意:用./hadoop dfs -ls命令的时候,有时候会出现一个“ls:Cannot access  .: No such file or directory.”的错误,讲命令改为 ./hadoop dfs -ls /   即可解决。

    二、java操作HDFS文件系统

      java操作HDFS文件系统,有两种方式,一种是直接在Linux上装eclipse,装插件,配置好环境,直接执行;另外一种是将java类打成jar包,添加到HDFS系统中去执行。此处要说的是第二种方式,使用的hadoop版本是0.20.2,执行的操作是添加文件和查看文件最后修改时间,具体步骤如下:

      1、创建一个java工程,将hadoop-0.20.2目录下的hadoop-0.20.2-core.jar和hadoop-0.20.2/lib/目录下commons-logging-1.0.4.jar添加java工程中。

      2、创建两个java类,分别如下:

     1 package com.gao.example;
     2 
     3 import java.io.IOException;
     4 
     5 import org.apache.hadoop.conf.Configuration;
     6 import org.apache.hadoop.fs.FileStatus;
     7 import org.apache.hadoop.fs.FileSystem;
     8 import org.apache.hadoop.fs.Path;
     9 
    10 /**
    11  * @author gaojiang
    12  *
    13  */
    14 public class FileTime {
    15 
    16     /**
    17      * @param args
    18      * @throws IOException 
    19      */
    20     public static void main(String[] args) throws IOException {
    21         // TODO Auto-generated method stub
    22         Configuration conf = new Configuration();
    23         FileSystem hdfs = FileSystem.get(conf);
    24         Path path = new Path("./in/test1.txt");
    25         FileStatus filestatus = hdfs.getFileStatus(path);
    26         long time = filestatus.getModificationTime();
    27         System.out.println("time1 is "+time);
    28         
    29         Path path2 = new Path("./mkdir.jar");
    30         FileStatus filestatus2 = hdfs.getFileStatus(path2);
    31         long time2 = filestatus2.getModificationTime();
    32         System.out.println("time2 is "+time2);
    33     }
    34 
    35 }
     1 /**
     2  * 
     3  */
     4 package com.gao.example;
     5 
     6 import java.io.IOException;
     7 
     8 import org.apache.hadoop.conf.Configuration;
     9 import org.apache.hadoop.fs.FSDataOutputStream;
    10 import org.apache.hadoop.fs.FileSystem;
    11 import org.apache.hadoop.fs.Path;
    12 
    13 /**
    14  * @author gaojiang
    15  *
    16  */
    17 public class Mkdir {
    18 
    19     /**
    20      * @param args
    21      * @throws IOException 
    22      */
    23     public static void main(String[] args) throws IOException {
    24         // TODO Auto-generated method stub
    25         Configuration conf = new Configuration();
    26         byte [] buff="hello word!".getBytes();
    27         FileSystem hdfs =FileSystem.get(conf);
    28         Path dfs = new Path("./test");
    29         FSDataOutputStream out = hdfs.create(dfs);
    30         out.write(buff,0,buff.length);
    31         System.out.println("创建完毕");
    32     }
    33 
    34 }

      3、将工程打包,这里可以打成Runnable Jar file或者JAR file,打成Runnable的,只能以一个类作为入口类,打成JAR file,可以指定要执行的类名。

      4、使用bin/hadoop dfs -put命令将打好的JAR包添加到HDFS系统中,使用bin/hadooop jar 包名 命令即可运行Runnable Jar,如果是打的JAR file,还需要在包名后面明确指出类名的完整路径。

      5、需要注意的是,在java代码中创建Hadoop文件系统下的文件时,需要指出./test,而炼数成金视频中讲的只是/test,安装这样的操作去做,坑死我了。。。

  • 相关阅读:
    pyinstaller打包Django项目
    一文览遍Lua
    6. Z 字形变换
    leetcode 5. 最长回文子串
    leetcode 4. 寻找两个正序数组的中位数
    leetcode 3. 无重复字符的最长子串
    leetcode 2.两数相加
    leetcode 1. 两数之和
    线上又炸了
    EasyNetQ 不同框架序列化反序列化问题
  • 原文地址:https://www.cnblogs.com/gaojiang/p/4415139.html
Copyright © 2020-2023  润新知