當前位置:首頁 » 存儲配置 » 用hdfs進行文件存儲

用hdfs進行文件存儲

發布時間: 2023-02-08 01:46:19

㈠ Hadoop HDFS處理大量的小文件

小文件是指文件大小明顯小於HDFS上塊(block)大小(默認64MB)的文件。如果存儲小文件,必定會有大量這樣的小文件,否則你也不會使用Hadoop(If you』re storing small files, then you probably have lots of them

(otherwise you wouldn』t turn to Hadoop)),這樣的文件給hadoop的擴展性和性能帶來嚴重問題。當一個文件的大小小於HDFS的塊大小(默認64MB),就將認定為小文件否則就是大文件。為了檢測輸入文件的大小,可以瀏覽Hadoop DFS 主頁 http://machinename:50070/dfshealth.jsp ,並點擊Browse filesystem(瀏覽文件系統)。

首先,在HDFS中,任何一個文件,目錄或者block在NameNode節點的內存中均以一個對象表示(元數據)(Every file, directory and block in HDFS is represented as an object in the namenode』s memory),而這受到NameNode物理內存容量的限制。每個元數據對象約佔150byte,所以如果有1千萬個小文件,每個文件佔用一個block,則NameNode大約需要15G空間。如果存儲1億個文件,則NameNode需要150G空間,這毫無疑問1億個小文件是不可取的。

其次,處理小文件並非Hadoop的設計目標,HDFS的設計目標是流式訪問大數據集(TB級別)。因而,在HDFS中存儲大量小文件是很低效的。訪問大量小文件經常會導致大量的尋找,以及不斷的從一個DatanNde跳到另一個DataNode去檢索小文件(Reading through small files normally causes lots of seeks and lots of hopping from datanode to datanode to retrieve each small file),這都不是一個很有效的訪問模式,嚴重影響性能。

最後,處理大量小文件速度遠遠小於處理同等大小的大文件的速度。每一個小文件要佔用一個slot,而task啟動將耗費大量時間甚至大部分時間都耗費在啟動task和釋放task上。

Hadoop存檔文件系統通常將HDFS中的多個文件打包成一個存檔文件,減少namenode內存的使用

hadoop archive命令創建HAR文件

from:https://blog.csdn.net/sunnyyoona/article/details/53870077

㈡ hadoop 中文件是怎麼存儲的

1、存儲文件的時候需要指定存儲的路徑,這個路徑是HDFS的路徑。而不是哪個節點的某個目錄。比如./hadoopfs-putlocalfilehdfspat

一般操作的當前路徑是/user/hadoop比如執行./hadoopfs-ls.實際上就相當於./hadoopfs-ls/user/hadoop

2、HDFS本身就是一個文件系統,在使用的時候其實不用關心具體的文件是存儲在哪個節點上的。如果需要查詢可以通過頁面來查看,也可以通過API來實現查詢。

㈢ hadoop 中文件是怎麼存儲的

1、存儲文件的時候需要指定存儲的路徑,這個路徑是HDFS的路徑。而不是哪個節點的某個目錄。比如./hadoop fs -put localfile hdfspat
一般操作的當前路徑是/user/hadoop比如執行./hadoop fs -ls .實際上就相當於./hadoop fs -ls /user/hadoop
2、HDFS本身就是一個文件系統,在使用的時候其實不用關心具體的文件是存儲在哪個節點上的。如果需要查詢可以通過頁面來查看,也可以通過API來實現查詢。

㈣ hdfs適合存儲多大的單個文件

首先hdfs是建立在多個機器文件系統上的一個邏輯上的文件系統。它的底層數據以數據塊方式存儲,塊大小可進行調整。
假如你設置一個數據塊大小為256M,上傳一個1G的文件,它底層會將這個文件分成4塊存儲,每個塊256M。你在hdfs上看到的是一個完整的文件,隨時可對這個文件進行操作,無需關注它的存儲。就像你在操作系統上操作文件一樣,無需關注它存在那個磁碟哪個扇區

㈤ Python使用hdfs存放文件時報Proxy error: 502 Server dropped connection解決方案

Python3 使用hdfs分布式文件儲存系統

from pyhdfs import *

client = HdfsClient(hosts="testhdfs.org, 50070",

user_name="web_crawler")    #    創建一個連接

client.get_home_directory()    # 獲取hdfs根路徑

client.listdir(PATH)    # 獲取hdfs指定路徑下的文件列表

client._from_local(file_path, hdfs_path, overwrite=True)    # 把本地文件拷貝到伺服器,不支持文件夾;overwrite=True表示存在則覆蓋

​client.delete(PATH, recursive=True)    # 刪除指定文件

hdfs_path必須包含文件名及其後綴,不然不會成功

如果連接

HdfsClient

報錯

Traceback (most recent call last):

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code

    exec(code_obj, self.user_global_ns, self.user_ns)

  File "

    client.get_home_directory()

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 565, in get_home_directory

    return _json(self._get('/', 'GETHOMEDIRECTORY', **kwargs))['Path']

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 391, in _get

    return self._request('get', *args, **kwargs)

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 377, in _request

    _check_response(response, expected_status)

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 799, in _check_response

    remote_exception = _json(response)['RemoteException']

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 793, in _json

    "Expected JSON. Is WebHDFS enabled? Got {!r}".format(response.text))

