一、實驗?zāi)繕?/h3>
通過Java API來操作HDFS文件系統(tǒng)HDFS,相關(guān)的操作有:文件上傳、文件下載、新建文件夾、查看文件、刪除文件。
二、條件準備
1.Linux下安裝好hadoop,這里使用hadoop2.7.3
2.window解壓hadoop2.7.3的包
2.Windows下安裝好jdk1.8
?3.Windows下安裝好IDEA,這里使用IDEA2022
4.Windows下安裝好maven,這里使用Maven3.6.3
5.在win系統(tǒng)下不配置hadoop環(huán)境,直接運行代碼會報錯,顯示缺少winutils.exe 和 hadoop.dll 兩個文件.? ? (文件位于個人主頁&(13條消息) Hadoop系統(tǒng)應(yīng)用之java-API對HDFS的操作實驗缺少的兩個文件-桌面系統(tǒng)文檔類資源-CSDN文庫)
6.將hadoop-2.7.3文件夾拷貝到一個沒有中文的路徑中;
7.把winutils.exe 和 hadoop.dll 兩個文件放到hadoop-2.7.3文件夾中bin目錄下
8.在windows系統(tǒng),配置hadoop的環(huán)境變量: HADOOP_HOME,并將%HADOOP_HOME%\bin添加到path中.
9.把hadoop-2.7.3文件夾中bin目錄下的hadoop.dll 放到系統(tǒng)盤: C:Windows \System32目錄下
三、用idea創(chuàng)建對應(yīng)的Java項目
1.新建一個Maven工程?
2.在pom.xml添加相關(guān)依賴(ctr+s保存后,會下載對應(yīng)的依賴)
?代碼如下
<dependencies>
<!-- Hadoop所需依賴包 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency>
<!-- junit測試依賴 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
</project>
?3.右下角下載依賴
?4.查看依賴和外部庫
?
?四、初始化
1.創(chuàng)建一個java類,添加對應(yīng)代碼
public class JavaAPI {
FileSystem hdfs = null;
public JavaAPI() {
}
@Before
public void init() throws IOException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://yangjian00:9000");
System.setProperty("HADOOP_USER_NAME", "root");
this.hdfs = FileSystem.get(conf);
}
@After
public void close() throws IOException {
this.hdfs.close();
}
}
?ps:上面代碼中的參數(shù)"hdfs://yangjian00:9000"是hadoop配置文件中core-site.xml的配置信息,
五、HDFS代碼操作
1.上傳文件到HDFS文件系統(tǒng)
(1)我在D盤的HDFS文件夾下面創(chuàng)建了個test.txt文本
(2)寫入代碼
/*
上傳測試
*/
@Test
public void testUploadFileToHDFS() throws IOException {
// 待上傳的文件路徑(windows)
Path src = new Path("D:\\Hadoop\\HDFS");
// 上傳之后存放的路徑(HDFS)
Path dst = new Path("/TEXT");
// 上傳
hdfs.copyFromLocalFile(src,dst);
System.out.println("上傳成功");
}
(3)在centos的Hadoop中查看test.txt文件(上傳成功)
?2.從HDFS下載文件到本地
(1)寫入下載代碼
/*
下載測試
*/
@Test
public void testDownFileToLocal() throws IOException {
// 待下載的路徑(HDFS)
Path src = new Path("/TEXT.txt");
// 下載成功之后存放的路徑(windows)
Path dst = new Path("D:\\Hadoop\\HDFS\\TEXT1");
// 下載
hdfs.copyToLocalFile(false,src,dst,true);
System.out.println("下載成功");
(2)從瀏覽器中下載查看
?3.在HDFS中創(chuàng)建目錄
(1)寫入代碼
/*
創(chuàng)建目錄測試
*/
@Test
public void testMkdirFile() throws IOException {
// 待創(chuàng)建目錄路徑
Path src = new Path("/YYDS");
// 創(chuàng)建目錄
hdfs.mkdirs(src);
System.out.println("創(chuàng)建成功");
}
?(2)從瀏覽器中下載查看
4.從新命名測試
(1)寫入代碼
/*
重命名測試
*/
@Test
public void testRenameFile() throws IOException {
// 重命名之前的名字
Path src = new Path("/YYDS");
// 重命名之后的名字
Path dst = new Path("/HDFS2");
// 重命名
hdfs.rename(src,dst);
System.out.println("重命名成功");
}
?(2)從瀏覽器中下載查看
5.刪除測試
/*
刪除測試
*/
@Test
public void testRM() throws IOException {
hdfs.delete(new Path("/HDFS"),true);
hdfs.delete(new Path("/HDFS1"), true);
hdfs.delete(new Path("/tmp"), true);
}
?文章來源:http://www.zghlxwxcb.cn/news/detail-754963.html
??文章來源地址http://www.zghlxwxcb.cn/news/detail-754963.html
到了這里,關(guān)于Hadoop系統(tǒng)應(yīng)用之HDFS相關(guān)操作 - - Java-API對HDFS的操作(IDEA版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!