Hadoop架構(以企業號為例)

Alicia Lee
6 min readDec 2, 2017

--

第一次接觸Hadoop,這生硬的系統卻意外的很好玩,松林老師上課提供一套他設計的Hadoop生態—企業號,就以此為例來開始認識Hadoop。

Hadoop

在大數據時代裡面對巨量資料的運算,就考驗到電腦或伺服器的運算效能,譬如說,現在要計算一筆1TB(或1PB)的資料,硬碟勉強還夠用,但RAM呢?透過Hadoop Cluster就可以集合多台電腦(或伺服器)的硬體資源一起來做運算,12台電腦就可以有32G*12的記憶體可以用,幾個同學的電腦串連一起就可以開始玩了,是不是經濟又實用,套用到伺服器等級,如果把一整個機房串連起來就可以打敗韋恩企業總部地下的超級電腦。

老闆表示很滿意

Hadoop架構

上課使用的是CVN80是陳松林老師改造的Hadoop叢集,整個生態建立在Docker上,這個改造是神等級,現在的我連車尾燈都還看不到,未來有機會看懂眉角再來介紹,先來說說大概念。

  1. 在自己電腦(PC or MAc)上裝一個VM(企業號使用的是VMware)。
  2. VM上運行Docker(因為Docker改版頻繁,不建議直接放在實體機)。
  3. 透過Docker模擬多台機器的叢集,以四台機器為例,整個叢集會開到10-16個container,但不用擔心,企業號從第二步之後全自動完成。
CVN80 機艙構造

灰色虛線框以內都是Docker上運行的環境。

橘色是Hadoop環境,運行三核心:HDFS, YARN, MapReduce。
目前部署有一台擔任NameNode(nna),一台擔任Reduce Manager(rma),三台worker(wka)。

藍色cla00~cla05是Linux Bash,是企業號留給乘客的一個位子,user要先上船才能使用其他功能,船票是一組資料科學家的帳號密碼,通過SSH連線上船。

MapReduce要計算的資料,一定從HDFS取得。
MapReduce計算完的結果也會存回HDFS。

How data flow in Hadoop

初學很容易搞混Linux和Hadoop的資料位置,我們重新回顧一次:

HDFS

HDFS是Hadoop負責檔案管理系統,資料從Linux讀進HDFS才能進行計算,NameNode是座艙長,負責指揮資料存放到哪裡(讓資料進入hadoop生態),使用的是wka的硬碟空間。座艙長只負責指揮,資料不經過它,負責存寫工作的是wka。

YARN

YARN負責CPU及RAM的資源調度,調度的是wka1–3的CPU和RAM,它同樣只負責指揮,出力的還是wka,負責送餐洗廁所。

MapReduce

這是我們要進行的運算,讀哪些資料,進行什麼計算,存回哪裡。細部工作介紹未來再談。

準備登船

企業號經過複雜的改寫,啟動和關閉大幅簡化成兩個指令:
$ dkstart a __________a是叢集名稱
$ dkstop a

dkstart對應到實際操作應該是:
$ docker start nna
$ docker start wka01
$ docker start cla01
___________有10個container就開十台
$ su - hadoop ___________切換到hadoop管理員身份
$ ssh nna ___________以管理員身份進入namenode
$ start-dfs.sh ___________ 啟動HDFS
$ ssh rma ___________如果rma是放在另一台container則要切換連線到該位置,記得先登出nna
$ start-yarn.sh ___________ 啟動YARN
$ mr-jobhistory-daemon.sh start historyserver _________啟動記錄服務,如果不是放在rma一樣記得先切換環境

依照『先開的最後關原則』,關機就是由下而上的步驟,把start改成stop依序執行。看這豪華度的落差,是不是想回企業號了:)

傳檔案

開機之後,要開始運算工作,別忘了先把資料傳進HDFS。

首先先登入docker內部的Linux主機。
$ dklogin dsa101 _________hadoop管理員可以在環境中直接切換身份
或管理員從外部(透過Putty)SSH連線上船,但不是直接走22 port喔,企業號做了較多的資安管控,每一個帳號對應專用的port,所以請和管理員確認清楚。登入後是在cla05這台主機上,dsa105的家目錄,準備開始進入HDFS。

dsa105科學家走專用通道口進入

$ hdfs dfs -ls . ___________查詢目前在hdfs上的資料
$ hdfs dfs -put 檔名 . ____________ 上傳檔案到HDFS,上傳後以目錄方式存在,也就是說,不能-cat
$ hdfs dfs -rm -r 目錄名 __________ 刪除目錄,因為HDFS唯讀的特性,如果資料變更,只能砍掉重新上傳。

蛋ㄟ,HDFS上也需要有一個允許dsa105存取的目錄位置,要先請管理員開好目錄及owner 權限設定,以下由企業號管理員bigred操作。
$ hdfs dfs -mkdir /user/dsa105 ___________幫105開一個家目錄,行規是每個使用者的家目錄都放在/user下。
$ hdfs dfs -chwon dsa105/we /user/dsa105 __________修改該目錄的擁有者,/we是群組名,/user/dsa105是目錄名,中間記得空格。
$ hdfs dfs-chmod 750 /user/dsa105 __________修改目錄權限,750是rwxr-x — -。

永遠要記得自己的所在位置!

--

--