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

一、Hadoop是什么?

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

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

  • HDFS:一個Hadoop的分布式文件系統,支持NameNode橫向擴展,解決海量數據的存儲。
  • YARN:一個負責作業調度和集群資源管理的框架,解決資源任務調度。
  • MapReduce:一個分布式運算編程框架,運行在YARN上,用來解決海量數據的計算。

從廣義來說,Hadoop類似于Spring,已經形成了一個Hadoop生態圈,許多技術都和Hadoop進行集成使用起來。
總結:Hadoop的應用場景并不會跟某些行業或某些業務掛鉤在一起,它只是一款海量數據分析處理的軟件平臺,提供HDFS、MapReduce、YARN這些模塊來對外提供幫助。

二、Hadoop2集群理論

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

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

圖片.png
Hadoop部署主要有3種模式:前兩種主要用于調試,屬于單機部署,后面一種才是生產環境部署。

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

三、實際操作搭建hadoop集群

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

接著配置網絡工作,敲命令vi /etc/sysconfig/network進行配置

NETWORKING=yes # 網絡是否工作,此處一定不能為no

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

nameserver 8.8.8.8

最后關閉防火墻和重啟網絡服務

systemctl stop firewalld         # 臨時關閉防火墻
systemctl disable firewalld      # 禁止開機啟動

service network restart      #重啟網絡服務

克隆步驟1新建的虛擬機master,以此克隆出3個新的虛擬機,并分別命名為slave1、slave2、slave3,克隆操作:在VMware中,把當前新建好的虛擬機關閉掉,因為在開啟狀態是不能克隆的,然后右鍵虛擬機-->選擇管理-->克隆-->完成克隆副本-->選擇保存的位置。
我們要完成的集群是這樣的架構。

圖片.png
不過注意:克隆master的話,這個克隆出來的虛擬機和原虛擬機各個配置都是一樣的,我們接下來要對網絡、主機名等進行配置。
和上面一樣的配置,只是修改了主機ip而已,不固定,在同一個網段就好(即網絡號相同),然后重啟網絡服務,命令和上面一樣就省略掉了。
然后,修改主機名,敲命令hostnamectl set-hostname slave1(你要的主機名字)
之后敲命令vi /etc/hosts修改hosts文件,將名字和IP建立聯系,然后重啟reboot命令。
最后這是關鍵,4臺虛擬機都同樣的操作都修改好后,互相ping一下看看通不通,比如在windows使用cmd命令行ping4臺虛擬機試試,4臺虛擬機互相ping下或者ping下windows。最后4臺虛擬機就如下圖配置好了。
最后集群機子圖片.png
互相ping通.png

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

    最后模式如下圖:
    圖片.png
  • 5、上圖的master相當于namenode,存儲著文件名,記錄文件存放的位置,其他3臺slave相當于datanode,存儲著真實的數據。外部訪問都是通過namenode來間接訪問datanode,namenode相當于管理者,datanode相當于數據提供者。
  • 6、cd進入到/usr/local/hadoop/etc/hadoop目錄下,顯示所有文件會看到有個core-site.xml文件,這個文件是告訴master在哪里,slave被誰管理。修改此文件,在里面的configuration標簽里寫下述內容,4臺虛擬機都要寫:
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
</property>
  • 7、經過上面的文件配置,就可以啟動hadoop了,namenode與datanode默認是裝在一起的,所以得分開輸入命令分別啟動。
    先格式化下namenode,敲命令hdfs namenode -format,然后4臺虛擬機都配置下主機名與主機ip的關聯,敲命令vi /etc/hosts編輯一個文件來配置主機。輸入以下內容
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:如果想要啟動所有節點的話,就可以cd /usr/local/hadoop/sbin目錄下,使用start-all.sh命令啟動全部,相反關閉全部的話就是stop-all.sh命令。)

圖片.png
最后這樣就完成了基本的hadoop環境搭建了,此時通過hdfs協議進行關聯,namenode是管理著其余的3個datanode的。
圖片.png

上圖解釋:hadoop在接受一個文件的時候,當文件超過128M的時候,會自動進行分塊,正如上面的b1、b2這種,然后還會對文件進行備份處理,默認分成3份,正如上面的slave1、slave2、slave3機器都存放在b1這樣的數據。上面的圖其實畫得不標準,應該是有master機器啟動這namenode進程,還有slave1、slave2、slave3三臺機器各啟動這datanode進程,master機器管理著3臺slave機器。體現出了hadoop是可以橫向水平擴展的(比如不斷得增加datanode存儲數據),還有安全穩定性,這依靠著冗余存儲,某臺機器宕機了不影響對外提供服務(比如slave1宕機了,數據在slave2照樣可以找到,另外namenode宕機了還有the second namenode這個節點來替代namenode)

四、在集群實現ssh免密登錄

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

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

