1.下载文件到本地

public class HdfsUrlTest {

static{

//注册url 让java程序识别hdfs的url

URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

}

public static void main(String[] args) {

InputStream in = null;

OutputStream out = null;

try {

String file = "hdfs://hadoop-yarn.test.com:8020/user/testi/conf/core-site.xml";

URL fileUrl = new URL(file);

in = fileUrl.openStream();

out = new FileOutputStream(new File("d:/core-site.xml"));

//下载文件到本地

IOUtils.copyBytes(in,out,4096, false);

} catch (Exception e) {

e.printStackTrace();

}finally{

IOUtils.closeStream(in);}}}

2.查看集群信息

public static void cluserStatus() throws Exception{

FileSystem fs = HdfsUtil.getFs();

DistributedFileSystem dfs  = (DistributedFileSystem)fs;

FsStatus fss = dfs.getStatus();

DatanodeInfo[] datanodeInfos = dfs.getDataNodeStats();

for(DatanodeInfo datanodeinfo : datanodeInfos){

System.out.println(datanodeinfo.getHostName());}}

3.创建一个文件夹

public void testHDFSMkdir() throws Exception{

String hdfsUrl = "hdfs://192.168.10.11:8020";

Configuration conf= new Configuration();

FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);

Path path = new Path("/bigdata");

fs.mkdirs(path);}

4.创建一个文件

public void testCreateFile() throws Exception{

String hdfsUrl = "hdfs://192.168.10.11:8020";

Configuration conf= new Configuration();

FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);

Path path = new Path("/bigdata/a.txt");

FSDataOutputStream out = fs.create(path);

out.write("hello hadoop".getBytes());}

5.文件重命名

public void testRenameFile() throws Exception{

String hdfsUrl = "hdfs://192.168.10.11:8020";

Configuration conf= new Configuration();

FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);

Path path = new Path("/bigdata/a.txt");

Path newPath = new Path("/bigdata/b.txt");

System.out.println(fs.rename(path, newPath));}

6.上传文件

public static void write() throws Exception{

FileSystem fs = HdfsUtil.getFs();

OutputStream outStream = fs.create(new Path("/user/lcc/conf/put-core-site.xml"));

FileInputStream inStream = new FileInputStream(new File("d:/core-site.xml"));

IOUtils.copyBytes(inStream, outStream, 4096, true);}

Hadoop程序想读取hdfs中的数据,最简单的方法是使用java的URL对象打开一个数据流,并从中读取数据。

需要一个fsUrlStreamHandlerFactory实例调用set过的一个URL,这种方法java虚拟机只能调用一次,缺点是如果程序的其他部分也设置了这个,会导致无法再从hadoop中读取数据。

新方法,需要使用filesystem的api打开一个文件的输入流。

文件在hadoop文件系统中被视为一个hadoop path对象,把一个文件夹或文件路径看做为一个hadoop文件系统的URL。

三种方法。

Get(conf)和get(uri,conf),newInstance

最新文章

  1. 【从零开始学BPM,Day5】报表配置及自定义功能页面开发
  2. bash shell,调用ffmpeg定期截图
  3. groups, usermod, chown, chgrp, chmod
  4. Python使用QRCode模块生成二维码
  5. 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
  6. Head First-策略模式
  7. CSS Sprite 图标
  8. java的Serialization 机制
  9. JQ图片跟着鼠标走
  10. 从Owin到System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式
  11. Flask入门第三天
  12. python设计模式---创建型之工厂模式
  13. 专题1:记忆化搜索/DAG问题/基础动态规划
  14. 对于 url encode decode js 和 c# 有差异
  15. textarea 标签的使用
  16. Object.create(null)、Object.create({})、{} 三者创建对象的区别
  17. 【转】Caffe的solver文件配置
  18. OA系统高性能解决方案(史上最全的通达OA系统优化方案)
  19. HTML--思维导图
  20. Xtreme9.0 - Block Art 线段树

热门文章

  1. 性能测试必备知识(5)- 深入理解“CPU 上下文切换”
  2. 关于cnpm的命令出错 cant find module npm-cli.js,以及vue packages version mismatch出错
  3. Python os.pathconf() 方法
  4. PHP get_html_translation_table() 函数
  5. recv & recvfrom
  6. luogu P5161 WD与数列 SAM 线段树合并 启发式合并
  7. 一个轻量级的基于RateLimiter的分布式限流实现
  8. 错误记录:MIME type may not contain reserved characters
  9. 可笑,你竟然不知道 Java 如何生成 UUID
  10. 【NOIP2017】跳房子 题解(单调队列优化线性DP)