大數(shù)據(jù)入門(三) - HDFS 偽分布式環(huán)境搭建

1 HDFS概述及設(shè)計(jì)目標(biāo)

1.1 什么是HDFS:

  • Hadoop實(shí)現(xiàn)的一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System)缺脉,簡稱HDFS
  • 源自于Google的GFS論文
  • 論文發(fā)表于2003年幅聘,HDFS是GFS的克隆版

1.2 HDFS的設(shè)計(jì)目標(biāo):

  • 非常巨大的分布式文件系統(tǒng)
  • 運(yùn)行在普通廉價(jià)的硬件上
  • 易擴(kuò)展担租、為用戶提供性能不錯(cuò)的文件存儲(chǔ)服務(wù)

HDFS官方文檔地址

2 HDFS架構(gòu)

HDFS是主/從式的架構(gòu)。一個(gè)HDFS集群會(huì)有一個(gè)NameNode(簡稱NN)秦陋,也就是命名節(jié)點(diǎn)桥胞,該節(jié)點(diǎn)作為主服務(wù)器存在(master server).

  • NameNode用于管理文件系統(tǒng)的命名空間以及調(diào)節(jié)客戶訪問文件
  • 此外,還會(huì)有多個(gè)DataNode(簡稱DN)榄审,也就是數(shù)據(jù)節(jié)點(diǎn)砌们,數(shù)據(jù)節(jié)點(diǎn)作為從節(jié)點(diǎn)存在(slave server)
  • 通常每一個(gè)集群中的DataNode,都會(huì)被NameNode所管理搁进,DataNode用于存儲(chǔ)數(shù)據(jù)浪感。

HDFS公開了文件系統(tǒng)名稱空間眯漩,允許用戶將數(shù)據(jù)存儲(chǔ)在文件中擎值,就好比我們平時(shí)使用操作系統(tǒng)中的文件系統(tǒng)一樣,用戶無需關(guān)心底層是如何存儲(chǔ)數(shù)據(jù)的
而在底層在岂,一個(gè)文件會(huì)被分成一個(gè)或多個(gè)數(shù)據(jù)塊赢笨,這些數(shù)據(jù)庫塊會(huì)被存儲(chǔ)在一組數(shù)據(jù)節(jié)點(diǎn)中驮吱。在CDH中數(shù)據(jù)塊的默認(rèn)大小是128M,這個(gè)大小我們可以通過配置文件進(jìn)行調(diào)節(jié)
在NameNode上我們可以執(zhí)行文件系統(tǒng)的命名空間操作桐筏,如打開梅忌,關(guān)閉狰腌,重命名文件等。這也決定了數(shù)據(jù)塊到數(shù)據(jù)節(jié)點(diǎn)的映射牧氮。

我們可以來看看HDFS的架構(gòu)圖


HDFS被設(shè)計(jì)為可以運(yùn)行在普通的廉價(jià)機(jī)器上琼腔,而這些機(jī)器通常運(yùn)行著一個(gè)Linux操作系統(tǒng)。HDFS是使用Java語言編寫的踱葛,任何支持Java的機(jī)器都可以運(yùn)行HDFS
使用高度可移植的Java語言編寫的HDFS丹莲,意味著可以部署在廣泛的機(jī)器上
一個(gè)典型的HDFS集群部署會(huì)有一個(gè)專門的機(jī)器只能運(yùn)行NameNode,而其他集群中的機(jī)器各自運(yùn)行一個(gè)DataNode實(shí)例尸诽。雖然一臺(tái)機(jī)器上也可以運(yùn)行多個(gè)節(jié)點(diǎn)甥材,但是并不建議這么做,除非是學(xué)習(xí)環(huán)境性含。

總結(jié)

  • HDFS是主/從式的架構(gòu)洲赵,一個(gè)HDFS集群會(huì)有一個(gè)NameNode以及多個(gè)DataNode
  • 一個(gè)文件會(huì)被拆分為多個(gè)數(shù)據(jù)塊進(jìn)行存儲(chǔ),默認(rèn)數(shù)據(jù)塊大小是128M
  • 即便一個(gè)數(shù)據(jù)塊大小為130M商蕴,也會(huì)被拆分為2個(gè)Block板鬓,一個(gè)大小為128M,一個(gè)大小為2M
  • HDFS是使用Java編寫的究恤,使得其可以運(yùn)行在安裝了JDK的操作系統(tǒng)之上

