??看着书写了下通过java操作filesystem api对hdfs操作的简单操作,贴下代码:
class="java" name="code">package com.lyq.study.api; import java.io.IOException; 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; import com.lyq.study.util.HBaseConfigUtils; public class HDFS_API { //上传文件到hdfs上 public static void copyFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path src = new Path("D:\\data.txt"); Path dst = new Path("/test/input"); hdfs.copyFromLocalFile(src, dst); System.out.println("==========="); FileStatus files[] = hdfs.listStatus(dst); for(FileStatus file:files){ System.out.println(file.getPath()); } } //创建hdfs文件 public static void createFile() throws IOException { byte[] buff = "hello world hadoop study hbase study hello world study hadoop hbase".getBytes(); FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path dst = new Path("/test/input/test.txt"); FSDataOutputStream outputStream = hdfs.create(dst); outputStream.write(buff, 0, buff.length); } //重命名hdfs文件 public static void renameFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path frpath = new Path("/test/input/test.txt"); Path topath = new Path("/test/input/test1.txt"); boolean rename = hdfs.rename(frpath, topath); System.out.println("rename ? "+rename); } //删除hdfs文件 public static void deleteFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path delpath = new Path("/test/input/test1.txt"); boolean isdelete = hdfs.delete(delpath,false); // Boolean isdelete = hdfs.delete(delpath,true);//递归删除 System.out.println("isdelete ? "+isdelete); } //查看hdfs文件最好修改时间 public static void getLTime() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path fpath = new Path("/test/input/a.txt"); FileStatus filestatus = hdfs.getFileStatus(fpath); long modificationTime = filestatus.getModificationTime(); System.out.println("Modifycation time is: "+modificationTime); } //查看hdfs文件是否存在 public static void checkFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path fpath = new Path("/test/input/a.txt"); boolean isExists = hdfs.exists(fpath); System.out.println("Exist ? "+isExists); } //查看hdfs文件在集群上的位置 public static void fileLoc() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path fpath = new Path("/test/input/a.txt"); FileStatus filestatus = hdfs.getFileStatus(fpath); BlockLocation[] blkLocations = hdfs.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[i]); } } //获取hdfs集群上所以节点 public static void getList() throws IOException { FileSystem fs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); DistributedFileSystem hdfs = (DistributedFileSystem) fs; DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats(); String[] names = new String[dataNodeStats.length]; for(int i=0;i<dataNodeStats.length;i++){ names[i] = dataNodeStats[i].getHostName(); System.out.println("node"+i+"name: "+names[i]); } } public static void main(String[] args) throws IOException { copyFile(); // createFile(); // renameFile(); // deleteFile(); // getLTime(); // checkFile(); // fileLoc(); // getList(); } }
package com.lyq.study.util; import org.apache.hadoop.conf.Configuration; ? public class HBaseConfigUtils { ?/** ? * 获取HBaseConfiguration ? * @param flag? ? * ???集群标识:0,单机;1集群 ? * @return ? */ ?public static Configuration getHBaseConfig(int flag){ ??Configuration conf = new Configuration(); ??if(flag > 0){ ???//集群 ???conf.set("fs.defaultFS", "hdfs://master129:9000/"); ???conf.set("mapreduce.framework.name", "local"); ???conf.set("mapred.job.tracker", "master129:9001"); ???conf.set("hbase.zookeeper.quorum", "master129,slave130,slave131,slave132"); ??}else{ ???//单机 ???conf.set("fs.defaultFS", "hdfs://ubuntu:9000/"); ???conf.set("mapreduce.framework.name", "local"); ???conf.set("mapred.job.tracker", "ubuntu:9001"); ???conf.set("hbase.zookeeper.quorum", "ubuntu"); ??} ?? ??return conf; ?} ? }