學習錄: MapReduce工作原理(夾雜着RPC)

原計劃是是在週五完成的MapReduce的學習反饋,但是受週五當天的“浙旅方案”需要大改的影響,以及我當天在看MapReduce之前,看到一篇文章《RPC原理及RPC實例分析》關於,分佈式框架核心--RPC原理,決定好好研究研究,所以當天沒能給到您Mapreduce的學習反饋,這點向您道歉。下面基於這三天對RPC遠程過程調用、Mapreduce、大數據環境的搭建給出反饋。

  1. RPC原理
  2. MapReduce
  3. 大數據環境搭建

RPC遠程過程調用

PRC的由來:分佈式系統中,要搭建一個新服務,免不了需要依賴他人的服務,而現在他人的服務都在遠端,怎麼調用?RPC解決了上述問題!!!

  RPC的學習,對我來說還是比較坎坷,由於之前的計算機網絡知識忘記差不多了,導致學習RPC與HTTP比較這塊看起來很吃力,又重新的看了些計算機網絡相關OSI七層架構知識。

總結下來,其實RPC乾的事和HTTP差不多,也可以將RPC看成調用協議,在http協議中,客戶端像服務器發送請求到客服端接受等一頓操作(經典B/S結構),RPC也是這樣,只是RPC應用在分佈式中,RPC設計的理念就是:調用遠程服務要像調用本地服務一樣方便,即遠程調用透明。在分佈式系統中,有着面向服務思想,計算是服務、存儲是服務、或者說一個ERP程序的財務、數據庫等等都可以是服務,這些服務可能分佈在分佈式的集羣中,我們改怎麼調用這些服務,這時候就用到了RPC。

RPC過程分解:

其實上面的圖很好理解,就是客戶端(消費者)和服務端(提供者)中間加了兩層:Client Stub 和Server Stub.RPC做的工作就是將上面2-10的部分透明,讓我們看起來像是在本地調用服務。其中解釋下序列化和反序列化吧,序列化就是數據的處理方法,將數據變爲二進制的形式傳輸,反序列化就是變回來,在RPC中數據是通過二進制的方式傳輸的,而http協議是通過超文本傳輸(HTML)。當然,我上面說的服務更多的是作爲消息,只是爲了好理解說成服務。

其實,解決了如何調用其他人的服務問題,有一個問題出來了:如何發佈自己的服務???

其實用到了zookeeper.

zookeeper協調服務,感覺在很多解決方案中都有它。當天,我只理解zookeeper充當服務註冊機的作用。由於字數原因...就不寫了.

MapReduce

學習MapReduce時,我的學習路線是:MaReduce的原理---MapReduce運行機制

MapReduce作爲Hadoop的“心臟”,其核心思想是:分而治之。設計思想上,感覺還是很好理解的。我的學習重點放在了Mapreduce的運行機制上。其中JobClient、JobTracker、TaskTracker、Task等四大框架的理解,以及工作流程。其中map和Reduce中的分合Shuffle,以及一些零散的知識點。後期,學習目標希望是從Code和運維的角度去理解和實操MapReduce,更好的理解它的技術原理。因爲MapReduce比我想象中要複雜的多,所以學完之後系統的整理很多,慢慢消化這幾天所學內容需要時間,我希望後面再回來看MapReduce時候再做整理,感覺這樣效果要更好些。

放一張工作流:

http://dl2.iteye.com/upload/attachment/0066/0128/8aab5880-d171-30f7-91d6-aaacba2d03ce.jpg

學習資料:《RPC(遠程過程調用)的應用》、《淺析RPC遠程過程調用基本原理》、《OSI七層模型》、《MapReduce奠定基石》、《大數據處理之道》、《大媽也能看懂的大數據分佈式計算圖解》、《MapReduce原理與技術》

大數據環境的搭建

星期六纔到的主機,目前只裝了虛擬機Vmware和linux系統CentOS、以及linux得到java環境JDK。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章