pyhdfs.HdfsException: Expected JSON. Is WebHDFS enabled? Got '\n\n\n\n

502 Server dropped connection

\n

The following error occurred while trying to access http://%2050070:50070/webhdfs/v1/?user.name=web_crawler&op=GETHOMEDIRECTORY :

\n 502 Server dropped connection

\n

Generated Fri, 21 Dec 2018 02:03:18 GMT by Polipo on .\n\r\n'

則一般是訪問認證錯誤,可能原因是賬戶密碼不正確或者無許可權,或者本地網路不在可訪問名單中

㈥ hadoop面試題之HDFS

1、簡單介紹下hadoop吧?

    廣義上hadoop是指與hadoop相關的大數據生態圈。包含hive、spark、hbase等。

    狹義上hadoop指的是apache的開源框架。有三個核心組件:

----hdfs:分布式文件存儲系統

----yarn:分布式資源管理調度平台

----mr:分布式計算引擎

2、介紹下hdfs?

全稱為Hadoop Distributed File System。有三個核心組件:

namenode:有三個作用,第一是負責保存集群的元數據信息,第二是負責維護整個集群節點的正常運行。

第三是負責處理客戶端的請求。

datanode:負責實際保存數據。實際執行數據塊的讀寫操作。

secondarynamenode:輔助namenode進行元數據的管理。不是namenode的備份。

3、namenode的工作機制?

    namenode在內存中保存著整個內存系統的名稱空間和文件數據塊的地址映射。整個hdfs可存儲的文件數受限於namenode的內存大小。所以hdfs不適合大量小文件的存儲。

---namenode有三種元數據存儲方式來管理元數據:

    》內存元數據:內存中保存了完整的元數據

    》保存在磁碟上的元數據鏡像文件(fsimage):該文件時hdfs存在磁碟中的元數據檢查點,裡面保存的是最後一次檢查點之前的hdfs文件系統中所有目錄和文件的序列化信息。

    》數據操作日誌文件(edits):用於銜接內存meta data和持久化元數據鏡像fsimage之間的操作日誌文件。保存了自最後一次檢查點之後所有針對hdfs文件系統的操作。如對文件的增刪改查。

4、如何查看元數據信息?

    因為edits和fsimage文件是經過序列化的,所以不能直接查看。hadoop2.0以上提供了查看兩種文件的工具。

----命令:hdfs oiv 可以將fsimage文件轉換成其他格式,如xml和文本文件。-i 表示輸入fsimage文件。-o 輸出文件路徑,-p 指定輸出文件

                hdfs oev可以查看edits文件。同理需要指定相關參數。

詳情查看: https://www.imooc.com/article/79705

4、datanode的工作機制?

    1)以數據塊的形式存儲hdfs文件

    2)datanode響應客戶端的讀寫請求

    3)周期性的向namenode匯報心跳信息、數據塊信息、緩存數據塊信息

5、secondary namenode工作機制?

    當發生checkpoint機制時會觸發second namenode進行工作。checkpoint:

    新的edists文件不會立即和fsimage文件合並,是在edits文件大小超過(默認)64m,或者時間超過(默認)1小時,會觸發checkpoint操作。當checkpoint時,namenode會新建一個edits.new的文件,此時second namenode將文件fsimage文件和edits文件(http get)到本地,然後載入到內存中進行合並,完成的文件名稱為fsimage.ckpt。最後 second namenode將該文件(http post)到namenode,然後edits.new和fsimage.ckpt文件轉換為fsimage和edits。

6、hdfs的文件副本機制?

    所有的文件都是以塊的形式保存到hdfs中。塊的大小默認為128m。在hdfs-site文件中進行指定。

    動態副本創建策略:默認副本數是3,可以在上傳文件時,顯式設定replication。也可以通過指令修改文件的副本數 hadoop fs -setrep -R 1

