HDFS的Java API操做(筆記)

注意:須要獲取哪一個打開main函數中的哪一個java

package com.hadoop.test;node

import java.net.URI;
import org.apache.hadoop.conf.Configuration;
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;apache

public class HDFSAPITest {分佈式

/*
1 、獲取HDFS文件系統
*/
// 獲取文件系統
public static FileSystem getFileSystem() throws Exception {
// 讀取配置文件
Configuration conf = new Configuration();
// 返回默認文件系統,若是在Hadoop集羣下運行,使用此種方法可直接獲取默認文件系統
// FileSystem fs = FileSystem.get(conf);
// 指定的文件系統地址
URI uri = new URI("hdfs://master:9000");
// 返回指定的文件系統,若是在本地測試,須要使用此種方法獲取文件系統
FileSystem fs = FileSystem.get(uri, conf);
return fs;
}ide

/*
2 、文件/目錄的建立與刪除
*/
// 建立文件目錄
public static void mkdir() throws Exception {
// 獲取文件系統
FileSystem fs = getFileSystem();
// 建立文件目錄
fs.mkdirs(new Path("hdfs://master:9000/20191021/test"));
// 釋放資源
fs.close();
}函數

// 刪除文件或者文件目錄
public static void rmdir() throws Exception {
// 返回FileSystem對象
FileSystem fs = getFileSystem();
// 刪除文件或者文件目錄
fs.delete(new Path("hdfs://master:9000/20191021/test"),true);
// 釋放資源
fs.close();
}oop

/*
三、 獲取文件
*/
// 獲取目錄下的全部文件
public static void ListAllFile() throws Exception {
// 返回FileSystem對象
FileSystem fs = getFileSystem();
// 列出目錄內容
FileStatus[] status = fs.listStatus(new Path("hdfs://master:9000/"));
// 獲取目錄下的全部文件路徑
Path[] listedPaths = FileUtil.stat2Paths(status);
// 循環讀取每一個文件
for(Path p : listedPaths) {
System.out.println(p);
}
// 釋放資源
fs.close();
}測試

/*
4 、上傳/下載文件
*/
// 文件上傳至HDFS
public static void copyToHDFS() throws Exception {
// 返回FileSystem對象
FileSystem fs = getFileSystem();
// 源文件路徑是Linux下的路徑,若是在Windows下測試,須要改寫爲Windows下的路徑,好比E://Hadoop/weibo.txt
//Path srcPath = new Path("/home/hadoop/weibo.txt");
Path srcPath = new Path("E://Hadoop/weibo.txt");
// 目的路徑
Path dstPath = new Path("hdfs://master:9000/20191021/test");
// 實現文件上傳
fs.copyFromLocalFile(srcPath, dstPath);
// 釋放資源
fs.close();
}.net

// 從HDFS下載文件
public static void getFile() throws Exception {
// 返回FileSystem對象
FileSystem fs = getFileSystem();
// 源文件路徑
Path srcPath = new Path("hdfs://master:9000/20191021/test/test.txt");
// 目的路徑是Linux下的路徑,若是在Windows下測試,須要改寫爲Windows下的路徑,好比E://hadoop/djt/
//Path dstPath = new Path("/home/hadoop/");
Path dstPath = new Path("E://hadoop/djt/");
// 下載hdfs上的文件
fs.copyToLocalFile(srcPath, dstPath);
// 釋放資源
fs.close();
}對象

/*五、 獲取HDFS集羣節點信息*/// 獲取HDFS集羣節點信息public static void getHDFSNodes() throws Exception {// 返回FileSystem對象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());}}public static void main(String[] args) throws Exception {//mkdir();//rmdir();//ListAllFile();//copyToHDFS();//getFile();//getHDFSNodes();}}

相關文章
相關標籤/搜索