hadoop(02)、使用JAVA API對HDFS進行基本操做

      本文源碼碼雲地址:https://gitee.com/MaxBill/hadoopjava

      在上篇《hadoop(01)、windows平臺下hadoop環境搭建》中,實踐了在windows平臺下使用搭建hadoop開發環境,同時搭建完畢在基於命令行的形式對HDFS進行了基本的操做,本文咱們會在搭建的hadoop的基礎平臺上使用JAVA API來對HDFS進行簡單的操做。git

1、環境準備

1.windows下hadoop開發環境:參見《hadoop(01)、windows平臺下hadoop環境搭建apache

2.IDEA 開發編輯器windows

2、開發準備

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服務已經成功啓動。測試

3、開始編碼

對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文件,還沒注意是啥做用

4、最後總結

      經過使用java api操做hadoop的hdfs,給個人感受是和阿里的對象存儲相似的效果,hdfs能夠用來架設公司的雲盤等服務,也可做文件服務器使用,本文使用的單機操做,後面會使用集羣來進行實踐。

相關文章
相關標籤/搜索