Hadoop权威指南阅读笔记
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
1、MR和關系型數(shù)據(jù)
MR和傳統(tǒng)的關系型數(shù)據(jù)庫處理的數(shù)據(jù)是不同,傳統(tǒng)關系型數(shù)據(jù)庫處理的是較結構化數(shù)據(jù),對于半結構化和非機構話數(shù)據(jù)處理的還不是很好,MR正好對關系型數(shù)據(jù)不擅長領域做了補充,MR輸入的鍵值并不是數(shù)據(jù)的固有屬性,而是由分析數(shù)據(jù)人員來選擇的,就目前看來他們是互補的關系,MR通過HIVE實現(xiàn)了hadoop固有的SQL,不過mr的適應性更強一些,不過隨著以后的發(fā)展關系型數(shù)據(jù)庫也會慢慢不斷發(fā)展的。另外一個值得注意的就是MR是基于數(shù)據(jù)流的數(shù)據(jù)處理,處理的是一種非結構化的數(shù)據(jù),比SQL結構性數(shù)據(jù)更具有適用性,是這種編程更加具有伸縮性。
2、MR的核心是實現(xiàn)數(shù)據(jù)本地化,由于MR是基于數(shù)據(jù)流式處理,所以帶寬資源就顯得尤為重要。
3、由于MR采用的是無共享的框架,各節(jié)點之間都是相對獨立的,所以MR可以檢測出節(jié)點失敗的情況,在MR過程中,R階段是要以M的結果為輸入的,所以如果R沒有獲取到M的結果的時候會重新執(zhí)行。在MR過程中,R的output輸出目錄是不能存在的,否則無法執(zhí)行,一個長時間執(zhí)行后的結果被覆蓋是一件很懊惱的事情。
4、MR過程中有兩個很重要的角色JobTracker和TaskTracker,可以打個比喻,J相當于管理員(負責分配任務),管理者一批員工T(負責執(zhí)行任務),員工執(zhí)行任務要從J那邊得到任務編號才可以進行任務執(zhí)行。
5、hadoop將輸入數(shù)據(jù)分成等長的數(shù)據(jù)分片,每一個分片都是一個map任務,并由用戶自定義的函數(shù)MR來處理分片中的的每一條記錄。
6、決定整個作業(yè)時間的主要因素分為兩種1、管理分片的時間2、map創(chuàng)建任務的時間
7、數(shù)據(jù)本地優(yōu)化,各節(jié)點執(zhí)行map,各個節(jié)點存有的數(shù)據(jù)分片越趨向于HDFS分塊可以獲得最佳性能,這樣確保了單個節(jié)點的最大輸出塊。輸出塊的大小根據(jù)硬件和集群的實際情況而定,磁盤的讀取量。R階段并不具備本地化的優(yōu)勢,他的輸入通常是來自M的結果,因此需要通過網(wǎng)絡進行傳輸發(fā)送到任務R節(jié)點上,這里就涉及到帶寬問題了,因為我們應該盡量減少M向R的輸入,通過一些其他的手段如COMBINER或者并行輸入或者通過壓縮數(shù)據(jù)流的手段等。
8、hadoop目前不適用的場景 1、低時間延遲的 可以考慮Storm 或者Spark 2、大量小文件,主要原因是所有的數(shù)據(jù)塊元數(shù)據(jù)信息都存放在namenode文件夾下,這樣大量的小文件會造成namenode文件內存被占用 3、多用戶寫入,任意修改的,因為hadoop設計的初衷是為了一次寫入,多次讀取的。
9、HDFS的數(shù)據(jù)塊大于磁盤的塊是為了減少尋址。
10、namenode管理著所有datanode的域名空間,他維護著文件系統(tǒng)及整棵樹的文件目錄,這些信息被永久的保存在本地磁盤上,namenode也記錄著各個節(jié)點的數(shù)據(jù)信息,但是他并不保存在本地磁盤上,隨著每次重啟都要重構節(jié)點信息。更要命的是namenode是單節(jié)點,一個集群只有一個namenode所以一旦namenode出現(xiàn)問題,整個集群癱瘓了,如果使用keepalived的話,可以作為輔助節(jié)點,但是難免還是會有數(shù)據(jù)的丟失。據(jù)說hadoop2.x已經(jīng)解決了這個問題。
11、HDFS客戶端通過DistributedFileSystem 獲得一個FsDataInputStream對象,從na
menode那里獲取到datanode的文件位置信息。DFSoutputStream處理datanode和namenode之間的通信。?
12、一致模型:在讀取數(shù)據(jù)的時候,FSDdataoutputstream得到的數(shù)據(jù)是按塊來顯示的就是說,塊在讀取的時候不能立即顯示需要等該塊讀完了,這樣就造成了數(shù)據(jù)緩存,一旦集群發(fā)生故障數(shù)據(jù)塊丟失生產(chǎn)環(huán)境下是不允許的,HDFS提供了一個方法來強制所有的緩存與數(shù)據(jù)節(jié)點保持同步即對FSDataOutPutStream調用sync(),能保證到目前為止寫入數(shù)據(jù)的一致性,不過這樣會對應用增加一些額外的性能開銷,所以引用該方法還需要根據(jù)集群性能的均衡而定。
13、并行復制,典型的應用就是兩個HDFS之間的傳輸,該方法可以從hadoop文件系統(tǒng)復制大量的數(shù)據(jù),也可以將大量數(shù)據(jù)從hadoop復制出來。這里我們可以優(yōu)化盡量的減少MAP構建,盡量讓他多復制。
轉載于:https://my.oschina.net/u/1169079/blog/221524
總結
以上是生活随笔為你收集整理的Hadoop权威指南阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV成长之路:图像滤波
- 下一篇: struts2中OGNL的访问