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下面的全部包;

  1 package com.master01;
  2
  3 import java.io.FileInputStream;
  4 import java.io.IOException;
  5 import java.net.URISyntaxException;
  6
  7 import org.apache.commons.io.IOUtils;
  8 import org.apache.hadoop.conf.Configuration;
  9 import org.apache.hadoop.fs.FSDataOutputStream;
 10 import org.apache.hadoop.fs.FileStatus;
 11 import org.apache.hadoop.fs.FileSystem;
 12 import org.apache.hadoop.fs.LocatedFileStatus;
 13 import org.apache.hadoop.fs.Path;
 14 import org.apache.hadoop.fs.RemoteIterator;
 15
 16 public class HdfsTest {
 17
 18
 19     //public FileSystem fs = null;
 20     /*
 21     @Before
 22     public void init() throws IOException, InterruptedException, URISyntaxException{
 23         //读配置文件
 24         Configuration conf = new Configuration();
 25         //这里直接拷贝配置或者直接设置值
 26         conf.set("fs.defaultFS", "hdfs://master:9000/");
 27
 28         //获取配置文件里面的内容
 29         fs = FileSystem.get(conf);
 30         //fs = FileSystem.get(new URI("hdfs://master:9000"), conf, "root");
 31     }
 32     */
 33
 34
 35     /**
 36      * 上传文件
 37      * @throws IOException
 38      */
 39     public static void upload() throws IOException{
 40         //读配置文件
 41         //读取classpath下的core-site.xml配置文件,并且解析其的内容,封装到conf的对象中;
 42         Configuration conf = new Configuration();
 43         //这里直接拷贝配置或者直接设置值
 44         //也可以在代码中对conf的配置信息进行手动设置,会覆盖配置文件中的配置信息
 45         conf.set("fs.defaultFS", "hdfs://master:9000");
 46
 47         //获取配置文件里面的内容
 48         //根据配置信息,去获取一个具体文件系统的客户端操作实例对象
 49         FileSystem fs = FileSystem.get(conf);
 50         //本地文件是输入流,hdfs是输出流
 51
 52         //先搞出路径
 53         Path src = new Path("hdfs://master:9000/aa/test.txt");
 54         //搞出输出流,即向hdfs上面写内容
 55         FSDataOutputStream create = fs.create(src);
 56
 57         //输入流就是读,本地文件,输入流
 58         FileInputStream fileInputStream = new FileInputStream("d:/test.txt");
 59
 60         //将文件fileInputStream到create即完成上传到hdfs
 61         IOUtils.copy(fileInputStream, create);
 62     }
 63
 64
 65     //最快的上传文件的方法
 66     public void upload02() throws IllegalArgumentException, IOException, InterruptedException, URISyntaxException{
 67         //读配置文件
 68         Configuration conf = new Configuration();
 69         //这里直接拷贝配置或者直接设置值
 70         conf.set("fs.defaultFS", "hdfs://master:9000");
 71
 72         //获取配置文件里面的内容
 73         FileSystem fs = FileSystem.get(conf);
 74         //FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), conf, "root");
 75         fs.copyFromLocalFile(new Path("d:/test.txt"), new Path("hdfs://master:9000/aa/test.txt"));
 76     }
 77
 78
 79     /**
 80      * 下载文件
 81      * @throws IOException
 82      * @throws IllegalArgumentException
 83      */
 84     public void download02() throws IllegalArgumentException, IOException{
 85         //去配置文件
 86         Configuration conf = new Configuration();
 87         conf.set("fs.defaultFS", "hdfs://master:9000");
 88
 89         //获取配置文件里面的内容
 90         FileSystem fs = FileSystem.get(conf);
 91         fs.copyToLocalFile(new Path("hdfs://master:9000/aa/test.txt"), new Path("d:/test2.txt"));
 92
 93     }
 94
 95     /***
 96      * 创建文件夹的方法
 97      * @throws IOException
 98      */
 99     public void mkdir02() throws IOException{
100         //主配置文件
101         Configuration conf = new Configuration();
102         //设置配置文件的值
103         conf.set("fs.defaultFS", "hdfs://master:9000");
104         //获取配置文件里面的内容
105         FileSystem fs = FileSystem.get(conf);
106
107         //文件夹的创建
108         fs.mkdirs(new Path("hdfs://master:9000/aaa/bbb/ccc"));
109     }
110
111
112     /**
113      * 删除文件
114      * @throws IOException
115      */
116     public void remove02() throws IOException{
117         //主配置文件
118         Configuration conf = new Configuration();
119         //设置值
120         conf.set("fs.defaultFS", "hdfs://master:9000");
121         //获取配置文件里面的内容
122         FileSystem fs = FileSystem.get(conf);
123
124         //执行删除操作
125         fs.delete(new Path("hdfs://master:9000/aaa/bbb/ccc"), true);
126     }
127
128     /**
129      * 文件的移动
130      * @throws IOException
131      */
132     public void move() throws IOException{
133         //主配置文件
134         Configuration conf = new Configuration();
135         //设置值
136         conf.set("fs.defaultFS", "hdfs://master:9000");
137         //获取配置文件里面的内容
138         FileSystem fs = FileSystem.get(conf);
139
140         //移动操作
141         fs.rename(new Path("hdfs://master:9000/aa/test.txt"), new Path("hdfs://master:9000/aaa/bbb"));
142     }
143
144     /***
145      * 查看文件的信息
146      * @throws IOException
147      */
148     public void listFiles() throws IOException{
149         //主配置文件
150         Configuration conf = new Configuration();
151         //设置值
152         conf.set("fs.defaultFS", "hdfs://master:9000");
153         //获取配置文件里面的内容
154         FileSystem fs = FileSystem.get(conf);
155
156         //查看的是文件,不是文件夹
157         //listFiles列出的是文件信息,而且提供递归遍历
158         RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("hdfs://master:9000/"), true);
159         //迭代输出信息
160         while(listFiles.hasNext()){
161             LocatedFileStatus file = listFiles.next();
162             //文件路径
163             Path path = file.getPath();
164             System.out.println(path.getName());
165         }
166
167         System.out.println("=============================================");
168         //listStatus列出文件和文件夹的信息,但是不提供自带的递归遍历
169         FileStatus[] listStatus = fs.listStatus(new Path("hdfs://master:9000/"));
170         /*for(int i = 0 ; i<listStatus.length; i++){
171             System.out.println(listStatus[i]);
172         }*/
173         for(FileStatus fileStatus : listStatus){
174             //根据获取的路径获取文件夹的名称
175             Path path = fileStatus.getPath();
176             System.out.println(path.getName());
177         }
178
179     }
180
181     public static void main(String[] args) {
182         HdfsTest hdfsTest = new HdfsTest();
183         try {
184             //上传文件的调用
185             //hdfsTest.upload02();
186
187             //下载文件的调用
188             //hdfsTest.download02();
189
190             //文件夹的创建
191             //hdfsTest.mkdir02();
192
193             //删除操作
194             //hdfsTest.remove02();
195
196             //移动文件的操作
197             //hdfsTest.move();
198
199             //查看文件信息
200             hdfsTest.listFiles();
201         } catch (Exception e) {
202             e.printStackTrace();
203         }
204     }
205
206 }


