不多说,直接上代码。

代码

package zhouls.bigdata.myWholeHadoop.HDFS.hdfs4;

import java.io.IOException;

import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;

import java.net.URI;

public class HDFStest1
{

/**
* @param args
* @throws IOException
* @throws URISyntaxException
*/
public static void main(String[] args) throws IOException, URISyntaxException
{
// TODO Auto-generated method stub
//mkdir();
//copyToHDFS();
//getFile();
//ListAllFile();
//getFileLocal();
//rmdir();
getHDFSNodes();
}
//获取HDFS文件系统
public static FileSystem getFileSystem() throws IOException,URISyntaxException
{
Configuration conf = new Configuration();//读取配置文件,比如core-site.xml
//FileSystem fs =FileSystem.get(conf);

URI uri = new URI("hdfs://HadoopMaster:9000");

FileSystem fs = FileSystem.get(uri,conf);
return fs;
}

public static void mkdir() throws IOException,URISyntaxException
{
//第一步,获取文件系统
FileSystem fs =getFileSystem();
//第二步,创建文件目录
fs.mkdirs(new Path("/zhouls/data"));
//第三步,释放资源
fs.close();
}

public static void copyToHDFS() throws IOException,URISyntaxException
{
//第一步
FileSystem fs=getFileSystem();
//第二步
Path srcpath=new Path("D://Data/weibo.txt");
Path dstpath=new Path("/zhouls/data");
//第三步
fs.copyFromLocalFile(srcpath, dstpath);
//第四步
fs.close();
}

public static void getFile() throws IOException, URISyntaxException
{
//第一步
FileSystem fs=getFileSystem();
//第二步
Path srcpath=new Path("/zhouls/data/weibo.txt");
Path dstpath=new Path("D://Data/test");
//第三步
fs.copyToLocalFile(srcpath, dstpath);
//第四步
fs.close();

}

public static void ListAllFile() throws IOException, URISyntaxException
{
//第一步
FileSystem fs=getFileSystem();
//第二步
FileStatus[] status =fs.listStatus(new Path("/zhouls"));
//第三步
Path[] listedPaths = FileUtil.stat2Paths(status);
//第四步
for(Path p:listedPaths)
{
System.out.println(p);

}
//第五步
fs.close();
}

public static void getFileLocal() throws IOException, URISyntaxException
{
//第一步
FileSystem fs=getFileSystem();
//第二步
Path path=new Path("/zhouls/data/weibo.txt");
//第三步
FileStatus fileStatus=fs.getFileLinkStatus(path);
//第四步
BlockLocation[] blkLocations = fs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());
//第五步
for(int i=0;i< blkLocations.length;i++)
{
String[] hosts = blkLocations[i].getHosts();
System.out.println("block_"+i+"_location:"+hosts[0]);
}
//第六步
fs.close();
}

public static void rmdir() throws IOException, URISyntaxException
{
//第一步
FileSystem fs=getFileSystem();
//第二步
fs.delete(new Path("/zhouls/data"),true);
//第三步
fs.close();
}

public static void getHDFSNodes() throws IOException, URISyntaxException
{
//第一步
FileSystem fs=getFileSystem();
//第二步
DistributedFileSystem hdfs = (DistributedFileSystem)fs;
//第三步
DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats();
//第四步
for(int i=0;i< dataNodeStats.length;i++)
{
System.out.println("DataNode_"+i+"_Name:"+dataNodeStats[i].getHostName());
}
//第五步
fs.close();
}

}

Hadoop HDFS编程 API入门系列之简单综合版本1(四)的更多相关文章

  1. Hadoop HDFS编程 API入门系列之HDFS_HA(五)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs3; import java.io.FileInputStream;import ...

  2. Hadoop HDFS编程 API入门系列之HdfsUtil版本2(七)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs1; import java.io.FileInputStream;import ...

  3. Hadoop HDFS编程 API入门系列之HdfsUtil版本1(六)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs2; import java.io.FileOutputStream;impor ...

  4. Hadoop HDFS编程 API入门系列之合并小文件到HDFS(三)

    不多说,直接上代码.  代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs7; import java.io.IOException;import ja ...

  5. Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; import java.io.IOException;import jav ...

  6. Hadoop HDFS编程 API入门系列之从本地上传文件到HDFS(一)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs5; import java.io.IOException; import ja ...

  7. Hadoop HDFS编程 API入门系列之RPC版本2(九)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.RPC.rpc2; public class LoginServiceImpl implement ...

  8. Hadoop HDFS编程 API入门系列之RPC版本1(八)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.RPC.rpc1; import java.io.IOException;import java. ...

  9. Hadoop MapReduce编程 API入门系列之倒排索引(二十四)

    不多说,直接上代码. 2016-12-12 21:54:04,509 INFO [org.apache.hadoop.metrics.jvm.JvmMetrics] - Initializing JV ...

随机推荐

  1. Brief Tour of the Standard Library

    10.1. Operating System Interface The os module provides dozens of functions for interacting with the ...

  2. SSD固态硬盘使用注意事项

    SSD固态硬盘的结构和运行方式不同于传统硬盘,在购买以后强烈建议进行一些设置以达到最优的运行效能,延长SSD的使用寿命.以下第一部分是一些可以在网上找到的关于SSD硬盘相关的注意事项,已经介绍很多,这 ...

  3. [转]使用 C 编写 Lua 模块

    Lua 作为一种小巧的语言,一般都是嵌入到 C/C++ 中作为扩展语言,但是也可以作为独立的脚本语言使用,并且可以使用 C/C++ 编写扩展模块.在参考资料 [1] 中有怎样用 C/C++ 编写模块的 ...

  4. spring AOP 实现事务和主从读写分离

    1 切面 是个类 2 切入点 3 连接点 4 通知 是个方法 5 配置文件 <?xml version="1.0" encoding="UTF-8"?&g ...

  5. Linux TC基于CBQ队列的流量管理范例

    参考了TC的很多文档,自己也整理了一篇配置记录.在实际使用过程中效果还不错,在此分享给大家以备参考.环境:局域网规模不是很大40多台机器. NAT共享上网(内网:eth0 外网:eth2)CBQ是通过 ...

  6. surge for mac出测试版本了

    这两天一直在MAC上试图连接我的shadowsocks服务,使用shadowsocksX一直没能连接到服务器.服务器本身是没有问题的,因为我的thinkpad和iphone都可以正常使用.结果就试着使 ...

  7. ubuntu15.10跑裸机程序跑.bin文件

    1:安装tftp:#apt-get update#apt-get install tftp-hpa tftpd-hpa xinetd2:#cd /srv#mkdir tftp#chmod 777 tf ...

  8. poj2369 Permutations ——置换群

    link:http://poj.org/problem?id=2369 置换群,最简单的那种. 找所有数字循环节的最小公倍数. /* ID: zypz4571 LANG: C++ TASK: perm ...

  9. sql语句与数据库2

    增加数据 insert into wyx(xh,nl,xb,sfzh,zcrq)values(0422,28,男,210623198711111111,2016-8-19); 删除数据 delete ...

  10. Vmvare下Ubuntu安装Python3.4

    Ubuntu14.4下默认安装的Python版本是2.7.随着Python3.4的使用,现在大部分Python开发者都喜欢使用Py3.4.那么Ubuntu下应该怎么安装Python3.4呢? (1). ...