7、為實現高可用,hdfs採用了哪些策略?

    副本機制、機架感知、心跳機制、安全模式、校驗和、回收站、元數據保護、快照機制(具體介紹導航- https://www.jianshu.com/writer#/notebooks/44567747/notes/66453316 )

8、hdfs的存儲過程?

    ①client向hdfs發起寫請求,通過RPC與namenode建立通訊。namenode檢查文件是否存在等信息,返回是否可以存儲。

    ②client將文件切割為一個個block塊,client申請存儲第一塊block。namenode返回可以存儲這個block塊的datanode的地址,假設為ABC。

    ③A到B到C逐級構建pipeline。client向A上傳第一個packet,默認為64k。A收到一個packet後會將packet傳給B,再傳給C。pipeline反方向返回ack信息。最終由第一個節點A將pipelineack發送給client

    ④一個block完成之後,再進行下一個block的存儲過程。

9、hdfs的讀過程?

10、hdfs的垃圾桶機制?

    hdfs的垃圾桶機制默認是關閉的,需要手動開啟。hdfs刪除的文件不會立刻就刪除,而是在設定的時間後進行刪除。

11、hdfs的擴容和縮容



12、

㈦ HDFS的數據存儲之block

HDFS被設計成支持非常大的文件,與HDFS兼容的應用是那些處理大數據集的應用。這些應用程序處理非常大的文件在具有隻被創建和寫入一次,被讀取一次或多次的特性,即HDFS中存儲的大文件是一次寫入多次讀取不支持修改的,同時要求HDFS滿足應用程序以流讀取速度的要求。

正是因為大數據系統對所需的文件系統有這些要求,就決定了HDFS在存儲模型上具有以下特點:

㈧ 3.4 HDFS存儲原理

一、涉及的問題

1. 冗餘數據保存

2. 數據保存策略

3. 數據恢復

二、冗餘數據保存問題

1. 冗餘因子

出於成本考慮(也是HDFS優勢),HDFS常架構在廉價機器上——經常出故障。所以必須有冗餘機制。一般每個塊都保存3份,即冗餘因子默認是3

注意:偽分布式配置,即名稱節點和數據節點都放在同一個機器上,則冗餘因子顯然只能是1,因為只有一個機器

2. 冗餘機制的好處

(1) 加快數據傳輸速度——當多個客戶端同時想訪問相同數據塊時,可以同時並行而不需要排隊

(2) 很容易檢查數據錯誤——互相對照發現錯誤

(3) 保證數據可靠性——HDFS有這樣的機制:一旦探測到一個副本故障,會自動復制正確副本,使冗餘因子恢復默認值

三、數據保存與讀取

1. 第一副本存放策略:

(1) 如果保存請求來自集群內部,第一個副本放在發起者(應用)所在節點。比如一個在DataNode1上的應用發起存數據請求,那就把它第一份副本也存在DataNode1

(2) 如果保存請求來自集群外部,HDFS會隨機挑選一台磁碟不太忙且CPU不太忙的節點來放置第一個副本

2. 第二個副本存放策略:

放在和第一副本不同的機架的節點上 。如下圖中DataNode4,它和DataNode1在不同機架上

3. 第三副本放置策略:

放在和第一副本相同的機架的其他節點。如圖中的DataNode2或DataNode3

4. 更多副本存放策略:

全部隨機放置(依靠隨機演算法

5、數據讀取

原則:就近讀取

——HDFS提供一個API可以告訴數據節點的機架ID,客戶端也可以用API診斷自己所在機架ID。ID相同說明在同一機架。而相同機架數據間通信很快,它們就是「相近」的數據。

——而前面也說了,每個數據塊都有多個不同的副本,如果找到某個副本和客戶端在同一個機架上,就優先選此副本。如果沒有就隨機找一個副本讀取

四、數據的錯誤與恢復

1. 名稱節點出錯

只有一個名稱節點,而且它保存了核心數據結構FsImage和EditLog。恢復方法:

(1) 在HDFS1.0里只能暫停服務,從第二名稱節點(冷備份)恢復

(2) 在HDFS2.0里可以直接用熱備份恢復而不用暫停服務

2. 數據節點出錯

(1) 如何發現數據節點出問題:

在整個運行期間,DataNode都會定期通過遠程調用向NameNode發送心跳信息。一旦隔了一個周期收不到心跳信息,則NameNode就知道這個DataNode發生了故障

(2) 如何恢復數據節點:

NameNode會在狀態列表裡把出錯的DataNode標記為不可用(宕機),然後把它裡面的數據塊對應的備份(在其他DataNode上)復制到另一個DataNode上去

——HDFS和其他分布式文件系統最大的區別就是 可以調整冗餘數據位置 。這種調整不僅發生在故障時,也可以在在機器負載不均衡時把一個DataNode的數據遷移到另一個上面以平衡負載

3. 數據出錯

(1) 如何發現數據出錯:

「校驗碼機制」——客戶端每寫入一個數據塊,都會為其生成一個校驗碼並保存在同一文件目錄下。讀取數據塊同時會核對其校驗碼,如果不對說明數據出問題了。

(2) 如何恢復數據:

從備份復制過來

Reference:

https://www.icourse163.org/learn/XMU-1002335004#/learn/content?type=detail&id=1214310117&cid=1217922275&replay=true

熱點內容
2021思域新款買哪個配置 發布:2025-07-15 11:33:24 瀏覽:771
路由搭建http伺服器 發布:2025-07-15 11:26:45 瀏覽:723
消遣解壓 發布:2025-07-15 11:26:43 瀏覽:392
ICL編譯 發布:2025-07-15 11:26:32 瀏覽:664
快看吧交易密碼多少 發布:2025-07-15 11:26:26 瀏覽:482
星途買哪個配置啊 發布:2025-07-15 11:14:35 瀏覽:521
蘋果手機刪除緩存文件 發布:2025-07-15 11:08:01 瀏覽:957
安卓手機桌面變大軟體怎麼恢復 發布:2025-07-15 11:07:47 瀏覽:605
酒店密碼門禁是什麼牌子 發布:2025-07-15 11:06:56 瀏覽:968
下載winrar解壓縮 發布:2025-07-15 10:59:36 瀏覽:314