3:NameNode的职责

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

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

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

一脸懵逼学习hadoop之HDFS的java客户端编写相关推荐

  1. HDFS的JAVA客户端编写

    HDFS的shell操作很简单,直接查看文档就可以,和Linux指令类似,下面简单总结一下HDFS的JAVA客户端编写.(HA集群的话把core-site.xml,hdfs-site.xml,mapr ...

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

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

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

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

  4. 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错...

    一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错 windows下开发hadoop应用程序,hadoop部署 ...

  5. 一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试)

    一脸懵逼学习Hadoop-HA机制(以及HA机制的配置文件,测试) 1:能否让两个NameNode都正常影响客户端请求? 应该让两个NameNode节点在某个时间只能有一个节点正常影响客户端请求,相应 ...

  6. 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)

    一脸懵逼学习oracle(图形化界面操作--->PLSQL图形化界面) 1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQ ...

  7. 一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

    1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的 ...

  8. zookeeper学习(二)之java客户端API建立连接

    大家都知道,zookeeper作为一个分布式服务框架,用来解决分布式数据不一致的问题,今天来看看的提供的java语言的API,下面是zookeeper 3.4.1的文档地址,百度的apihttp:// ...

  9. 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错

    windows下开发hadoop应用程序,hadoop部署在linux环境中, 在运行调试时可能会出现无法找到主机,类似异常信息如下: java.net.UnknownHostException: u ...

最新文章

  1. linux php 如何停止,如何关闭linux
  2. 估算神经网络卷积核数量的近似方法
  3. 中药免疫肿瘤学数据库,TCMIO使用指南
  4. 六耳猕猴并不存在,真假猴王的六耳原来是他!
  5. [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
  6. 循环录(输)入 java 课的学生成绩(5个学生),统计分数大于等于 80 分的学生
  7. [列联相关] 列联系数计算及假设检验
  8. 对GridFS数据进行分片
  9. APICS与AX的Master Planning(一)--Phantom bill of Material 虚项
  10. 求当前时间的三种方法(Java)
  11. Mac连接不上无线网络的解决方法
  12. 湖北民院OJ 计算球体体积
  13. npm WARN unmet dependency错误解决方法
  14. table表格数据绑定
  15. Oracle总结一(超详细)
  16. U-Boot 之零 源码文件、启动阶段(TPL、SPL)、FALCON、设备树
  17. Basler相机QT代码vs
  18. 每个人的火星快车图片和视频
  19. 使用vue+echarts快速进行全国地图与各省市地图联动(下钻地图), 引入省份js文件
  20. 几种民间排毒养颜祛痘DIY自制面膜 - 生活至上,美容至尚!

热门文章

  1. 编写一个关于小型界面文件。
  2. RAC环境下的备份与恢复(四)
  3. MOSA 4600 Plus IP PBX FAQ(应用常见知识点-故障排除)(2)
  4. 使用RSA私钥或pfx私钥签名String
  5. nodejs yarn包管理工具
  6. ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
  7. python发带附件的中文邮件
  8. Nginx 跨域使用字体
  9. ubuntu 10.04 顶部任务栏消失!!
  10. 限制IP 访问 Oracle 的方法