通过JAVA对HDFS进行操作&管理插件

Posted 树深时见鹿``

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过JAVA对HDFS进行操作&管理插件相关的知识,希望对你有一定的参考价值。


建立连接,导包

如果不用maven,解压hadoop安装包,share==>hadoop==>common==>lib  里面的全部复制粘贴过去, share==>hadoop==>hdfs==>lib  里面的全部复制粘贴过去。

如果用maven,maven repository中搜索hadoop,找到common,找到对应版本

 

复制到pom.xml

 

再导入hadoop Client

 

第一步建立连接,连接namenode

之前通过linuxhdfs配置时,在core-site.xml中,配置

 

连接的是namenode

现在用myeclipse,书写运行文件,先对文件进行读操作:

HDFSClient.java

 

package com.neuedu.test;

import java.io.BufferedReader;
import java.io.IOException;
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 HFDSClient {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        read();
        
    }

    public static void read(){
        //-------连接namenode:
                //1、创建一个配置对象(与配置文件是一个原理)
                Configuration conf=new Configuration();
                conf.set("fs.defaultFS", "hdfs://192.168.71.141:9000");//set配置对象
                Path path=new Path("/hadoop/abc.txt");
                //读文件
                //FileSystem fs=new //发现方法不能用,因为它为抽象方法,在不能用情况下,创建对象时方法很陌生且不能用,调用一下静态方法,看哪个可以返回
                try {
                    FileSystem fs=FileSystem.get(conf);//只用来连接namenode
                    //因为是读文件,需要返回一个输入流
                    FSDataInputStream input = fs.open(path);//f 为一个路径,告诉它文件在哪 //返回了一个流
                    //读文字可以转化为字符流,转换:
                    InputStreamReader isr=new InputStreamReader(input);
                    //如果想按行读,
                    BufferedReader br=new BufferedReader(isr);
                    //开始读
                    String str=br.readLine();//按行读
                    while(str!=null){//只要不为空
                        System.out.println(str);
                        str=br.readLine();//每输出一行,读一次
                    }
                    br.close();
                    isr.close();
                    input.close();//流都需要关闭
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    }
}
        

 

之后运行,结果:

 

查看文件是否正确:

现在对文件进行写操作,分为追加和直接写入

追加方法:

public static void append(){
        Configuration conf=new Configuration();
        conf.set("fs.defaultFS", "hdfs://192.168.71.141:9000");//set配置对象
        
        try {
            FileSystem fs=FileSystem.get(conf);
            FSDataOutputStream outpustream = fs.append(new Path("/hadoop/abc.txt"));//在哪个文件上追加
            outpustream.writeBytes("123123123");
            
            outpustream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

之后再读一下,看看是否写成功:

直接写入的形式:

//写入:直接写入
    public static void write(){
        Configuration conf=new Configuration();
        conf.set("fs.defaultFS", "hdfs://192.168.71.141:9000");//set配置对象
        
        try {
            FileSystem fs=FileSystem.get(conf);
            FSDataOutputStream outpustream = fs.create(new Path("/hadoop/abc.txt"));//在哪个文件上追加
            outpustream.writeBytes("123123123");
            
            outpustream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

通过read()查看结果:

 


因为来回切换函数查看文件内容很不方便,在此进行配置DFS Location,方便对hdfs进行管理:

 

先将复制到myeclipse根目录的plugins中,

重启myeclipse重启之后,点击windows==>show view==>other==>会多出一个视图

双击此视图,右击新建,

出现视图,能够显示hdfs中的文件目录,查看文件内容

 

 

以上是关于通过JAVA对HDFS进行操作&管理插件的主要内容,如果未能解决你的问题,请参考以下文章

ranger-hdfs 插件组权限测试

eclipse通过maven进行打包并且对hdfs上的文件进行wordcount

Java API操作HDFS

Hadoop3 - Java Api 操作 HDFS

Hadoop3 - Java Api 操作 HDFS

Hadoop3 - Java Api 操作 HDFS