HDFS讀寫文件操作

1    運行環(huán)境說明

創(chuàng)新互聯(lián)成立與2013年,先為沙坡頭等服務(wù)建站,沙坡頭等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為沙坡頭企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

1.1     硬軟件環(huán)境

1.2     機器網(wǎng)絡(luò)環(huán)境

2    書面作業(yè)1:編譯并運行《權(quán)威指南》中的例3.2

2.1     書面作業(yè)1內(nèi)容

2.2     運行代碼

2.3     實現(xiàn)過程

2.3.1   創(chuàng)建代碼目錄

2.3.2   建立例子文件上傳到hdfs中

2.3.3   配置本地環(huán)境

2.3.4   編寫代碼

2.3.5   編譯代碼

2.3.6   使用編譯代碼讀取文件

3    書面作業(yè)2:寫入HDFS成為一個新文件

3.1    書面作業(yè)2內(nèi)容

3.2    運行代碼

3.3    實現(xiàn)過程

3.3.1   編寫代碼

3.3.2   編譯代碼

3.3.3   建立測試文件

3.3.4   使用編譯代碼上傳文件內(nèi)容到hdfs

3.3.5   驗證是否成功

4    書面作業(yè)3:作業(yè)2反向操作

4.1    書面作業(yè)2內(nèi)容

4.2    程序代碼

4.3    實現(xiàn)過程

4.3.1   編寫代碼

4.3.2   編譯代碼

4.3.3   建立測試文件

4.3.4   使用編譯代碼把文件內(nèi)容從hdfs輸出到文件系統(tǒng)中

4.3.5   驗證是否成功

 

1    運行環(huán)境說明

1.1  硬軟件環(huán)境

l  主機操作系統(tǒng):Windows 64 bit,雙核4線程,主頻2.2G,6G內(nèi)存

l  虛擬軟件:VMware Workstation 9.0.0 build-812388

l  虛擬機操作系統(tǒng):CentOS 64位,單核,1G內(nèi)存

l  JDK:1.7.0_55 64 bit

l  Hadoop:1.1.2

1.2  機器網(wǎng)絡(luò)環(huán)境

該開發(fā)機器處于能連接互聯(lián)網(wǎng)的局域網(wǎng)中,具體信息為:

序號

IP地址

機器名

類型

用戶名

運行進(jìn)程

1

10.88.147.220

Hadoop0

單機節(jié)點

hadoop

NN、SNNTaskTracer、DN、JobTracer

2    書面作業(yè)1:編譯并運行《權(quán)威指南》中的例3.2

2.1  書面作業(yè)1內(nèi)容

在Hadoop集群中編譯并運行《權(quán)威指南》中的例3.2

2.2  運行代碼

import java.io.InputStream;

 

import java.net.URI;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.*;

import org.apache.hadoop.io.IOUtils;

 

publicclass FileSystemCat {

    publicstaticvoid main(String[] args) throws Exception {

        String uri = args[0];

        Configuration conf = new Configuration();

    FileSystem fs = FileSystem. get(URI.create (uri), conf);

    InputStream in = null;

    try {

         in = fs.open( new Path(uri));

         IOUtils.copyBytes(in, System.out, 4096, false);

        } finally {

         IOUtils.closeStream(in);

        }

    }

}

2.3  實現(xiàn)過程

在Hadoop集群中編譯并運行《權(quán)威指南》中的例3.2

2.3.1創(chuàng)建代碼目錄

啟動Hadoop,在/usr/local/hadoop-1.1.2目錄下使用如下命令建立myclass和input目錄:

mkdir myclass

mkdir input

HDFS讀寫文件操作

2.3.2建立例子文件上傳到hdfs中

進(jìn)入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立quangle.txt文件,內(nèi)容為:

HDFS讀寫文件操作

使用如下命令在hdfs中建立/usr/hadoop/文件夾

hadoop fs -mkdir /usr/hadoop/

hadoop fs -ls /usr/

HDFS讀寫文件操作

把例子文件上傳到hdfs的/usr/hadoop/文件夾中

hadoop fs -copyFromLocal ../input/quangle.txt /usr/hadoop/quangle.txt

hadoop fs -ls /usr/hadoop

HDFS讀寫文件操作

2.3.3配置本地環(huán)境

對/usr/local/hadoop-1.1.2/conf目錄中的hadoop-env.sh進(jìn)行配置,如下如所示:

ls

vi hadoop-env.sh

HDFS讀寫文件操作

加入對HADOOP_CLASPATH變量值,值為/usr/local/hadoop-1.1.2/myclass

HDFS讀寫文件操作

2.3.4編寫代碼

進(jìn)入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立FileSystemCat.java代碼文件,命令如下:

cd /usr/local/hadoop-1.1.2/myclass/

vi FileSystemCat.java

HDFS讀寫文件操作

輸入代碼內(nèi)容:

HDFS讀寫文件操作

2.3.5編譯代碼

在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:

javac -classpath ../hadoop-core-1.1.2.jar FileSystemCat.java

ls

HDFS讀寫文件操作

2.3.6使用編譯代碼讀取文件

使用如下命令讀取quangle.txt內(nèi)容:

hadoop FileSystemCat /usr/hadoop/quangle.txt

HDFS讀寫文件操作

3    書面作業(yè)2:寫入HDFS成為一個新文件

3.1  書面作業(yè)2內(nèi)容新航道雅思培訓(xùn)

