码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-07-13 22:50:11      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:reader   inux   tfs   data   plugins   while   tac   XML   根目录   


建立连接,导包

如果不用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进行操作&管理插件

标签:reader   inux   tfs   data   plugins   while   tac   XML   根目录   

原文地址:https://www.cnblogs.com/610553824lyx/p/9307769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!