Hadoop及Hadoop偽分布式配置(Ubuntu)

Hadoop簡介

Hadoop是分布式系統(tǒng)的基礎(chǔ)架構(gòu)噪舀,它是根據(jù)Google公司發(fā)表的MapReduce和Google文件系統(tǒng)的論文自行實現(xiàn)而成篱瞎。所有的Hadoop模塊都有一個基本假設(shè)命锄,即硬件故障是常見情況,應(yīng)該由框架自動處理。Hadoop實現(xiàn)了名為MapReduce的編程范式:應(yīng)用程序被分割成許多小部分馅扣,而每個部分都能在集群中的任意節(jié)點上運行或重新運行。此外呆抑,Hadoop還提供了分布式文件系統(tǒng)岂嗓,用以存儲所有計算節(jié)點的數(shù)據(jù),這為整個集群帶來了非常高的帶寬鹊碍。MapReduce和分布式文件系統(tǒng)的設(shè)計厌殉,使得整個框架能夠自動處理節(jié)點故障。它使應(yīng)用程序與成千上萬的獨立計算的電腦和PB級的數(shù)據(jù)連接起來侈咕。

主要子項目

  • Hadoop Common:在0.20及以前的版本中公罕,包含HDFSMapReduce和其他項目公共內(nèi)容耀销,從0.21開始HDFS和MapReduce被分離為獨立的子項目楼眷,其余內(nèi)容為Hadoop Common
  • HDFS:Hadoop分布式文件系統(tǒng)(Distributed File System)-HDFS(Hadoop Distributed File System)
  • MapReduce:并行計算框架,0.20前使用org.apache.hadoop.mapred舊接口,0.20版本開始引入org.apache.hadoop.mapreduce的新API

Hadoop的配置分為三種:單機模式罐柳,偽分布式掌腰,分布式。對于個人來說张吉,搭建Hadoop分布式還是需要一點代價的齿梁,至少你需要一個強大的內(nèi)存去供應(yīng)幾臺虛擬機的運行。從學習的層面上考慮肮蛹,玩一玩Hadoop的單機或者偽分布式還是不難的勺择。本文將詳細介紹一下Ubuntu環(huán)境下Hadoop偽分布式的配置。


環(huán)境

  • 64位的Ubuntu操作系統(tǒng)
  • JDK1.8
  • Hadoop-2.7.1

Hadoop的安裝一般是在Linus下完成的伦忠,對于新手來說省核,Ubuntu操作系統(tǒng)是個十分不錯的選擇。它既提供了可視化的界面昆码,又能夠使用Linus的必備神器——終端气忠。無論是使用Linus操作系統(tǒng)還是使用虛擬機中的Ubuntu都無關(guān)緊要。
Hadoop的運行是基于Java環(huán)境的基礎(chǔ)上的未桥,因此少不了JDK的安裝與配置笔刹。目前JDK的版本中兼容性最高的還是JDK1.8,新版本的JDK并不支持Hadoop等一系列產(chǎn)品冬耿。
再者就是Hadoop的版本選擇舌菜。這里有一個大大的坑。如果小伙伴們只想嘗試一下Hadoop這一個應(yīng)用程序亦镶,那對于版本就沒必要太多的要求日月。但是如果想要更多的嘗試,諸如:Hadoop缤骨,HBase爱咬,Hive,ZooKeeper等绊起,那么版本選擇一定要慎之又慎精拟。因為Hadoop的相關(guān)產(chǎn)品之間的版本并不完全相容。如果版本選擇不當虱歪,那么后續(xù)操作中最大的問題就是版本沖突造成的蜂绎。為了兼容后續(xù)安裝的HBase,我這里選擇了兼容性比較高的Hadoop-2.7.1笋鄙。


偽分布式的配置

JAVA環(huán)境的安裝和配置

  1. 首先從Oracle官網(wǎng)下載Linus版本的JDK1.8师枣,如圖1-1
1-1-1

Oracle官網(wǎng)下載似乎需要注冊一個Oracle賬戶,而且加載速度還非常非常慢萧落,這真的很讓人受不了践美。這里提供一個百度網(wǎng)盤下載的地址洗贰,提取碼:zh62。

  1. 轉(zhuǎn)到JDK下載包目錄下陨倡,用tar命令將其解壓到當前目錄下敛滋。

