Hadoop學習(一)入門與集群搭建

一浪箭、Hadoop是什么芬位?

從狹義來說嘀韧,Hadoop指的是Apache下的一款開源框架,目前常用的是Hadoop2版本遣总。

Hadoop2主要包含以下3個組件:
與Hadoop1區(qū)別在于1版本把資源管理和海量數(shù)據(jù)計算的任務都丟給MapReduce睬罗,即Hadoop1只有一個HDFS和MapReduce組成。

  • HDFS:一個Hadoop的分布式文件系統(tǒng)旭斥,支持NameNode橫向擴展容达,解決海量數(shù)據(jù)的存儲。
  • YARN:一個負責作業(yè)調(diào)度和集群資源管理的框架垂券,解決資源任務調(diào)度董饰。
  • MapReduce:一個分布式運算編程框架,運行在YARN上圆米,用來解決海量數(shù)據(jù)的計算卒暂。

從廣義來說,Hadoop類似于Spring娄帖,已經(jīng)形成了一個Hadoop生態(tài)圈也祠,許多技術(shù)都和Hadoop進行集成使用起來。
總結(jié):Hadoop的應用場景并不會跟某些行業(yè)或某些業(yè)務掛鉤在一起近速,它只是一款海量數(shù)據(jù)分析處理的軟件平臺诈嘿,提供HDFS、MapReduce削葱、YARN這些模塊來對外提供幫助奖亚。

二、Hadoop2集群理論

搭建我使用的版本是:Hadoop2.6.4

Hadoop集群一般指的是HDFS集群和YARN集群析砸,兩者在邏輯上分離昔字,物理上在一起,如下圖:

圖片.png
Hadoop部署主要有3種模式:前兩種主要用于調(diào)試首繁,屬于單機部署作郭,后面一種才是生產(chǎn)環(huán)境部署。

  • Standalone mode(獨立模式):僅在一個機器運行一個java進程弦疮。
  • Pseudo-Distributed(偽分布式模式):僅在一個機器上HDFS的NameNode和DataNode夹攒、YARN的ResourceManager和NodeManager,但分別啟動單獨的java進程胁塞。
  • Cluster mode(群集模式):會使用N臺主機組成一個Hadoop集群咏尝,這種部署方式下,主節(jié)點和從節(jié)點會公開部署在不同的機器上啸罢。

三编检、實際操作搭建hadoop集群

  • 1、在VMware14虛擬機中安裝centos7操作系統(tǒng)伺糠,并命名為master蒙谓,我全程按這個教程裝的,很詳細训桶。
    附帶安裝教程:https://blog.csdn.net/babyxue/article/details/80970526累驮。
  • 2酣倾、安裝好虛擬機系統(tǒng)之后,通過xshell這個軟件來在windows系統(tǒng)上遠程連接到虛擬機的linux系統(tǒng)進行操作更加方便谤专,并且通過xftp這個軟件來把jdk和hadoop上傳到linux系統(tǒng)中躁锡,很實用這2款軟件,服務器必備利器置侍,學生可以通過郵箱注冊進行免費下載映之。怎么上傳jdk和hadoop到服務器上去我就不講述了,自行百度蜡坊,上傳之后就是在服務器安裝jdk和hadoop杠输,這個也自行百度,網(wǎng)上一大把秕衙。
  • 3蠢甲、注意:以下操作都是基于root用戶來進行的,否則你可能會因為權(quán)限不夠而無法修改配置文件据忘。
    配置ip地址鹦牛,敲命令vi /etc/sysconfig/network-scripts/ifcfg-ens33修改指定文件配置,復制下面的內(nèi)容進去替換掉原來的內(nèi)容勇吊,#后面是注釋可以刪掉
