本文源碼碼雲地址:https://gitee.com/MaxBill/hadoopjava
在上篇《hadoop(01)、windows平臺下hadoop環境搭建》中,實踐了在windows平臺下使用搭建hadoop開發環境,同時搭建完畢在基於命令行的形式對HDFS進行了基本的操做,本文咱們會在搭建的hadoop的基礎平臺上使用JAVA API來對HDFS進行簡單的操做。git
1.windows下hadoop開發環境:參見《hadoop(01)、windows平臺下hadoop環境搭建》apache
2.IDEA 開發編輯器windows
1.使用IDEA新建一個SpringBoot項目,參見《SpringBoot學習之路:02.第一個程序Hello World及項目結構介紹》,以下是我新建的項目結構:api
2.添加操做HDFS的依賴包服務器
在剛建的SpringBoot項目的pom.xml文件裏添加hadoop的依賴包hadoop-common, hadoop-client, hadoop-hdfs:編輯器
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.8.2</version>
</dependency>
3.啓動hadoop服務oop
進入hadoop安裝目錄下的sbin中,執行腳本start-dfs.cmd學習
這時hadoop服務已經成功啓動。測試
對HDFS操做設計如下幾個主要的類:
Configuration:封裝了客戶端或者服務器的配置信息
FileSystem:此類的對象是一個文件系統對象,能夠用該對象的一些方法來對文件進行操做經過FileSystem的靜態方法get得到該對象,例:FileSystem hdfs = FileSystem.get(conf);
FSDataInputStream:這是HDFS中的輸入流,經過由FileSystem的open方法獲取
FSDataOutputStream:這是HDFS中的輸出流,經過由FileSystem的create方法獲取
1.獲取hadoop配置信息
2.獲取文件系統對象
客戶端去操做HDFS時,是有一個用戶身份的,默認狀況下,HDFS客戶端API會從JVM中獲取一個參數來做爲本身的用戶身份:DHADOOP_USER_NAME=hadoop
FileSystem hdfs = FileSystem.get(getHdfsConfig()); //默認獲取
也能夠在構造客戶端fs對象時,經過參數傳遞進去
FileSystem hdfs = FileSystem.get(new URI(rootPath), getHdfsConfig(), "你的用戶名");
3.建立文件夾操做
先看下咱們使用的用戶下的目錄(注:本文使用Administrator用戶):
能夠看到該用戶下爲空目錄,而後編寫程序運行測試:
此時查看maxbill目錄
4.建立文件操做
運行測試建立文件後查看目錄:(在剛建立的demo目錄建立maxbill.txt文件,並寫入hello world)
5.讀取文件內容操做
讀取剛纔建立的maxbill.txt文件
6.讀取目錄信息
讀出那會咱們建立的demo目錄的詳細信息:
7.讀取文件列表
讀出那會咱們建立的demo目錄下的文件:
8.重命名文件
運行重命名程序後,查看文件已經被重命名:
9.刪除文件
運行刪除程序後,查看文件已經被刪除:
10.上傳文件
運行上傳程序後,查看文件已經被上傳到指定目錄:
11.下載文件
運行下載程序後,查看文件已經被下載到指定目錄:
下載後多出一個crc文件,還沒注意是啥做用
經過使用java api操做hadoop的hdfs,給個人感受是和阿里的對象存儲相似的效果,hdfs能夠用來架設公司的雲盤等服務,也可做文件服務器使用,本文使用的單機操做,後面會使用集羣來進行實踐。