天天看點

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

點選上方藍色字關注我們!

Hadoop是一款開源的大資料通用處理平台,其提供了分布式存儲和分布式離線計算。Hadoop由HDFS、YARN、MapReduce組成。

Hadoop分布式檔案系統(HDFS)是一種分布式檔案系統(Distributed File System)。HDFS具有高度容錯性,适合部署在廉價的機器上。HDFS能提供高吞吐量的資料通路,非常适合大規模資料集上的應用。

HDFS其實是将一個大檔案分成若幹塊儲存在不同伺服器的多個節點中。通過聯網讓使用者感覺像是在本地一樣檢視檔案,為了降低檔案丢失造成的錯誤,HDFS會為每個小檔案複制多個副本(預設為3個),以此來實作多機器上的多使用者分享檔案和存儲空間。

HDFS體系結構

HDFS采用了主從(Master/Slave)結構模型,一個HDFS叢集是由一個NameNode和若幹個DataNode組成的。其中NameNode作為主伺服器,管理檔案系統的命名空間和用戶端對檔案的通路操作;叢集中的多個DataNode負責管理存儲的資料。

塊大小:Hadoop2版本裡一個塊預設為128M,小檔案也占用一個塊,小檔案越多,塊越多。是以,HDFS中不适合存儲小檔案。

副本個數:儲存多個副本(預設3個),提供容錯機制,一個副本丢失或當機,自動恢複。

01

實驗目的

熟悉HDFS基本指令行操作

使用Java 接口,通過Java程式讀取HDFS中的檔案

02

實驗環境

雲伺服器1台:(華為雲、阿裡雲、騰訊雲等等均可)

作業系統:CentOS7.4 64位

系統配置:2核4G以上

感謝華為雲提供雲伺服器支援!

03

實驗步驟

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

》》實驗資源

作業系統:CentOS 7

JDK:JDK8

Hadoop:2.8.5

Github位址:https://github.com/my-ss-course/BigData

工具包位址:連結: https://pan.baidu.com/s/1nOvFQGj12N3ODNilOYMYjg 密碼: r8qo

已經按照前面的教程搭建好3個節點的Hadoop僞分布式叢集

1

登入遠端雲伺服器

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

使用本地用戶端連接配接遠端雲伺服器

2

啟動Hadoop叢集

如已啟動hadoop容器,請忽略本步驟

./start_container.sh
           

進入hadoop-node1節點的容器

docker exec -it hadoop-node1 /bin/bash
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

3

通過指令行方式操作HDFS檔案系統

01 指令行接口格式

格式1:hadoop fs -指令 路徑

格式2:hdfs dfs -指令 路徑
           

02 ls指令

hdfs dfs -ls /
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

03 put指令

将本地檔案上傳到HDFS中。

hdfs dfs -put /usr/local/hadoop-2.8.5/NOTICE.txt /input/
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

04 get指令

将HDFS中檔案下載下傳到本地

hdfs dfs -get /input/README.txt ./
hdfs dfs -get /input/README.txt README2.txt
hdfs dfs -get /input/README.txt
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

05 rm指令

删除檔案

hdfs dfs -rm /input/README.txt
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

删除目錄

hdfs dfs -rm -r /output
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

06 mkdir指令

建立目錄

hdfs dfs -mkdir /output
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

建立多級目錄,使用-p參數

hdfs dfs -mkdir -p /output/abc/123
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

07 cp指令

hdfs dfs -cp /input/NOTICE.txt /input/NOTICE2.txt
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

08 mv指令

hdfs dfs -mv /input/NOTICE.txt /input/NOTICE3.txt
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

09 cat指令

hdfs dfs -cat /input/NOTICE3.txt
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

4

使用Java API操作HDFS檔案系統中資料

01

建立IntelliJ IDEA下的maven項目

  • 點選File->New->Project,在彈出的對話框中選擇Maven
  • JDK選擇相應的版本,點選Next
  • 填寫Maven的

    GroupId

    ArtifactId,可以随便填寫

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗
  • 項目名可填寫HDFSTest
  • 編輯pom.xml添加hadoop依賴
<dependencies>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-hdfsartifactId>
            <version>2.8.5version>
        dependency>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-clientartifactId>
            <version>2.8.5version>
        dependency>
    dependencies>
           

02

編寫代碼

建立一個class,增加如下實驗代碼

public static void main(String[] args) throws IOException {
        System.out.println("hello world");
        Configuration conf=new Configuration();
        conf.set("fs.defaultFS","hdfs://你的雲伺服器的IP:19000或hadoop-node1節點的IP:9000");
        FileSystem hdfs =FileSystem.get(conf);
        boolean is_success = hdfs.mkdirs(new Path("/helloByJava"));
        if(is_success){
            System.out.println("success");
        }else{
            System.out.println("failure");
        }
        hdfs.close();
}
           

注意要把安全組以及防火牆中的端口打開。

直接運作程式的結果如下

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

警告先忽略,因為沒有配置log4j

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

可以看到能夠在HDFS中成功建立了一個目錄。

這這這也太不安全了吧???

可以直接通路我的HDFS

03

打包釋出

1、pom.xml檔案中增加如下代碼,用于編譯打包

<build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-pluginartifactId>
                <version>2.3.2version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                configuration>
            plugin>
            <plugin>
                <artifactId>maven-assembly-plugin artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependenciesdescriptorRef>
                    descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.myhadoop.HelloWorldmainClass>
                        manifest>
                    archive>
                configuration>
                <executions>
                    <execution>
                        <id>make-assemblyid>
                        <phase>packagephase>
                        <goals>
                            <goal>singlegoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
build>
           

注意:代碼中mainClass需要根據打包的具體類修改

2、在IDEA右側欄中選擇Maven Projects,打開Lifecycle檔案夾,先點選compile再點選package,等待jar打包成功。

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

3、jar包打完之後打開左側target檔案夾,發現有兩個jar包,把無依賴的jar包複制到hadoop-node1節點内

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

拷貝到hadoop-node1節點

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

4、在hadoop-node1節點下執行指令

hadoop jar   jar包名  classname

hadoop jar hadoop-1.0.jar com.myhadoop.HelloWorld
           
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗
eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

END

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

每天進步一點點

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

讓我知道你在看

eclipse遠端連接配接hadoop_Hadoop之HDFS基本操作實驗

繼續閱讀