011_Eclipse中使用HDFSFileSystemAPI事例介绍

需求

1.文件操作

1)上传本地文件到HDFS

2)读取文件

3)在hadoopfs中新建文件,并写入

4)重命名文件

5)删除hadoopfs上的文件

2.目录操作

1)读取某个目录下的所有文件

2)在hadoopfs上创建目录

3)删除目录

3. HDFS信息

1)查找某个文件在HDFS集群的位置

2)获取HDFS集群上所有节点名称信息

准备工作:

1、新建一个project项目,添加lib文件夹,将图示的jar文件添加到文件夹中,并将其add to built path。如图示。

2、添加conf文件夹,将core-site.xml和hdfs-site.xml两个文件拷贝到conf下面。刷新。主要作用是配置主机地址。

3、编译环境和运行环境都是用1.7版本,即jdk1.7和jre1.7。本实验使用的是Eclipse indigo-windows-32bit和jdk1.7-32bit。

4、此处暂时不需要hadoop-plugin插件,有的话也不影响,但是主机hosts文件要配置好,就是在主机cmd命令中可以通过域名访问CentOS端NameNode主机。

HDFS  文件读取流程

1.Client调用FileSystem.open()方法:
  1)FileSystem通过RPC与NN通信,NN返回该文件的部分或全部block列表(含有block拷贝的DN地址)。
  2)选取距离客户端最近的DN建立连接,读取block,返回FSDataInputStream。
2.Client调用输入流的read()方法:
  1)当读到block结尾时,FSDataInputStream关闭与当前DN的连接,并为读取下一个block寻找最近DN。
  2)读取完一个block都会进行checksum验证,如果读取DN时出现错误,客户端会通知NN,然后再从下一个拥有该block拷贝的DN继续读。
  3)如果block列表读完后,文件还未结束,FileSystem会继续从NN获取下一批block列表。
3.关闭FSDataInputStream

HDFS  文件写入流程

1.Client调用FileSystem的create()方法:
  1)FileSystem向NN发出请求,在NN的namespace里面创建一 新文件,但是并不关联任何块。
  2)NN检查文件是否已存在、操作权限。如果检查通过,NN记录新文件信息,并在某一个DN上创建数据块。
  3)返回FSDataOutputStream,将Client引导至该数据块执行写入操作。
2.Client调用输出流的write()方法:HDFS默认将每个数据块放置3份。
FSDataOutputStream将数据首先写到第一节点,第一节点将数据包传送并写入第二节点,第二节点=》第三节点。

3.Client调用流的close()方法:flush缓冲区的数据包,block完成复制份数后,
NN返回成功消息。

代码如下:

1、添加一个包(packet),org.dragon.hadoop.hdfs.utils,添加一个HDFSUtils.java文件,文件里面内容如下

package org.dragon.hadoop.hdfs.utils;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;

/**
 * @author ZhuXY
 * @time 2016-3-6 下午8:17:10
 */
public 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值