zoukankan      html  css  js  c++  java
  • 通过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中的文件目录,查看文件内容

     

  • 相关阅读:
    LINQ学习系列-----1.3 扩展方法
    表单重复提交的三种情况及解决办法
    JDBC的简单封装
    Java学习路线图
    成为一名Java高级工程师你需要学什么
    站在烦恼里仰望幸福
    如何发布Web项目到互联网
    用户管理的设计--2.新增用户信息实现
    MD5加密工具
    springMvc注解之@ResponseBody和@RequestBody
  • 原文地址:https://www.cnblogs.com/610553824lyx/p/9307769.html
Copyright © 2011-2022 走看看