NN

  • 負(fù)責(zé)客戶端請求的響應(yīng)
  • 負(fù)責(zé)元數(shù)據(jù)(文件的名稱俭令、副本系數(shù)抄腔、Block存放的DN)的管理

DN

  • 存儲(chǔ)用戶的文件對(duì)應(yīng)的數(shù)據(jù)塊(Block)
  • 會(huì)定期向NN發(fā)送心跳信息,匯報(bào)本身及其所有的block信息和健康狀況

3 HDFS副本機(jī)制

在HDFS中悟耘,一個(gè)文件會(huì)被拆分為一個(gè)或多個(gè)數(shù)據(jù)塊
默認(rèn)情況下,每個(gè)數(shù)據(jù)塊都會(huì)有三個(gè)副本
每個(gè)副本都會(huì)被存放在不同的機(jī)器上旺嬉,而且每一個(gè)副本都有自己唯一的編號(hào)

  • 如下圖


4 HDFS 副本存放策略

NameNode節(jié)點(diǎn)選擇一個(gè)DataNode節(jié)點(diǎn)去存儲(chǔ)block副本得過程就叫做副本存放,這個(gè)過程的策略其實(shí)就是在可靠性和讀寫帶寬間得權(quán)衡迅涮。

《Hadoop權(quán)威指南》中的默認(rèn)方式:

  • 第一個(gè)副本會(huì)隨機(jī)選擇叮姑,但是不會(huì)選擇存儲(chǔ)過滿的節(jié)點(diǎn)渣蜗。
  • 第二個(gè)副本放在和第一個(gè)副本不同且隨機(jī)選擇的機(jī)架上讼昆。
  • 第三個(gè)和第二個(gè)放在同一個(gè)機(jī)架上的不同節(jié)點(diǎn)上。
  • 剩余的副本就完全隨機(jī)節(jié)點(diǎn)了


可以看出這個(gè)方案比較合理

  • 可靠性:block存儲(chǔ)在兩個(gè)機(jī)架上
  • 寫帶寬:寫操作僅僅穿過一個(gè)網(wǎng)絡(luò)交換機(jī)
  • 讀操作:選擇其中得一個(gè)機(jī)架去讀
  • block分布在整個(gè)集群上

5 HDFS偽分布式環(huán)境搭建

5.1 官方安裝文檔地址

5.2 環(huán)境參數(shù)

  • Mac OS 10.14.4
  • JDK1.8
  • Hadoop 2.6.0-cdh5.7.0
  • ssh
  • rsync

5.3 安裝配置

下載Hadoop 2.6.0-cdh5.7.0的tar.gz包并解壓:

CentOS 環(huán)境安裝步驟

MacOS安裝環(huán)境
安裝jdk

jdk安裝路徑

/usr/libexec/java_home -V:列出所有版本的JAVA_HOME

設(shè)置 JAVA_HOME

  • 添加java_home到.bash_profile文件中
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib 
Mac OS X ssh設(shè)置
  • 輸入命令ssh localhost运敢,可能遇到如下問題


  • 原因是沒打開遠(yuǎn)程登錄,進(jìn)入系統(tǒng)設(shè)置->共享->遠(yuǎn)程登錄打開就好


這時(shí)你再ssh localhost一下


5.3 下載 Hadoop

下載

tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz
  • 解壓到doc目錄,解壓完后,進(jìn)入到解壓后的目錄下盼砍,可以看到hadoop的目錄結(jié)構(gòu)如下
    image
  • bin目錄存放可執(zhí)行文件
  • etc目錄存放配置文件
  • sbin目錄下存放服務(wù)的啟動(dòng)命令
  • share目錄下存放jar包與文檔

以上就算是把hadoop給安裝好了,接下來就是編輯配置文件,把JAVA_HOME配置一下

cd etc/
cd hadoop
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8/  # 根據(jù)你的環(huán)境變量進(jìn)行修改
image
官方指南
  • 編輯 hadoop-env.sh 文件
export JAVA_HOME=${/usr/libexec/java_home}
image

image

由于我們要進(jìn)行的是單節(jié)點(diǎn)偽分布式環(huán)境的搭建,所以還需要配置兩個(gè)配置文件蜕猫,分別是core-site.xml以及hdfs-site.xml

Hadoop也可以在偽分布模式下的單節(jié)點(diǎn)上運(yùn)行,其中每個(gè)Hadoop守護(hù)進(jìn)程都在單獨(dú)的Java進(jìn)程中運(yùn)行

  • 配置

  • 路徑


  • 具體配置



  • 配置 datanode 節(jié)點(diǎn)數(shù)


