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. 记录一段QQ关于 UNIGUI 的Session 时间设定

    记录一段QQ关于 UNIGUI 的Session 时间设定,来自[台中]cmj(31365722):  [重點說明] 1.UniGUI的Session就是UniMainModule.   2.Sess ...

  2. replicate_wild_do_table和replicate-wild-ignore-table的使用【转】

    使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错. 如在Master(主)服务器上设置 replicate_do_db=test(my.conf ...

  3. shell监控自动备份是否成功(判断文件是否存在)

    作者:邓聪聪 在自动打包生成备份sql文件后,对运行情况做一个监控!  命令前加time,查看命令执行完成所用时间! FILE_DIR=/root/ DATE=$(date +%F) FILE_NAM ...

  4. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  5. 如何确定windows启动类型是bios还是uefi

    原文地址:http://www.kqidong.com/bios/3728.html 如何确定windows启动类型是bios还是uefi?随着装机越来越简单,大家对安装系统充满信心,但是了解到启动类 ...

  6. linux学习之硬盘的存储原理和内部架构

    原文地址:https://blog.csdn.net/tanggao1314/article/details/52074735 首先,让我们看一下硬盘的发展史: 1956年9月13日,IBM的IBM ...

  7. Python- 索引 B+数 比如书的目录

    1.索引 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题, 在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作, 因此对查询 ...

  8. C#一元二次方程

  9. Android组件化demo实现以及遇坑分享

    首先贴出demo的github地址:GitHub - TenzLiu/TenzModuleDemo: android组件化demo 作者:TenzLiu原文链接:https://www.jianshu ...

  10. functions 示例

    示例1:  ","字符串截取 CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VA ...