TYPE="Ethernet"   # 網(wǎng)絡類型為以太網(wǎng)
BOOTPROTO="static"  # 手動分配ip
NAME="ens33"  # 網(wǎng)卡設備名曼追,設備名一定要跟文件名一致
DEVICE="ens33"  # 網(wǎng)卡設備名,設備名一定要跟文件名一致
ONBOOT="yes"  # 該網(wǎng)卡是否隨網(wǎng)絡服務啟動
IPADDR="10.14.28.100" # 該網(wǎng)卡ip地址就是你要配置的固定IP汉规,如果你要用xshell等工具連接礼殊,220這個網(wǎng)段最好和你自己的電腦網(wǎng)段一致,否則有可能用xshell連接失敗
GATEWAY="10.14.28.2"  # 網(wǎng)關(guān)
NETMASK="255.255.255.0"   # 子網(wǎng)掩碼
DNS1="8.8.8.8"    # DNS鲫忍,8.8.8.8為Google提供的免費DNS服務器的IP地址

接著配置網(wǎng)絡工作膏燕,敲命令vi /etc/sysconfig/network進行配置

NETWORKING=yes # 網(wǎng)絡是否工作,此處一定不能為no

配置公共DNS服務(可選)悟民,在/etc/resolv.conf文件里增加如下配置

nameserver 8.8.8.8

最后關(guān)閉防火墻和重啟網(wǎng)絡服務

systemctl stop firewalld         # 臨時關(guān)閉防火墻
systemctl disable firewalld      # 禁止開機啟動

service network restart      #重啟網(wǎng)絡服務

克隆步驟1新建的虛擬機master,以此克隆出3個新的虛擬機篷就,并分別命名為slave1射亏、slave2、slave3竭业,克隆操作:在VMware中智润,把當前新建好的虛擬機關(guān)閉掉,因為在開啟狀態(tài)是不能克隆的未辆,然后右鍵虛擬機-->選擇管理-->克隆-->完成克隆副本-->選擇保存的位置窟绷。
我們要完成的集群是這樣的架構(gòu)。

圖片.png
不過注意:克隆master的話咐柜,這個克隆出來的虛擬機和原虛擬機各個配置都是一樣的兼蜈,我們接下來要對網(wǎng)絡攘残、主機名等進行配置。
和上面一樣的配置为狸,只是修改了主機ip而已歼郭,不固定,在同一個網(wǎng)段就好(即網(wǎng)絡號相同)辐棒,然后重啟網(wǎng)絡服務病曾,命令和上面一樣就省略掉了。
然后漾根,修改主機名泰涂,敲命令hostnamectl set-hostname slave1(你要的主機名字)
之后敲命令vi /etc/hosts修改hosts文件辐怕,將名字和IP建立聯(lián)系负敏,然后重啟reboot命令。
最后這是關(guān)鍵秘蛇,4臺虛擬機都同樣的操作都修改好后其做,互相ping一下看看通不通,比如在windows使用cmd命令行ping4臺虛擬機試試赁还,4臺虛擬機互相ping下或者ping下windows妖泄。最后4臺虛擬機就如下圖配置好了。
最后集群機子圖片.png
互相ping通.png

  • 4艘策、之后使用xshell這個軟件遠程連接4臺虛擬機蹈胡,步驟如下:
    圖片.png

    最后模式如下圖:
    圖片.png
  • 5、上圖的master相當于namenode朋蔫,存儲著文件名罚渐,記錄文件存放的位置,其他3臺slave相當于datanode驯妄,存儲著真實的數(shù)據(jù)荷并。外部訪問都是通過namenode來間接訪問datanode,namenode相當于管理者青扔,datanode相當于數(shù)據(jù)提供者源织。
  • 6、cd進入到/usr/local/hadoop/etc/hadoop目錄下微猖,顯示所有文件會看到有個core-site.xml文件谈息,這個文件是告訴master在哪里,slave被誰管理凛剥。修改此文件侠仇,在里面的configuration標簽里寫下述內(nèi)容,4臺虛擬機都要寫:
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
</property>
  • 7、經(jīng)過上面的文件配置犁珠,就可以啟動hadoop了逻炊,namenode與datanode默認是裝在一起的互亮,所以得分開輸入命令分別啟動。
    先格式化下namenode嗅骄,敲命令hdfs namenode -format胳挎,然后4臺虛擬機都配置下主機名與主機ip的關(guān)聯(lián),敲命令vi /etc/hosts編輯一個文件來配置主機溺森。輸入以下內(nèi)容