步驟:輸入命令ls -la可查看當前目錄下的所有文件和文件夾,包括隱藏文件夾,于是我發現我master機器上沒有.ssh文件夾,而slave1、slave2、slave3機器上都有.ssh文件夾,所以我懷疑我的master是沒有通過RSA加密算生成了密鑰,包括私鑰和公鑰。
輸入ssh-keygen -t rsa這條命令后,連續按3次回車即可通過RSA加密算生成了密鑰,包括私鑰和公鑰。接著輸入ssh-copy-id slave1命令然后根據提示輸入密碼后就把公鑰傳給了slave1機器。對應還有輸入ssh-copy-id slave2、ssh-copy-id slave3命令。如下圖結果:

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

背景:一個個地登錄比較麻煩,我們可不可以直接在master機器上對集群的所有datanode節點進行統一的啟動關閉管理?于是就有了下面的操作。配置統一集群節點管理

圖片.png
這里的slave文件存儲著namenode管理著多少臺datanode,每臺datanode位于哪臺機器上。可以進行修改進行統一集群節點管理,這樣就可以只在master機器上去啟動所有節點。輸入vi slave命令修改文件,管理著多少臺slave機器就輸入多少臺

slave1
slave2
slave3
......

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

圖片.png

五、期間排錯

  • 1、輸入命令hdfs dfsadmin -report | more來報告下集群機器的情況,如果出現下圖錯誤1,則要檢查下fs.default.name是否配置了。具體操作是先cd /usr/local/hadoop/etc/hadoop目錄下,再vi core-site.xml修改配置,加上上面的第6點,之后:wq保存退出即可。
    錯誤1
  • 2、再次輸入命令hdfs dfsadmin -report | more報告下,出現下圖錯誤2,則要第一時間反應過來是不是服務器主機名沒有和ip地址映射上,于是輸入命令vi /etc/hosts修改配置,加上上面的第7點,之后:wq保存退出即可。
    錯誤2.png
  • 3、再次輸入命令hdfs dfsadmin -report | more報告下,出現下圖錯誤3,這個問題我找了好久,最后在一篇博客中發現有大神評論說是本地用戶administrator(本機windows用戶)沒有權限引起去遠程操作hadoop系統,所以得在hadoop的hdfs-site.xml配置文件配置取消hadoop hdfs用戶權限檢查。先cd /usr/local/hadoop/etc/hadoop目錄下,再vi hdfs-site.xml修改配置文件,在<configuration>標簽組內加入下面代碼
<property>
        <name>dfs.permissions</name>
        <value>false</value>
</property>
錯誤3.png
  • 4、再次輸入命令hdfs dfsadmin -report | more報告下,這次成功了,但是namenode沒有管理到datanode節點,如下圖:
    圖片.png
    此時我們可以在網頁端查看hadoop集群的情況,具體操作是輸入netstat -ntlp命令,查看hadoop集群對外提供的端口號。一般是50070,之后就可以在瀏覽器地址欄中輸入集群主機名+端口號進行訪問了。比如http://10.14.28.100:50070,之后web界面是這樣的。
    圖片.png
    ,不過在web界面我才清楚地發覺,好像我還遇到另外一個錯誤,就是我的namenode沒有管理到datanode啊!!!在Overview菜單項中顯示Live Nodes存活節點數為0。于是我很納悶,我的namenode和datanode各自都啟動成功了,namenode機器和datanode機器對應也都能ping通,最后百度發現一篇跟我遭遇情況一模一樣的文章提到了解決方案(先cd /usr/local/hadoop/etc/hadoop目錄下,再vi hdfs-site.xml修改配置文件,在<configuration>標簽組內加入以下代碼即可。不過切記,修改完配置文件,要關閉namenode和datanode節點服務,再重新開啟才可以生效,我修改完沒重啟在這里栽了跟頭還好所耗時間不長就被我意識到了),感謝~
<property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
</property>
圖片.png
  • 5、同一集群節點管理遇錯,拒絕連接,解決方案下面這篇文章可能有效。
    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.lxweimin.com/p/079c341e424a?utm_campaign
    https://blog.csdn.net/u013310025/article/details/52796233
    錯誤4.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • 前言 Hadoop在大數據技術體系中的地位至關重要,Hadoop是大數據技術的基礎,對Hadoop基礎知識的掌握的...
    piziyang12138閱讀 1,969評論 0 3
  • 學習hadoop平臺搭建也有一段時間了,期間也遇到很多問題,為了解決這些問題查了很多資料,浪費不少時間,今天寫下這...
    zxcasongs閱讀 1,239評論 0 4
  • 一、系統參數配置優化 1、系統內核參數優化配置 修改文件/etc/sysctl.conf,添加如下配置,然后執行s...
    張偉科閱讀 3,773評論 0 14
  • 一、什么是Hadoop?它包含哪些模塊?① Hadoop 是一個由 Apache 基金會所開發的分布式系統基礎架...
    堂哥000閱讀 1,033評論 0 7
  • 愿明天的自己不唾棄今天的你 5.13的阿儀
    顧苒七閱讀 224評論 0 0