5.4 啟動(dòng) HDFS

5.4.1 在啟動(dòng)之前需要先格式化文件系統(tǒng)

$ bin/hdfs namenode -format

只有第一次啟動(dòng)才需要格式化

5.4.2 使用服務(wù)啟動(dòng)腳本啟動(dòng)服務(wù)

$ sbin/start-dfs.sh
  • 檢查是否有以下幾個(gè)進(jìn)程蹬屹,如果少了一個(gè)都是不成功的


5.4.3 訪問http://localhost:50070/

表示HDFS已經(jīng)安裝成功



  • 然后將Hadoop的安裝目錄配置到環(huán)境變量中弧腥,方便之后使用它的命令



  • 關(guān)閉


如上虾攻,可以看到節(jié)點(diǎn)的信息。到此朋沮,我們偽分布式的hadoop集群就搭建完成了.

6 HDFS Shell

以上已經(jīng)介紹了如何搭建偽分布式的Hadoop樊拓,既然環(huán)境已經(jīng)搭建起來了,那要怎么去操作呢条篷?這就是本節(jié)將要介紹的內(nèi)容:

HDFS自帶有一些shell命令鸿染,通過這些命令我們可以去操作HDFS文件系統(tǒng)涨椒,這些命令與Linux的命令挺相似的,如果熟悉Linux的命令很容易就可以上手HDFS的命令



官網(wǎng)指南



先啟動(dòng) HDFS
配置 hadoop 環(huán)境變量

成功

指令集

dfs fs 無差異

上傳一個(gè) txt 文件

創(chuàng)建文件夾



多層次文件夾



遍歷所有文件夾




刪除文件/文件夾




所上傳的文件

Java 操作 HDFS 開發(fā)環(huán)境搭建






pom 文件

JavaAPI 操作 HDFS文件系統(tǒng)


測試通過

  • 測試創(chuàng)建文件方法



  • 查看 HDFS 文件的內(nèi)容



  • 上傳文件到 HDFS


  • 上傳文件到 HDFS(帶進(jìn)度條)



    測試通過

  • 下載文件到本地



    測試通過

  • 查看某個(gè)目錄下的所有文件



    測試通過

  • 刪除文件/文件夾




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市主之,隨后出現(xiàn)的幾起案子槽奕,更是在濱河造成了極大的恐慌粤攒,老刑警劉巖夯接,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吼蚁,死亡現(xiàn)場離奇詭異,居然都是意外死亡旗国,警方通過查閱死者的電腦和手機(jī)能曾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驼唱,“玉大人玫恳,你說我怎么就攤上這事京办〔研觯” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵佑力,是天一觀的道長打颤。 經(jīng)常有香客問我编饺,道長透且,這世上最難降的妖魔是什么鲸沮? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任讼溺,我火速辦了婚禮怒坯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘束析。我一直安慰自己员寇,他們只是感情好蝶锋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躯舔,像睡著了一般粥庄。 火紅的嫁衣襯著肌膚如雪惜互。 梳的紋絲不亂的頭發(fā)上训堆,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天坑鱼,我揣著相機(jī)與錄音睡扬,去河邊找鬼黍析。 笑死马靠,一個(gè)胖子當(dāng)著我的面吹牛甩鳄,可吹牛的內(nèi)容都是我干的妙啃。 我是一名探鬼主播揖赴,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼燥滑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搀菩?” 一聲冷哼從身側(cè)響起肪跋,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤澎嚣,失蹤者是張志新(化名)和其女友劉穎易桃,沒想到半個(gè)月后晤郑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磕洪,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡析显,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歹嘹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尺上。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怎抛,死狀恐怖抽诉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情己单,我是刑警寧澤纹笼,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布蔓涧,位于F島的核電站元暴,受9級(jí)特大地震影響茉盏,放射性物質(zhì)發(fā)生泄漏鸠姨。R本人自食惡果不足惜讶迁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳞贷。 院中可真熱鬧,春花似錦咱筛、人聲如沸迅箩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽龄砰。三九已至换棚,卻和暖如春娘汞,著一層夾襖步出監(jiān)牢的瞬間价说,已是汗流浹背鳖目。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工缤弦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留领迈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓碍沐,卻偏偏與公主長得像狸捅,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子累提,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容