10.14.28.100 master
10.14.28.101 slave1
10.14.28.102 slave2
10.14.28.103 slave3

然后就可以敲命令hadoop-daemon.sh start namenode單獨啟動namenode慕爬,再輸入jps命令查看java進程,可看看namenode和datanode進程是否啟動屏积。和敲命令hadoop-daemon.sh start datanode單獨啟動datanode医窿。如下圖:(PS:如果想要啟動所有節(jié)點的話,就可以cd /usr/local/hadoop/sbin目錄下炊林,使用start-all.sh命令啟動全部姥卢,相反關(guān)閉全部的話就是stop-all.sh命令。)

圖片.png
最后這樣就完成了基本的hadoop環(huán)境搭建了渣聚,此時通過hdfs協(xié)議進行關(guān)聯(lián)独榴,namenode是管理著其余的3個datanode的。
圖片.png

上圖解釋:hadoop在接受一個文件的時候奕枝,當文件超過128M的時候棺榔,會自動進行分塊,正如上面的b1隘道、b2這種症歇,然后還會對文件進行備份處理,默認分成3份谭梗,正如上面的slave1忘晤、slave2、slave3機器都存放在b1這樣的數(shù)據(jù)激捏。上面的圖其實畫得不標準设塔,應該是有master機器啟動這namenode進程,還有slave1缩幸、slave2壹置、slave3三臺機器各啟動這datanode進程,master機器管理著3臺slave機器表谊。體現(xiàn)出了hadoop是可以橫向水平擴展的(比如不斷得增加datanode存儲數(shù)據(jù)),還有安全穩(wěn)定性盖喷,這依靠著冗余存儲爆办,某臺機器宕機了不影響對外提供服務(比如slave1宕機了,數(shù)據(jù)在slave2照樣可以找到课梳,另外namenode宕機了還有the second namenode這個節(jié)點來替代namenode)

四距辆、在集群實現(xiàn)ssh免密登錄

背景:完成了上述的集群搭建余佃,想要在master機器上想遠程登錄到slave1機器上,則輸入命令ssh slave1跨算,之后就需要輸入密碼爆土,如下圖。但這比較繁瑣诸蚕,所以我們可以配置下完成集群機器間的免密登錄步势。

圖片.png
關(guān)于免密登錄的原理:就是生成私鑰和公鑰,這2個是成對存在的背犯,當我們把登錄的信息用私鑰加密坏瘩,然后把公鑰傳遞給其他機器,這樣遠程登錄到其他機器時會對登錄信息用公鑰進行解密漠魏,只有對應的公鑰和私鑰才能完成加解密倔矾,所以這樣就不需要每次都密碼驗證了。

步驟:輸入命令ls -la可查看當前目錄下的所有文件和文件夾柱锹,包括隱藏文件夾哪自,于是我發(fā)現(xiàn)我master機器上沒有.ssh文件夾,而slave1禁熏、slave2壤巷、slave3機器上都有.ssh文件夾,所以我懷疑我的master是沒有通過RSA加密算生成了密鑰匹层,包括私鑰和公鑰隙笆。
輸入ssh-keygen -t rsa這條命令后,連續(xù)按3次回車即可通過RSA加密算生成了密鑰升筏,包括私鑰和公鑰撑柔。接著輸入ssh-copy-id slave1命令然后根據(jù)提示輸入密碼后就把公鑰傳給了slave1機器。對應還有輸入ssh-copy-id slave2您访、ssh-copy-id slave3命令铅忿。如下圖結(jié)果:

圖片.png
退出遠程登錄的命令是exit

背景:一個個地登錄比較麻煩灵汪,我們可不可以直接在master機器上對集群的所有datanode節(jié)點進行統(tǒng)一的啟動關(guān)閉管理檀训?于是就有了下面的操作。配置統(tǒng)一集群節(jié)點管理

圖片.png
這里的slave文件存儲著namenode管理著多少臺datanode享言,每臺datanode位于哪臺機器上峻凫。可以進行修改進行統(tǒng)一集群節(jié)點管理览露,這樣就可以只在master機器上去啟動所有節(jié)點荧琼。輸入vi slave命令修改文件,管理著多少臺slave機器就輸入多少臺

slave1
slave2
slave3
......

之后輸入start-dfs.sh命令即可啟動namenode和datanode節(jié)點。如下操作:

圖片.png

五命锄、期間排錯

  • 1堰乔、輸入命令hdfs dfsadmin -report | more來報告下集群機器的情況,如果出現(xiàn)下圖錯誤1脐恩,則要檢查下fs.default.name是否配置了镐侯。具體操作是先cd /usr/local/hadoop/etc/hadoop目錄下,再vi core-site.xml修改配置驶冒,加上上面的第6點苟翻,之后:wq保存退出即可。
    錯誤1
  • 2只怎、再次輸入命令hdfs dfsadmin -report | more報告下袜瞬,出現(xiàn)下圖錯誤2,則要第一時間反應過來是不是服務器主機名沒有和ip地址映射上身堡,于是輸入命令vi /etc/hosts修改配置邓尤,加上上面的第7點,之后:wq保存退出即可贴谎。
    錯誤2.png
  • 3汞扎、再次輸入命令hdfs dfsadmin -report | more報告下,出現(xiàn)下圖錯誤3擅这,這個問題我找了好久澈魄,最后在一篇博客中發(fā)現(xiàn)有大神評論說是本地用戶administrator(本機windows用戶)沒有權(quán)限引起去遠程操作hadoop系統(tǒng),所以得在hadoop的hdfs-site.xml配置文件配置取消hadoop hdfs用戶權(quán)限檢查仲翎。先cd /usr/local/hadoop/etc/hadoop目錄下痹扇,再vi hdfs-site.xml修改配置文件,在<configuration>標簽組內(nèi)加入下面代碼
<property>
        <name>dfs.permissions</name>
        <value>false</value>
</property>
錯誤3.png
  • 4溯香、再次輸入命令hdfs dfsadmin -report | more報告下鲫构,這次成功了,但是namenode沒有管理到datanode節(jié)點玫坛,如下圖:
    圖片.png
    此時我們可以在網(wǎng)頁端查看hadoop集群的情況结笨,具體操作是輸入netstat -ntlp命令,查看hadoop集群對外提供的端口號湿镀。一般是50070炕吸,之后就可以在瀏覽器地址欄中輸入集群主機名+端口號進行訪問了。比如http://10.14.28.100:50070勉痴,之后web界面是這樣的赫模。
    圖片.png
    ,不過在web界面我才清楚地發(fā)覺蒸矛,好像我還遇到另外一個錯誤嘴瓤,就是我的namenode沒有管理到datanode吧ㄍ狻@蚋啤@唷!在Overview菜單項中顯示Live Nodes存活節(jié)點數(shù)為0磁玉。于是我很納悶停忿,我的namenode和datanode各自都啟動成功了,namenode機器和datanode機器對應也都能ping通蚊伞,最后百度發(fā)現(xiàn)一篇跟我遭遇情況一模一樣的文章提到了解決方案(先cd /usr/local/hadoop/etc/hadoop目錄下席赂,再vi hdfs-site.xml修改配置文件,在<configuration>標簽組內(nèi)加入以下代碼即可时迫。不過切記颅停,修改完配置文件,要關(guān)閉namenode和datanode節(jié)點服務掠拳,再重新開啟才可以生效癞揉,我修改完沒重啟在這里栽了跟頭還好所耗時間不長就被我意識到了),感謝~
