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. 【转】Python之面向对象与类

    [转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...

  2. HttpResonse 要记得关闭

    写了一个小程序,要识别网站上的图片,用到HttpRequest发请求,HttpResponse接受返回数据.刚开始循环可以跑两个,但是总是提示超时.后来查资料发现,在Http协议中,规定了同个Http ...

  3. DCL单例模式

    我们第一次写的单例模式是下面这样的: public class Singleton { private static Singleton instance = null; public static ...

  4. Linux系统平均负载3个数字的含义

    越来越多人开始接触Linux操作系统,从VPS到无线路由的刷机系统(如OpenWRT.Tomato),同时也必不可少地会在各式各样的探针和系统监测界面上看到"系统平均负载"或者&q ...

  5. mybatis打印SQL日志

    在配置的log4j输出时,不能打印SQL信息,在mybatis-config.xml中添加如下配置即可 <settings> <setting name="logImpl& ...

  6. Linux命令之查看文件夹、文件数量及其所占磁盘空间

    一.查看数量 # 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表 ...

  7. python 基础 01

    什么是计算机? cpu: 计算机的大脑; 读写速度 3GHZ 内存: (为了提高利用率) 缓冲硬盘和cpu 硬盘: 机械硬盘读写速度70mb/s 计算机里面读写的内容都是01代码 二进制(计算机只认二 ...

  8. VUE 多页面配置(一)

    1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求. 2. 实例 2.1 页面配置 2.1.1 默认首页 使用vue脚手架搭建后 ...

  9. bootstrap栅格系统中同行div高度不一致的解决方法

    通过div底部的margin和padding实现,缺点:下边框无法完整显示,建议在无边框情况下使用 .row{ overflow: hidden; } [class*="col-" ...

  10. linux软件安装、rpm操作命令、本地yum配置(有什么用)

    1.yum是什么? yum的全称是yellow dog updater,modified,是一个shell前端软件包管理器;基于RPM包管理,能够从指定的服务器下载RPM包并自动安装,可以自动处理依赖 ...