通过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
之前通过linux对hdfs配置时,在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进行操作&管理插件的主要内容,如果未能解决你的问题,请参考以下文章