自行在本地文件系統(tǒng)生成一個大約100字節(jié)的文本文件,寫一段程序(可以利用Java API或C API),讀入這個文件,并將其第101-120字節(jié)的內(nèi)容寫入HDFS成為一個新文件,提供代碼和執(zhí)行結(jié)果演示抓圖

3.2  運行代碼

注意:在編譯前請先刪除中文注釋!

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.net.URI;

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IOUtils;

import org.apache.hadoop.util.Progressable;

 

publicclass LocalFile2Hdfs {

    publicstaticvoid main(String[] args) throws Exception {

 

        // 獲取讀取源文件和目標(biāo)文件位置參數(shù)

        String local = args[0];

        String uri = args[1];

       

        FileInputStream in = null;

        OutputStream out = null;

        Configuration conf = new Configuration();

        try {

            // 獲取讀入文件數(shù)據(jù)

            in = new FileInputStream(new File(local));

 

            // 獲取目標(biāo)文件信息

            FileSystem fs = FileSystem.get(URI.create(uri), conf);

            out = fs.create(new Path(uri), new Progressable() {

                @Override

                publicvoid progress() {

                    System.out.println("*");

                }

            });

 

            // 跳過前100個字符

            in.skip(100);

            byte[] buffer = newbyte[20];

               

            // 從101的位置讀取20個字符到buffer中

            int bytesRead = in.read(buffer);

            if (bytesRead >= 0) {

                out.write(buffer, 0, bytesRead);

            }

        } finally {

            IOUtils.closeStream(in);

            IOUtils.closeStream(out);

        }      

    }

}

3.3  實現(xiàn)過程

3.3.1編寫代碼

進(jìn)入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立LocalFile2Hdfs.java代碼文件,命令如下:

HDFS讀寫文件操作

輸入代碼內(nèi)容:

HDFS讀寫文件操作

3.3.2編譯代碼

在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:

javac -classpath ../hadoop-core-1.1.2.jar LocalFile2Hdfs.java

ls

HDFS讀寫文件操作

3.3.3建立測試文件

進(jìn)入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立local2hdfs.txt文件,內(nèi)容為:

cd /usr/local/hadoop-1.1.2/input/

vi local2hdfs.txt

HDFS讀寫文件操作

HDFS讀寫文件操作

3.3.4使用編譯代碼上傳文件內(nèi)容到hdfs

使用如下命令讀取local2hdfs第101-120字節(jié)的內(nèi)容寫入HDFS成為一個新文件:

cd /usr/local/hadoop-1.1.2/bin/

hadoop LocalFile2Hdfs ../input/local2hdfs.txt /usr/hadoop/local2hdfs_part.txt

HDFS讀寫文件操作

3.3.5驗證是否成功

使用如下命令讀取local2hdfs_part.txt內(nèi)容:

hadoop fs -cat /usr/hadoop/local2hdfs_part.txt

HDFS讀寫文件操作

4    書面作業(yè)3:作業(yè)2反向操作

4.1  書面作業(yè)2內(nèi)容

2的反向操作,在HDFS中生成一個大約100字節(jié)的文本文件,寫一段程序(可以利用Java API或C API),讀入這個文件,并將其第101-120字節(jié)的內(nèi)容寫入本地文件系統(tǒng)成為一個新文件,提供代碼和執(zhí)行結(jié)果演示抓圖

4.2  程序代碼

 

4.3  實現(xiàn)過程

4.3.1編寫代碼

進(jìn)入/usr/local/hadoop-1.1.2/myclass目錄,在該目錄中建立Hdfs2LocalFile.java代碼文件,命令如下:

cd /usr/local/hadoop-1.1.2/myclass/

vi Hdfs2LocalFile.java

HDFS讀寫文件操作

輸入代碼內(nèi)容:

HDFS讀寫文件操作

4.3.2編譯代碼

在/usr/local/hadoop-1.1.2/myclass目錄中,使用如下命令編譯代碼:

javac -classpath ../hadoop-core-1.1.2.jar Hdfs2LocalFile.java

ls

HDFS讀寫文件操作

4.3.3建立測試文件

進(jìn)入/usr/local/hadoop-1.1.2/input目錄,在該目錄中建立hdfs2local.txt文件,內(nèi)容為:

cd /usr/local/hadoop-1.1.2/input/

vi hdfs2local.txt

HDFS讀寫文件操作

HDFS讀寫文件操作

把該文件上傳到hdfs的/usr/hadoop/文件夾中

cd /usr/local/hadoop-1.1.2/bin/

hadoop fs -copyFromLocal ../input/hdfs2local.txt /usr/hadoop/hdfs2local.txt

hadoop fs -ls /usr/hadoop

HDFS讀寫文件操作

4.3.4使用編譯代碼把文件內(nèi)容從hdfs輸出到文件系統(tǒng)中

使用如下命令讀取hdfs2local.txt第101-120字節(jié)的內(nèi)容寫入本地文件系統(tǒng)成為一個新文件:

hadoop Hdfs2LocalFile /usr/hadoop/hdfs2local.txt ../input/hdfs2local_part.txt

ls ../input

HDFS讀寫文件操作

4.3.5驗證是否成功

使用如下命令讀取hdfs2local_part.txt內(nèi)容:

cat ../input/hdfs2local_part.txt

HDFS讀寫文件操作

當(dāng)前文章:HDFS讀寫文件操作
瀏覽路徑:http://bm7419.com/article26/psdcjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、微信公眾號虛擬主機、商城網(wǎng)站外貿(mào)建站、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營