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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java+大数据开发——HDFS详解

發(fā)布時(shí)間:2024/9/21 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java+大数据开发——HDFS详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. HDFS 介紹

???什么是HDFS

? 首先,它是一個(gè)文件系統(tǒng),用于存儲(chǔ)文件,通過統(tǒng)一的命名空間——目錄樹來定位文件。

? ? 其次,它是分布式的,由很多服務(wù)器聯(lián)合起來實(shí)現(xiàn)其功能,集群中的服務(wù)器有各自的角色;

???設(shè)計(jì)思想

? ? 分而治之:將大文件、大批量文件,分布式存放在大量服務(wù)器上,以便于采取分而治之的方式對海量數(shù)據(jù)進(jìn)行運(yùn)算分析;

???在大數(shù)據(jù)系統(tǒng)中作用:

? 為各類分布式運(yùn)算框架(如:mapreducesparktez……)提供數(shù)據(jù)存儲(chǔ)服務(wù)。

???Hdfs整體架構(gòu)如下

?

2. HDFS的特性

(1)HDFS中的文件在物理上是分塊存儲(chǔ)(block。塊的大小可以通過配置參數(shù)( dfs.blocksize)來規(guī)定,默認(rèn)大小在hadoop2.x版本中是128M

(2)HDFS文件系統(tǒng)會(huì)給客戶端提供一個(gè)統(tǒng)一的抽象目錄樹,客戶端通過路徑來訪問文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data

(3)目錄結(jié)構(gòu)及文件分塊信息(元數(shù)據(jù))的管理由namenode節(jié)點(diǎn)承擔(dān),namenodeHDFS集群主節(jié)點(diǎn),負(fù)責(zé)維護(hù)整個(gè)hdfs文件系統(tǒng)的目錄樹,以及每一個(gè)路徑(文件)所對應(yīng)的block塊信息。

(4)文件的各個(gè)block的存儲(chǔ)管理由datanode節(jié)點(diǎn)承擔(dān),datanodeHDFS集群從節(jié)點(diǎn),每一個(gè)block都可以在多個(gè)datanode上存儲(chǔ)多個(gè)副本(副本數(shù)量也可以通過參數(shù)設(shè)置dfs.replication)。

(5)HDFS是設(shè)計(jì)成適應(yīng)一次寫入,多次讀出的場景,且不支持文件的修改。

?

3. HDFS 的shell(命令行客戶端)操作

3.1HDFS命令行客戶端使用

HDFS提供shell命令行客戶端,使用命令語法為:hadoop fs <args>,它支持支持多種文件系統(tǒng)的訪問,主要包括LocalHDFS兩種,配置文件中的fs.defaultFS的值決定了默認(rèn)訪問的文件系統(tǒng)。其中命令中的“fs”表示FileSystem Shell。

“<args>”“fs”的子命令,包括:

創(chuàng)建目錄:mkdir

列表文件:ls

查看文件:cat

轉(zhuǎn)移文件:put、get、mv、cp

刪除文件:rm、rmr

管理命令:test、du、expunge

3.2常用命令參數(shù)介紹

?

-help ????????????

功能:輸出這個(gè)命令參數(shù)手冊

-ls ?????????????????

功能:顯示目錄信息

示例: hadoop fs -ls hdfs://hadoop-server01:9000/

備注:這些參數(shù)中,所有的hdfs路徑都可以簡寫

-->hadoop fs -ls / ??等同于上一條命令的效果

-mkdir ?????????????

功能:在hdfs上創(chuàng)建目錄

示例:hadoop fs ?-mkdir ?-p ?/aaa/bbb/cc/dd

--appendToFile ?

功能:追加一個(gè)文件到已經(jīng)存在的文件末尾

示例:hadoop ?fs ?-appendToFile ?./hello.txt ?hdfs://hadoop-server01:9000/hello.txt

可以簡寫為:Hadoop ?fs ?-appendToFile ?./hello.txt ?/hello.txt

-cat ?

功能:顯示文件內(nèi)容 ?

示例:hadoop fs -cat ?/hello.txt

-cp ?????????????

功能:從hdfs的一個(gè)路徑拷貝hdfs的另一個(gè)路徑

示例: hadoop??fs??-cp ?/aaa/jdk.tar.gz ?/bbb/jdk.tar.gz.2

-mv ????????????????????

功能:在hdfs目錄中移動(dòng)文件

示例: hadoop??fs??-mv??/aaa/jdk.tar.gz ?/

-get ?????????????

功能:等同于copyToLocal,就是從hdfs下載文件到本地

示例:hadoop fs -get ?/aaa/jdk.tar.gz

-put ???????????????

功能:等同于copyFromLocal

示例:hadoop??fs??-put??/aaa/jdk.tar.gz ?/bbb/jdk.tar.gz.2

-rm ???????????????

功能:刪除文件或文件夾

示例:hadoop fs -rm -r /aaa/bbb/

?

4. HDFS 的工作機(jī)制

4.1概述

? ? ? ? ? 1、HDFS集群分為兩大角色:NameNodeDataNode

? ? ? ? ? 2、NameNode負(fù)責(zé)管理整個(gè)文件系統(tǒng)的元數(shù)據(jù);

? ? ? ? ? 3、DataNode 負(fù)責(zé)管理用戶的文件數(shù)據(jù)塊;

? ? ?4、文件會(huì)按照固定的大小(blocksize)切成若干塊后分布式存儲(chǔ)在若干臺(tái)datanode上;

? ? ?5、每一個(gè)文件塊可以有多個(gè)副本,并存放在不同的datanode上;

? ? ? ? ? 6、Datanode會(huì)定期向Namenode匯報(bào)自身所保存的文件block信息,而namenode則會(huì)負(fù)責(zé)保持文件的副本數(shù)量;

? ? ? ? ? 7、HDFS的內(nèi)部工作機(jī)制對客戶端保持透明,客戶端請求訪問HDFS都是通過向namenode申請來進(jìn)行;

?

4.2HDFS寫數(shù)據(jù)流程

客戶端要向HDFS寫數(shù)據(jù),首先要跟namenode通信以確認(rèn)可以寫文件并獲得接收文件blockdatanode,然后,客戶端按順序?qū)⑽募饌€(gè)block傳遞給相應(yīng)datanode,并由接收到blockdatanode負(fù)責(zé)向其他datanode復(fù)制block的副本。

