根据之前几篇文章搜集的资料,写了这么个简单的实例,仅供参考。
package org.apache.hadoop.examples; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; public class WordCount { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("mapred.job.tracker", "master:9001"); conf.set("fs.default.name", "hdfs://master:9000"); System.out.println("fs.default.name:" + conf.get("fs.default.name")); System.out.println("mapred.job.tracker:" + conf.get("mapred.job.tracker")); //从本地拷贝文件到hdfs FileSystem fs = FileSystem.get(conf); Path src = new Path("D:/hello.txt"); Path dst = new Path("hdfs://master:9000/abc"); fs.copyFromLocalFile(src, dst); //创建文件 byte[] buff="hello hadoop world!\n".getBytes(); Path dfs = new Path("/test"); FSDataOutputStream outputStream = fs.create(dfs); outputStream.write(buff,0,buff.length); //创建目录 Path dfs1 = new Path("/TestDir"); fs.mkdirs(dfs1); //重命名 Path frpaht = new Path("/test"); //旧的文件名 Path topath = new Path("/test1"); //新的文件名 boolean isRename=fs.rename(frpaht, topath); String result = isRename ? "成功" : "失败"; System.out.println("文件重命名结果为:" + result); //删除HDFS上的文件或目录 Path delef = new Path("/TestDir"); fs.delete(delef, true);//true代表递归删除 //查看某个HDFS文件是否存在 Path findf = new Path("/test1"); boolean isExists = fs.exists(findf); System.out.println("Exist?"+isExists); //查看HDFS文件的最后修改时间 Path fpath = new Path("/test1"); FileStatus fileStatus = fs.getFileStatus(fpath); long modiTime = fileStatus.getModificationTime(); System.out.println("test1的修改时间是"+modiTime); //读取HDFS某个目录下的所有文件 Path fpath1 = new Path("/"); //fs.getPath(fpath1); FileStatus[] status = fs.listStatus(fpath1); for (FileStatus file : status) { System.out.println(file.getPath().getName()); } //查找某个文件在HDFS集群的位置 Path fpath2 = new Path("/qj"); FileStatus filestatus = fs.getFileStatus(fpath2); BlockLocation[] blkLocations = fs.getFileBlockLocations(filestatus, 0, filestatus.getLen()); int blockLen = blkLocations.length; for(int i=0;i<blockLen;i++){ String[] hosts = blkLocations[i].getHosts(); System.out.println("block_"+i+"_location:"+hosts[0]); } //获取HDFS集群上所有节点名称信息 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()); } } }
本文参考了以下两篇: