日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop权威指南学习笔记三

發(fā)布時間:2025/4/9 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop权威指南学习笔记三 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

HDFS簡單介紹

聲明:本文是本人基于Hadoop權(quán)威指南學(xué)習(xí)的一些個人理解和筆記,僅供學(xué)習(xí)參考。有什么不到之處還望指出,一起學(xué)習(xí)一起進步。

?轉(zhuǎn)載請注明:http://blog.csdn.net/my_acm


Hadoop說白了就是一個提供了處理分析大數(shù)據(jù)的文件集群,當(dāng)中最重要的無疑是HDFS(Hadoop Distributed File System)即Hadoop分布式文件系統(tǒng)。

?

1、

???????? HDFS是一種以流式數(shù)據(jù)訪問模式(一次寫入多次讀取的模式)存儲超大文件的系統(tǒng)。

其不須要的高端的硬件系統(tǒng),普通市面上的硬件就能滿足要求。

???????? 眼下不適合應(yīng)用HDFS的有:低延遲的數(shù)據(jù)訪問、大量小的文件、多用戶寫入隨意改動文件等。

2、

???????? HDFS存儲以塊為單位,通常塊大小為64M。之所以要分為這么大的塊,主要是為了降低尋址時間,由于眼下來看。傳輸數(shù)據(jù)速率越來越快,對于HDFS處理大數(shù)據(jù)時,假設(shè)頻繁的尋址必定會使得執(zhí)行時間變長。

???????? HDFS集群有兩種節(jié)點名稱節(jié)點和多個數(shù)據(jù)節(jié)點。當(dāng)中名稱節(jié)點充當(dāng)管理者,數(shù)據(jù)節(jié)點充當(dāng)工作者。

名稱節(jié)點相當(dāng)于HDFS文件樹上的枝干分叉點,而數(shù)據(jù)節(jié)點則標(biāo)注著全部塊的存儲信息。所以名稱節(jié)點的丟失就意味著HDFS的癱瘓。

因此Hadoop提供了兩種機制解決這一問題:

一種是復(fù)制組成文件系統(tǒng)元數(shù)據(jù)的持久狀態(tài)文件。即在本地磁盤寫入的同一時候也寫入一個遠程NFS掛載。

還有一種是設(shè)置一個二級名稱節(jié)點。

3、

???????? HDFS提供命令行接口的交互。

4、

???????? Hadoop是一個抽象的文件系統(tǒng)概念,HDFS是當(dāng)中的一個詳細實現(xiàn),java抽象類org.apache.hadoop.fs.FileSystem展示了Hadoop的一個文件系統(tǒng),并且有幾個詳細實現(xiàn)。



如上圖所看到的。Hadoop提供了很多文件的接口,一般是通過URL來確定使用何種文件系統(tǒng)實現(xiàn)交互。

5、

???????? Hadoop是java實現(xiàn)的所以,java接口無疑是當(dāng)中重中之重。以下是java接口的一些詳細實現(xiàn)。

(1)??????數(shù)據(jù)讀取:

?

使用URL讀取數(shù)據(jù)

Java識別Hadoop文件系統(tǒng)的URL方案,就是通過一個FsUrlStreamHandlerFactory實例來調(diào)用在URL中的setURLStreamHandlerFactory方法。

注意:這樣的方法在java虛擬機中僅僅能被調(diào)用一次。所以通常設(shè)置為static,也因此假設(shè)程序其它部件(可能不是在你控制的第三方部件)設(shè)置了一個URLStreamHandlerFactory,那么久再也不能從Hadoop讀取數(shù)據(jù)。

?

代碼:


輸入執(zhí)行:

% hadoop URLCat hdfs://localhost/user/tom/test.txt

結(jié)果:

Hello world Hello world

Hello world

Hello world Hello world

?

使用FileSystem API讀取數(shù)據(jù)

直接看代碼吧。注意看凝視

?

(2)??????數(shù)據(jù)寫入

FileSystem類有一系列創(chuàng)建文件的方法。

public FSDataOutputStream create(Pathf) throws IOException

用create創(chuàng)建文件是可用exists()推斷其父文件夾是否存在。

另一個用于傳遞回調(diào)接口的重載方法 Progressable,如此一來。我們所寫的應(yīng)用就會被告知數(shù)據(jù)寫入數(shù)據(jù)節(jié)點的進度。

package org.apache.hadoop.util;

public interface Progressable{

??????????? publicvoid progress();

}

創(chuàng)建文件的還能夠用例如以下方法:

Public FSDataOutputStream append(Pathf) throws IOException

此方法同意在打開文件的末尾追加數(shù)據(jù)。

?

(3)??????文件夾

FileSystem題目了創(chuàng)建文件夾的方法:

public Boolean mkdirs(Path f) thorwsIOException

(4)??????查詢文件系統(tǒng)

FileStatus類封裝了文件系統(tǒng)中文件和文件夾的元數(shù)據(jù)。包含文件長度、塊大小、副本、改動時間、全部者以及許可信息。

FileSystem的getFileStatus()提供了獲取一個文件或文件夾的狀態(tài)對象方法。

假設(shè)僅僅是推斷一個文件是否存在。則能夠使用前文提到的exists(Path f)方法。

?

Hadoop有時要查詢批量文件時通常要用到通配符。所以它為運行通配符提供了

Hadoop支持與Unix bash同樣的通配符兩個FileSystem方法:

public FileStatus[] globStatus (PathpathPattern) throws IOException

public FileStatus[] globStatus (Path pathPattern,PathFileter filter)throws IOException

通配符:


(5)??????刪除數(shù)據(jù)

FileSystem中的delete()方法能夠永久刪除文件夾。

public Boolean delete(Path f,Boolean recursive) throwsIOException

? ? ? ? ?

轉(zhuǎn)載于:https://www.cnblogs.com/jzssuanfa/p/6958412.html

總結(jié)

以上是生活随笔為你收集整理的Hadoop权威指南学习笔记三的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。