?

4.3HDFS讀數(shù)據(jù)流程

客戶端將要讀取的文件路徑發(fā)送給namenodenamenode獲取文件的元信息(主要是block的存放位置信息)返回給客戶端,客戶端根據(jù)返回的信息找到相應(yīng)datanode逐個(gè)獲取文件的block并在客戶端本地進(jìn)行數(shù)據(jù)追加合并從而獲得整個(gè)文件。

?

5.NAMENODE 工作機(jī)制

5.1NAMENODE 職責(zé)

NAMENODE職責(zé):負(fù)責(zé)客戶端請求的響應(yīng)以及元數(shù)據(jù)的管理(查詢,修改)。

?

5.2元數(shù)據(jù)管理

namenode對數(shù)據(jù)的管理采用了三種存儲(chǔ)形式:

1、內(nèi)存元數(shù)據(jù)(NameSystem)

2、磁盤元數(shù)據(jù)鏡像文件

3、數(shù)據(jù)操作日志文件(可通過日志運(yùn)算出元數(shù)據(jù))

?

5.3元數(shù)據(jù)儲(chǔ)存機(jī)制

A、內(nèi)存中有一份完整的元數(shù)據(jù)(內(nèi)存meta data)

B、磁盤有一個(gè)“準(zhǔn)完整”的元數(shù)據(jù)鏡像(fsimage)文件(namenode的工作目錄中)

C、用于銜接內(nèi)存metadata和持久化元數(shù)據(jù)鏡像fsimage之間的操作日志(edits文件)

?

5.4元數(shù)據(jù)手動(dòng)查看

可以通過hdfs的一個(gè)工具來查看edits中的信息

bin/hdfs oev -i edits -o edits.xml

bin/hdfs oiv -i fsimage_0000000000000000087 -p XML -o fsimage.xml

?

5.5元數(shù)據(jù)的checkpoint

每隔一段時(shí)間,會(huì)由secondary namenodenamenode上積累的所有edits和一個(gè)最新的fsimage下載到本地,并加載到內(nèi)存進(jìn)行merge(這個(gè)過程稱為checkpoint

?

6. DATANODE 的工作機(jī)制

6.1DATANODE 工作職責(zé)

1、存儲(chǔ)管理用戶的文件塊數(shù)據(jù)

2、定期向namenode匯報(bào)自身所持有的block信息(通過心跳信息上報(bào))

?

6.2觀察驗(yàn)證DATANODE 功能

上傳一個(gè)文件,觀察文件的block具體的物理存放情況:

在每一臺(tái)datanode機(jī)器上的這個(gè)目錄中能找到文件的切塊:

/home/hadoop/app/hadoop-2.6.5/tmp/dfs/data/current/BP-193442119-192.168.2.120-1432457733977/current/finalized

?

作者:杰瑞教育
出處:http://www.cnblogs.com/jerehedu/?
版權(quán)聲明:本文版權(quán)歸臺(tái)杰瑞教育技有限公司和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
技術(shù)咨詢:

?

總結(jié)

以上是生活随笔為你收集整理的Java+大数据开发——HDFS详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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