1:eclipse创建一个项目,然后导入对应的jar包:

鼠标右击项目,点击properties或者alt+enter快捷键--->java build path--->libraries--->add library--->user library--->next--->user libraries--->new--->hdfsLib(根据自己的需要填写)---》add external jars(添加自己的需求包):

2:开始添加自己的需求包,路径如

  hadoop-2.4.1\share\hadoop\hdfs的hadoop-hdfs-2.4.1.jar和hadoop-2.4.1\share\hadoop\hdfs\lib下面的全部包;

  hadoop-2.4.1\share\hadoop\common的hadoop-common-2.4.1.jar和hadoop-2.4.1\share\hadoop\common\lib下面的全部包;

 package com.master01;

 import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException; import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator; public class HdfsTest { //public FileSystem fs = null;
/*
@Before
public void init() throws IOException, InterruptedException, URISyntaxException{
//读配置文件
Configuration conf = new Configuration();
//这里直接拷贝配置或者直接设置值
conf.set("fs.defaultFS", "hdfs://master:9000/"); //获取配置文件里面的内容
fs = FileSystem.get(conf);
//fs = FileSystem.get(new URI("hdfs://master:9000"), conf, "root");
}
*/ /**
* 上传文件
* @throws IOException
*/
public static void upload() throws IOException{
//读配置文件
//读取classpath下的core-site.xml配置文件,并且解析其的内容,封装到conf的对象中;
Configuration conf = new Configuration();
//这里直接拷贝配置或者直接设置值
//也可以在代码中对conf的配置信息进行手动设置,会覆盖配置文件中的配置信息
conf.set("fs.defaultFS", "hdfs://master:9000"); //获取配置文件里面的内容
//根据配置信息,去获取一个具体文件系统的客户端操作实例对象
FileSystem fs = FileSystem.get(conf);
//本地文件是输入流,hdfs是输出流 //先搞出路径
Path src = new Path("hdfs://master:9000/aa/test.txt");
//搞出输出流,即向hdfs上面写内容
FSDataOutputStream create = fs.create(src); //输入流就是读,本地文件,输入流
FileInputStream fileInputStream = new FileInputStream("d:/test.txt"); //将文件fileInputStream到create即完成上传到hdfs
IOUtils.copy(fileInputStream, create);
} //最快的上传文件的方法
public void upload02() throws IllegalArgumentException, IOException, InterruptedException, URISyntaxException{
//读配置文件
Configuration conf = new Configuration();
//这里直接拷贝配置或者直接设置值
conf.set("fs.defaultFS", "hdfs://master:9000"); //获取配置文件里面的内容
FileSystem fs = FileSystem.get(conf);
//FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), conf, "root");
fs.copyFromLocalFile(new Path("d:/test.txt"), new Path("hdfs://master:9000/aa/test.txt"));
} /**
* 下载文件
* @throws IOException
* @throws IllegalArgumentException
*/
public void download02() throws IllegalArgumentException, IOException{
//去配置文件
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://master:9000"); //获取配置文件里面的内容
FileSystem fs = FileSystem.get(conf);
fs.copyToLocalFile(new Path("hdfs://master:9000/aa/test.txt"), new Path("d:/test2.txt")); } /***
* 创建文件夹的方法
* @throws IOException
*/
public void mkdir02() throws IOException{
//主配置文件
Configuration conf = new Configuration();
//设置配置文件的值
conf.set("fs.defaultFS", "hdfs://master:9000");
//获取配置文件里面的内容
FileSystem fs = FileSystem.get(conf); //文件夹的创建
fs.mkdirs(new Path("hdfs://master:9000/aaa/bbb/ccc"));
} /**
* 删除文件
* @throws IOException
*/
public void remove02() throws IOException{
//主配置文件
Configuration conf = new Configuration();
//设置值
conf.set("fs.defaultFS", "hdfs://master:9000");
//获取配置文件里面的内容
FileSystem fs = FileSystem.get(conf); //执行删除操作
fs.delete(new Path("hdfs://master:9000/aaa/bbb/ccc"), true);
} /**
* 文件的移动
* @throws IOException
*/
public void move() throws IOException{
//主配置文件
Configuration conf = new Configuration();
//设置值
conf.set("fs.defaultFS", "hdfs://master:9000");
//获取配置文件里面的内容
FileSystem fs = FileSystem.get(conf); //移动操作
fs.rename(new Path("hdfs://master:9000/aa/test.txt"), new Path("hdfs://master:9000/aaa/bbb"));
} /***
* 查看文件的信息
* @throws IOException
*/
public void listFiles() throws IOException{
//主配置文件
Configuration conf = new Configuration();
//设置值
conf.set("fs.defaultFS", "hdfs://master:9000");
//获取配置文件里面的内容
FileSystem fs = FileSystem.get(conf); //查看的是文件,不是文件夹
//listFiles列出的是文件信息,而且提供递归遍历
RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("hdfs://master:9000/"), true);
//迭代输出信息
while(listFiles.hasNext()){
LocatedFileStatus file = listFiles.next();
//文件路径
Path path = file.getPath();
System.out.println(path.getName());
} System.out.println("=============================================");
//listStatus列出文件和文件夹的信息,但是不提供自带的递归遍历
FileStatus[] listStatus = fs.listStatus(new Path("hdfs://master:9000/"));
/*for(int i = 0 ; i<listStatus.length; i++){
System.out.println(listStatus[i]);
}*/
for(FileStatus fileStatus : listStatus){
//根据获取的路径获取文件夹的名称
Path path = fileStatus.getPath();
System.out.println(path.getName());
} } public static void main(String[] args) {
HdfsTest hdfsTest = new HdfsTest();
try {
//上传文件的调用
//hdfsTest.upload02(); //下载文件的调用
//hdfsTest.download02(); //文件夹的创建
//hdfsTest.mkdir02(); //删除操作
//hdfsTest.remove02(); //移动文件的操作
//hdfsTest.move(); //查看文件信息
hdfsTest.listFiles();
} catch (Exception e) {
e.printStackTrace();
}
} }