我的JDK包下載在自定義的目錄下:
JDK包下載目錄:~/Downloads/JDK
JDK包將要安裝到目錄:/usr/lib/JDK
如果你沒有設(shè)置過下載目錄,瀏覽器默認下載在~/Downloads下(~表示宿主目錄玫膀,即你的用戶名目錄下)矛缨,使用以下命令將JDK解壓到指定目錄($表示普通管理員權(quán)限,即用戶自己):

$ sudo tar -zxvf ~/Downloads/JDK/jdk-8u221-linus-x64.tar.gz
1-2-1

(備注:代碼部分是在宿主目錄下執(zhí)行的帖旨,而截圖是在hadoop壓縮包所在目錄下執(zhí)行的,注意區(qū)分灵妨。./表示當前目錄下)
將解壓后的JDK包移動到/usr/lib目錄下:

$ sudo mv /usr/lib/jdk-8u221-linus-x64/jdk1.8.0_221 /usr/lib

(備注:如果以上兩部出現(xiàn)問題解阅,也可以使用鼠標手動執(zhí)行)

將轉(zhuǎn)移的名為jdk1.8.0_221的解壓包重命名為JDK

$ sudo mv /usr/lib//jdk1.8.0_221 /usr/lib/JDK
1-2-2

跳轉(zhuǎn)到/usr/lib目錄下就可以發(fā)現(xiàn)重命名的JDK文件夾了,進入該文件夾泌霍,用ls命令可以查看該文件夾的文件货抄,如圖2-2所示。

  1. 配置JDK環(huán)境變量

首先打開用戶配置文件朱转,添加JDK的安裝路徑:

$ gedit ~/.bashrc

向打開的.bashrc配置文件中添加jdk路徑:

export JAVA_HOME=/usr/lib/JDK
export JRE_HOME=/usr/lib/JDK/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