<property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
</property>
圖片.png
  • 5溺欧、同一集群節(jié)點管理遇錯喊熟,拒絕連接,解決方案下面這篇文章可能有效姐刁。
    https://www.imooc.com/article/12083
  • 6芥牌、遇到下圖錯誤4,就首先考慮下Namenode和Datanode的clusterID相同聂使,這個clusterID在hadoop啟動目錄下的current文件夾的VERSION文件中壁拉,查看下是否和datanode機器上匹配,因為格式化一次namenode的話這個clusterID可能會變化柏靶。
    我的做法是:在namenode機器上進入到/var/hadoop/dfs/name/current/查看VERSION文件的clusterID弃理,然后把這個clusterID負責到所有datanode機器上的/var/hadoop/dfs/data/current的VERSION文件中替換掉里面的clusterID,確保namenode機器和datanode機器的clusterID是一致的宿礁。
    參考文章:http://www.reibang.com/p/079c341e424a?utm_campaign
    https://blog.csdn.net/u013310025/article/details/52796233
    錯誤4.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末案铺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梆靖,更是在濱河造成了極大的恐慌控汉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件返吻,死亡現(xiàn)場離奇詭異姑子,居然都是意外死亡,警方通過查閱死者的電腦和手機测僵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門街佑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谢翎,“玉大人,你說我怎么就攤上這事沐旨∩” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵磁携,是天一觀的道長褒侧。 經(jīng)常有香客問我,道長谊迄,這世上最難降的妖魔是什么闷供? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮统诺,結(jié)果婚禮上歪脏,老公的妹妹穿的比我還像新娘。我一直安慰自己粮呢,他們只是感情好婿失,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鬼贱,像睡著了一般移怯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上这难,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天舟误,我揣著相機與錄音,去河邊找鬼姻乓。 笑死嵌溢,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蹋岩。 我是一名探鬼主播赖草,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼剪个!你這毒婦竟也來了秧骑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扣囊,失蹤者是張志新(化名)和其女友劉穎乎折,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侵歇,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡骂澄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惕虑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坟冲。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡磨镶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出健提,到底是詐尸還是另有隱情琳猫,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布矩桂,位于F島的核電站沸移,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侄榴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一网沾、第九天 我趴在偏房一處隱蔽的房頂上張望癞蚕。 院中可真熱鬧,春花似錦辉哥、人聲如沸桦山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恒水。三九已至,卻和暖如春饲齐,著一層夾襖步出監(jiān)牢的瞬間钉凌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工捂人, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留御雕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓滥搭,卻偏偏與公主長得像酸纲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瑟匆,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 前言 Hadoop在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)重要闽坡,Hadoop是大數(shù)據(jù)技術(shù)的基礎,對Hadoop基礎知識的掌握的...
    piziyang12138閱讀 1,968評論 0 3
  • 學習hadoop平臺搭建也有一段時間了愁溜,期間也遇到很多問題疾嗅,為了解決這些問題查了很多資料,浪費不少時間祝谚,今天寫下這...
    zxcasongs閱讀 1,222評論 0 4
  • 一宪迟、系統(tǒng)參數(shù)配置優(yōu)化 1、系統(tǒng)內(nèi)核參數(shù)優(yōu)化配置 修改文件/etc/sysctl.conf交惯,添加如下配置次泽,然后執(zhí)行s...
    張偉科閱讀 3,750評論 0 14
  • 一穿仪、什么是Hadoop?它包含哪些模塊意荤?① Hadoop 是一個由 Apache 基金會所開發(fā)的分布式系統(tǒng)基礎架...
    堂哥000閱讀 1,021評論 0 7
  • 愿明天的自己不唾棄今天的你 5.13的阿儀
    顧苒七閱讀 180評論 0 0