3:NameNode的职责

(1):维护元数据的信息;

(2):维护hdfs的目录树;

(3):响应客户端的请求;

一脸懵逼学习hadoop之HDFS的java客户端编写的更多相关文章

  1. 【Hadoop】HDFS的java客户端编写

    项目使用了Maven  Project 快速进行HDFS 客户端程序测试 客户端操作系统:win10 64位 JDK: 1.7.0_79 开发工具 :Eclipse Luna pom.xml < ...

  2. 2 weekend110的HDFS的JAVA客户端编写 + filesystem设计思想总结

    HDFS的JAVA客户端编写  现在,我们来玩玩,在linux系统里,玩eclipse 或者, 即,更改图标,成功 这个,别慌.重新换个版本就好,有错误出错是好事. http://www.eclips ...

  3. HDFS的Java客户端编写

    总结: 之前在教材上看hdfs的Java客户端编写,只有关键代码,呵呵…….闲话不说,上正文. 1. Hadoop 的Java客户端编写建议在linux系统上开发 2. 可以使用eclipse,ide ...

  4. 一次失败的尝试hdfs的java客户端编写(在linux下使用eclipse)

    一次失败的尝试hdfs的java客户端编写(在linux下使用eclipse) 给centOS安装图形界面 GNOME桌面环境 https://blog.csdn.net/wh211212/artic ...

  5. 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序

    一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流.反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象.Java序列化(java.io. ...

  6. 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)

    1)集群规划:主机名        IP      安装的软件                     运行的进程master    192.168.199.130   jdk.hadoop      ...

  7. 一脸懵逼学习HBase---基于HDFS实现的。(Hadoop的数据库,分布式的,大数据量的,随机的,实时的,非关系型数据库)

    1:HBase官网网址:http://hbase.apache.org/ 2:HBase表结构:建表时,不需要指定表中的字段,只需要指定若干个列族,插入数据时,列族中可以存储任意多个列(即KEY-VA ...

  8. 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

    1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStrin ...

  9. day03-hdfs的客户端操作\hdfs的java客户端编程

    5.hdfs的客户端操作 客户端的理解 hdfs的客户端有多种形式: 1.网页形式 2.命令行形式 3.客户端在哪里运行,没有约束,只要运行客户端的机器能够跟hdfs集群联网 文件的切块大小和存储的副 ...

随机推荐

  1. Contains Duplicate I & III

    Contains Duplicate I Given an array of integers, find if the array contains any duplicates. Your fun ...

  2. Python3 GIL(Global Interpreter Lock)与多线程

    GIL(Global Interpreter Lock)与多线程 GIL介绍 GIL与Lock GIL与多线程 多线程性能测试 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线 ...

  3. init级别

    新年第一天从温习记模糊的旧知识开始: init级别包含0-6: 0:关机 1:单用户(Root Only) 2:多用户(不包含Net File System 3:多用户(完全) 4:安全模式 5:桌面 ...

  4. SQL Server Profiler 常见问题总结

    1.跟踪指定数据库 SELECT DB_ID('数据名称') 原文:https://jingyan.baidu.com/article/647f0115be128a7f2048a87d.html 2. ...

  5. 两张图概括struts2执行流程核心(经典)

  6. 使用percona-xtrabackup工具对mysql数据库的备份方案

    使用percona-xtrabackup工具对mysql数据库的备份方案 需要备份mysql的主机 172.16.155.23存放备份mysql的主机 172.16.155.22 目的:将155.23 ...

  7. mybatis:三种参数传递(转载)

    转载自:https://www.2cto.com/database/201409/338155.html 第一种方案 DAO层的函数方法 Public User selectUser(String n ...

  8. ASP.NET MVC5高级编程 之 模型

    1. 为MVC Music Store建模 Models文件夹(右击) --> 添加 --> 类 为类添加对应的属性: public class Album { public virtua ...

  9. [C]C语言中的指针和内存泄漏几种情况

    引言 原文地址:http://www.cnblogs.com/archimedes/p/c-point-memory-leak.html,转载请注明源地址. 对于任何使用C语言的人,如果问他们C语言的 ...

  10. Java编写一个随机产生小学生四则运算题30道

    //注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0. package 课堂测试1; import java.io.File; im ...