(備注:JAVA_HOME和JRE_HOME是你自己的JDK安裝目錄蟹地,也就是剛剛移動到/usr/lib目錄下的那個解壓包目錄

1-3-1

保存之后關(guān)閉.bashrc配置文件,使用source使配置文件重新加載:

$ source ~/.bashrc

然后小伙伴們就可以嘗試輸入java -version來測試一下JDK是否配置完畢了

$ java -version
1-3-2

當看到以上界面時藤为,說明你的JDK已經(jīng)配置完成了(這里會輸出JDK的版本信息怪与,還是建議小伙伴們使用JDK1.8)。


SSH環(huán)境的安裝和配置

集群缅疟、單節(jié)點模式都需要SSH登陸(類似于遠程登陸分别,你可以登陸某臺Linus主機),Ubuntu默認已經(jīng)安裝了SSH client存淫,此外還需要安裝SSH server耘斩。可以使用apt-get的方式進行安裝:

$ sudo apt-get install openssh-server

安裝完成后桅咆,使用以下命令登陸本機:

$ ssh localhost

首次登陸時需要輸入密碼的括授,如圖2-0-1所示。

2-0-1

按照上方提示岩饼,輸入自己的用戶登錄密碼就可以了(也就是開機密碼)荚虚。當看到以下界面表明已經(jīng)成功登陸本機了:

2-0-2

你以為這樣就完了嗎?其實沒有忌愚。此時是登錄成功了曲管,但是每次登陸都需要輸入密碼,不煩嗎硕糊?如果你覺得不煩院水,那么當我沒說腊徙。因為剛開始我也是這么認為的。結(jié)果啟動Hadoop的時候檬某,我就后悔了撬腾。如果此時沒有設(shè)置免密碼登陸,那么在啟動Hadoop時恢恼,每啟動一個節(jié)點就需要輸入一次密碼民傻。大約每次啟動Hadoop都需要輸入三次密碼,這確實很不方便俺“摺漓踢!我后來也是花了很大的功夫才解決這個問題。如果你這都忍受漏隐,那我也就無言以對了喧半。你可以直接配置Hadoop了。但是還是建議大家在此配置免密碼登陸青责⊥荩可以使用以下命令設(shè)置:

$ cd ~/.ssh/                             # 若沒有該目錄,請先執(zhí)行一次ssh localhost
$ ssh-keygen -t rsa                      # 提示按回車就可以
$ cat ./id_rsa.pub >> ./authorized_keys  # 加入授權(quán)
2-0-3
2-0-4

此時就方便多了脖隶。然后我們又可以繼續(xù)往下走了扁耐。


偽分布式模式的配置

  1. Hadoop官網(wǎng)下載Hadoop壓縮包。
3-1-1

這里再強調(diào)一遍:因為Hadoop與其他產(chǎn)品产阱,如HBase等婉称,存在版本兼容性問題(只玩Hadoop的自行略過),因此Hadoop版本選擇一定要慎重心墅。這里我選擇了Hadoop-2.7.1酿矢,與HBase-2.0.6是兼容的,親測有效怎燥。
(備注:高版本的Hadoop與HBase(我曾以Hadoop-2.8.3+與HBase-2.0.6搭配測試過)會出現(xiàn)問題瘫筐,比如在開啟HBase之后,HMaster會莫名其妙的掛掉铐姚,又或者stop-hbase.sh命令無法關(guān)閉HRegionServer等策肝。)

3-1-1

下面的步驟就與安裝JDK時差不多了。

  1. 轉(zhuǎn)到Hadoop下載包目錄下隐绵,用tar命令將其解壓到當前目錄下之众。

我的Hadoop包下載在自定義的目錄下:
Hadoop包下載目錄:~/Downloads/Hadoop
Hadoop包將要安裝到目錄:/usr/local/Hadoop
使用以下命令將Hadoop下載包解壓到指定目錄

$ sudo tar -zxvf ~/Downloads/Hadoop/hadoop-2.7.1.tar.gz -C /usr/local

(此步驟支持手動)

3-2-1

/usr/local目錄下的hadoop-2.7.1重命名為Hadoop,使用命令如下:

$ sudo mv /usr/local/hadoop-2.7.1 /usr/local/Hadoop

然后就可以轉(zhuǎn)到/usr/local目錄下查看Hadoop文件夾了:

3-2-2

這個時候在/usr/local/Hadoop/bin目錄下依许,我們就可以使用hadoop version命令查看Hadoop是否安裝成功了棺禾。但是為了方便使用,我們還是要配置環(huán)境變量峭跳,這樣直接在宿主目錄下就可以使用相關(guān)命令膘婶。
為了避免在后續(xù)操作中因為對文件的權(quán)限問題而導致部分命令無法正確執(zhí)行缺前,在此處我們用chmod命令賦予用戶對文件的權(quán)限:

$ sudo chmod -R a+w /usr/local/Hadoop
  1. 配置Hadoop的環(huán)境變量

與配置JDK環(huán)境變量相似,我們首先打開用戶配置文件.bashrc文件:

$ gedit ~/.bashrc

向打開的.bashrc配置文件中添加Hadoop解壓包的安裝路徑:

export HADOOP_HOME=/usr/local/Hadoop
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
3-3-1

然后重新加載配置文件:

$ source ~/.bashrc

這時候如果不出意外的話悬襟,我們在宿主目錄下輸入hadoop version是可以查看到版本信息的:

$ hadoop version
3-3-2

當看到以上界面時衅码,表明Hadoop安裝成功了。但不要高興的太早脊岳,我們還沒有開始配置偽分布式逝段。下面開始配置偽分布式。

  1. 配置Hadoop偽分布式

Hadoop偽分布式的搭建需要修改兩份配置文件:core-site.xmlhdfs-site.xml割捅。

  • 修改core-site.xml

core-site.xml目錄:/usr/local/Hadoop/etc/hadoop/core-site.xml
仍然使用gedit方式打開該文件:

$ sudo gedit /usr/local/Hadoop/etc/hadoop/core-site.xml

你會發(fā)現(xiàn)該文件除了注釋內(nèi)容之外奶躯,只有兩行內(nèi)容:

<configuration>
</configuration>
3-4-1

我們需要將其修改為:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
     <value>file:/usr/local/Hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
3-4-2

上面的文本中<value>file:/usr/local/Hadoop/tmp</value>是我的Hadoop的安裝目錄,此處需要自己修改一下棺牧。

  • 修改hdfs-site.xml

hdfs-site.xml目錄:/usr/local/Hadoop/etc/hadoop/hdfs-site.xml
修改方法與前者相同巫糙,使用gedit打開該文件:

$ sudo gedit /usr/local/Hadoop/etc/hadoop/hdfs-site.xml

文件的初始內(nèi)容也只有以下兩行:

<configuration>
</configuration>
3-4-3

我們需要將其修改為:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>    <value>file:/usr/local/Hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
<value>file:/usr/local/Hadoop/tmp/dfs/data</value>
    </property>
</configuration>
3-4-4

與上面相同,注意修改兩處<value>file:/usr/local/Hadoop/tmp/dfs/data</value>路徑部分颊乘。
至此,Hadoop偽分布式的配置就完成了醉锄。下面開始測試一下你的Hadoop搭建成功了沒有乏悄?

  1. 初始化Hadoop,并開啟Hadoop

配置完成后恳不,我們對Hadoop進行初始化檩小,在/usr/local/Hadoop目錄下,執(zhí)行以下命令(已經(jīng)配置了環(huán)境變量的烟勋,可以直接在宿主目錄下進行):

./bin/hdfs namenode -format
3-5-1

這一步可能需要等一小會兒规求,當看見以下字樣,說明初始化成功:

3-5-2

進行到這里卵惦,基本上就沒有什么大問題了阻肿。我們可以試著啟動Hadoop了,使用start-dfs.sh來啟動Hadoop:

$ start-dfs.sh

第一次啟動Hadoop的時候沮尿,會出現(xiàn)SSH登陸提示丛塌,輸入yes/Y即可(具體看提示)⌒蠹玻可以使用jps命令查看已運行的活動及其所占用的端口赴邻,如圖3-5-3所示:

3-5-3

我們可以使用stop-dfs.sh命令關(guān)閉已經(jīng)啟動的Hadoop:

$ stop-dfs.sh
3-5-4

OK!到此為止啡捶,恭喜你的Hadoop偽分布式搭建成功姥敛!小伙伴們可以使用Hadoop運行一些簡單的實例团赁,過過癮变抽。

本文的主題內(nèi)容到此就結(jié)束了曙求。希望我的博客能對你有一些幫助趣些。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市臊泌,隨后出現(xiàn)的幾起案子鲤桥,更是在濱河造成了極大的恐慌,老刑警劉巖渠概,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茶凳,死亡現(xiàn)場離奇詭異,居然都是意外死亡播揪,警方通過查閱死者的電腦和手機贮喧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猪狈,“玉大人箱沦,你說我怎么就攤上這事」兔恚” “怎么了谓形?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疆前。 經(jīng)常有香客問我寒跳,道長,這世上最難降的妖魔是什么竹椒? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任童太,我火速辦了婚禮,結(jié)果婚禮上胸完,老公的妹妹穿的比我還像新娘书释。我一直安慰自己,他們只是感情好赊窥,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布爆惧。 她就那樣靜靜地躺著,像睡著了一般誓琼。 火紅的嫁衣襯著肌膚如雪检激。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天腹侣,我揣著相機與錄音叔收,去河邊找鬼。 笑死傲隶,一個胖子當著我的面吹牛饺律,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跺株,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼复濒,長吁一口氣:“原來是場噩夢啊……” “哼脖卖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巧颈,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤畦木,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后砸泛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體十籍,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年唇礁,在試婚紗的時候發(fā)現(xiàn)自己被綠了勾栗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡盏筐,死狀恐怖围俘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情琢融,我是刑警寧澤界牡,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站漾抬,受9級特大地震影響欢揖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奋蔚,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烈钞。 院中可真熱鬧泊碑,春花似錦、人聲如沸毯欣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酗钞。三九已至腹忽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砚作,已是汗流浹背窘奏。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留葫录,地道東北人着裹。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像米同,于是被迫代替她去往敵國和親骇扇。 傳聞我的和親對象是個殘疾皇子摔竿,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361