zoukankan      html  css  js  c++  java
  • (Hadoop)HDFS常用操作

    目录:

    注意1、使用前启动hadoop

    注意2、三种使用文件系统的shell命令方式

    注意3、配置环境

    注意4、第一次使用HDFS时

    一、hdfs dfs 命令的常用操作(先启动Hadoop)

    二、通过Java API操作HDFS (先启动Hadoop)

    三、基本类似于Linux的常用操作命令

    注意:

    1、先我们需要启动Hadoop。转到hadoop目录下,启动hadoop

     cd /usr/local/hadoop

    ./sbin/start-dfs.sh

    2、命令是以”./bin/hadoop dfs”开头的Shell命令方式,实际上有三种shell命令方式(如果配置好环境变量,可以用下边的第三条命令替换掉本句开头的加粗部分)。

    hadoop fs           #适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统

    hadoop dfs          #只能适用于HDFS文件系统

    hdfs dfs            #跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

    3、配置环境 (注意:hadoop的安装目录为/usr/local下)

    vim  ~/.bashrc          #进入编辑,在最前面加入如下单独一行

    export  PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

    source  ~/.bashrc       #使设置生效,现在可以在任意目录中直接使用 hdfs 等命令了

    4、第一次使用HDFS时

    Hadoop系统安装好以后,第一次使用HDFS时,需要首先在HDFS中创建用户目录 : 

    hdfs dfs -mkdir -p /user/hadoop     #由于采用的是hadoop用户登录,所以在HDFS中创建一个“/user/hadoop”用户目录,本地上传的文件都会被保存在/user/hadoop下。

    一、hdfs dfs命令的常用操作(提前启动hadoop并配置好PATH环境变量

    1、显示帮助

    ./bin/hadoop fs                                                        #显示fs支持的所有命令   

    ./bin/hadoop fs -help put                                         #查看put命令如何使用

    2、创建目录——  -mkdir

    hdfs dfs -mkdir test                                                 #在用户目录(/user/hadoop)下创建一个test目录

    hdfs dfs -mkdir /test                                                #在HDFS的给目录(/)下创建一个test目录

    hdfs dfs -mkdir -p /test1/test2                                 #创建多级目录,加入参数“-p”

    3、显示文件相关信息—— -ls

    hdfs dfs -ls                                                             #列出HDFS上的所有目录

    hdfs dfs -ls .                                                           #显示HDFS中与当前用户对应的用户目录下的内容

    hdfs dfs -ls ./test                                                    #显示HDFS中./test(指定文件)的信息

    4、显示文件内容—— -cat

    hdfs dfs -cat ./test.txt                                             #显示文件内容 

    5、文件上传到HDFS中—— -put / -appendToFile / -copyFromLocal

    hdfs  dfs  -put  /home/hadoop/下载/file  ./                                 #将本地/home/hadoop/下载/file 文件目录下的file上传到HDFS中的./(即user/hadoop)目录下                                           

    hdfs  dfs  -appendToFile  /home/hadoop/下载/file  ./                #若文件存在,则追加到file文件末尾

    hdfs  dfs  -copyFromLocal  /home/hadoop/下载/file  ./             #若HDFS中文件已存在,则覆盖file原有文件

     6、下载HDFS中的文件—— -get / -copyToLocal

     hdfs  dfs  -get  ./file  /home/hadoop/下载                                 #HDFS中的file文件下载到本地的 下载 目录下  

    hdfs  dfs  -copyToLocal  ./file  /home/hadoop/下载/file1           #若本地存在该文件,对文件重命名

    7、在HDFS中移动文件—— -mv

    hdfs  dfs  -mv  ./file  ./test                              #将file移动到test文件夹下

    8、删除HDFS中的指定文件—— -rm

    hdfs  dfs  -rm  ./file                                         #删除file文件

    hdfs  dfs  -rm  -r  ./test                                   #删除test目录

    二、通过Java API操作HDFS

    1、写入到HDFS(会自动在HDFS中创建一个文件)

    import java.io.IOException;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDataOutputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;

    public class Write
    {
    public static void main(String[] args)
    {
    Configuration conf =new Configuration();
    conf.set("fs.defaultFS", "hdfs://localhost:9000");
    conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
    String filename="test";//要写入的文件名
    byte[] buff="hello World!hh ".getBytes();//要写入的内容
    try
    {
    FileSystem fs=FileSystem.get(conf);
    FSDataOutputStream os=fs.create(new Path(filename));
    os.write(buff, 0, buff.length);
    System.out.println("内容成功写入到"+filename);
    os.close();
    fs.close();
    } catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }

    2、读取HDFS中的文件内容

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;

    public class Read
    {
    public static void main(String[] args)
    {
    Configuration conf =new Configuration();
    conf.set("fs.defaultFS", "hdfs://localhost:9000");
    conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
    Path filename=new Path("test");//要读取的文件名
    try
    {
    FileSystem fs=FileSystem.get(conf);
    FSDataInputStream getIt=fs.open(filename);
    BufferedReader r=new BufferedReader(new InputStreamReader(getIt));
    String content=null;
    while((content=r.readLine())!=null)//一行一行的读,直到为空
    {
    System.out.println(content);
    }
    r.close();//关闭文件
    fs.close();//关闭HDFS
    }catch(Exception e)
    {
    e.printStackTrace();
    System.out.println(filename+"文件不存在");
    }
    }
    }

     
  • 相关阅读:
    9. 远程分支与本地分支管理
    8. Git 远程协作
    7. Git stash命令
    6. Git版本处理
    5. Git 本地分支命令
    4. Git 日志命令
    JVM垃圾回收分析
    python常用模块
    ubuntu18配置jetty9
    logback spring配置
  • 原文地址:https://www.cnblogs.com/hwh000/p/12315723.html
Copyright © 2011-2022 走看看