⑴ hadoop家族先學什麼
優先學習hadoop,總體架構先了解清楚,有助於以後細節的具體學習。劉鵬的基本書寫的很入門,推薦看一看。煉數成金的hadoop視頻教程很不錯,值得入門看看。然後就可以學習hadoop權威指南。hadoop源碼分析,這個地方有張鑫寫的《深入雲計算:hadoop源代碼分析》,和《hadoop源碼分析》,之後就可以學習hive和pig,habse,zookeeper,這時候你如果有一定的資料庫知識,會簡單一點,如果不知道,那可以去了解一下資料庫的知識。等你把這些學會了,新的項目,我想hadoop源碼都會的人,應該不難了吧!歡迎採納,交流。——支持開源!熱愛學習!吼吼。
⑵ 如何學習hadoop源碼
首先,不得不說,hadoop發展到現在這個階段,代碼已經變得非常龐大臃腫,如果你直接閱讀最新版本的源代碼,難度比較大,需要足夠的耐心和時間,所以,如果你覺得認真一次,認真閱讀一次hadoop源代碼,一定要有足夠的心理准備和時間預期。
其次,需要注意,閱讀Hadoop源代碼的效率,因人而異,如果你有足夠的分布式系統知識儲備,看過類似的系統,則能夠很快地讀它的源代碼進行通讀,並快速切入你最關注的局部細節
⑶ 在哪兒學hadoop比較靠譜
1."Hadoop.Operations.pdf.zip"
2."Hadoop權威指南(中文版)(帶書簽).pdf"Hadoop權威指南(中文版)(帶書簽).pdf
3."[Hadoop權威指南(第2版)].pdf"[Hadoop權威指南(第2版)].pdf
4."hadoop權威指南第3版2012.rar"hadoop權威指南第3版2012.rar
5.《Hadoop技術內幕:深入解析HadoopCommon和HDFS.pdf"《Hadoop技術內幕:深入解析Hadoop Common和HDFS.pdf
6."Hadoop技術內幕:深入解析MapRece架構設計與實現原理.pdf"Hadoop技術內幕:深入解析MapRece架構設計與實現原理.pdf
7."Hadoop實戰.pdf"Hadoop實戰.pdf
8."Hadoop實戰-陸嘉恆(高清完整版).pdf"Hadoop實戰-陸嘉恆(高清完整版).pdf
9."Hadoop實戰(第2版).pdf"Hadoop實戰(第2版).pdf
10."HadoopinAction.pdf"Hadoop in Action.pdf
11"Hadoop in practice.pdf"Hadoop in practice.pdf
12"HadoopThe.Definitive.Guide,3Ed.pdf"Hadoop The.Definitive.Guide,3Ed.pdf
13."O'Reilly.Hadoop.The.Definitive.Guide.3rd.Edition.May.2012.pdf"O'Reilly.Hadoop.The.Definitive.Guide.3rd.Edition.May.2012.pdf
14."hadoop入門實戰手冊.pdf"hadoop入門實戰手冊.pdf
15."Hadoop入門手冊.chm"Hadoop入門手冊.chm
16."windows下配置cygwin、hadoop等並運行maprece及maprece程序講解.doc"windows下配置cygwin、hadoop等並運行maprece及maprece程序講解.doc
17"在Windows上安裝Hadoop教程.pdf"在Windows上安裝Hadoop教程.pdf
18."Hadoop源代碼分析(完整版).pdf"Hadoop源代碼分析(完整版).pdf
19."hadoop-api.CHM"hadoop-api.CHM
20."HBase-Hadoop@小米.pptx" HBase-Hadoop@小米.pptx
21."但彬-Hadoop平台的大數據整合.pdf"但彬-Hadoop平台的大數據整合.pdf
22."QCon2013-羅李-Hadoop在阿里.pdf"QCon2013-羅李
23."網路hadoop計算技術發展.pdf"網路hadoop計算技術發展.pdf
24."QCon-吳威-基於Hadoop的海量數據平台.pdf"QCon-吳威-基於Hadoop的海量數據平台.pdf
25."8步安裝好你的hadoop.docx"8步安裝好你的hadoop.docx
26."hadoop運維經驗分享.ppsx"hadoop運維經驗分享.ppsx
27."PPT集萃:20位Hadoop專家分享大數據技術工具與最佳實踐.rar"PPT集萃:20位Hadoop專家分享大數據技術工具與最佳實踐.rar
28."Hadoop2.0基本架構和發展趨勢.pdf"Hadoop 2.0基本架構和發展趨勢.pdf
29."Hadoop與大數據技術大會PPT資料.rar"Hadoop與大數據技術大會PPT資料.rar
30."Hadoop2011雲計算大會.rar"Hadoop2011雲計算大會.rar
31."hadoop開發者(1~3)期.zip"hadoop開發者.zip
⑷ 怎麼使用eclipse編譯hadoop源碼
使用eclipse編譯hadoop源碼
1,建立一個Hadoop源碼文件夾。
2、svn 檢出hadoop1.0.4的源碼。svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.0.4
注意:如果在ubuntu下直接上面語句報錯,可能需要執行下面的語句
sudo apt-get install autoconf
sudo apt-get install libtool
3、在檢出完成後的目錄下執行
ant eclipse.然後將源碼導入到eclipse中。
4、修改 release-1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java
將兩處的 Enum<? extends T> 改成 Enum<?>
5、編譯器設置及編譯。
右擊工程名,Properties-->Builders-->New--->Ant Builder
New_Builder --> Edit: Name: hadoop-Builder.Main:Builderfile(builder.xml的位置):/home/nacey/workspace/source-workspace/hadoop-1.0.4;Targets—>Manual Build: jar
然後選擇菜單Project-->Build Project
在/home/nacey/workspace/source-workspace/hadoop-1.0.4/build文件夾下會生成三個開發 jar 包:
hadoop-client-1.0.4-SNAPSHOT.jar
hadoop-core-1.0.4-SNAPSHOT.jar
hadoop-minicluster-1.0.4-SNAPSHOT.jar
去掉"-SNAPSHOT"即可替換hadoop-1.0.4 下的同名 jar 包.
注意如果要在集群中使用自己編譯的jar,則需要替換集群中的所有機器。不然會出現版本不匹配。
⑸ hadoop hdfs 源碼怎麼看
在使用Hadoop的過程中,很容易通過FileSystem類的API來讀取HDFS中的文件內容,讀取內容的過程是怎樣的呢?今天來分析客戶端讀取HDFS文件的過程,下面的一個小程序完成的功能是讀取HDFS中某個目錄下的文件內容,然後輸出到控制台,代碼如下:
[java] view plain
public class LoadDataFromHDFS {
public static void main(String[] args) throws IOException {
new LoadDataFromHDFS().loadFromHdfs("hdfs://localhost:9000/user/wordcount/");
}
public void loadFromHdfs(String hdfsPath) throws IOException {
Configuration conf = new Configuration();
Path hdfs = new Path(hdfsPath);
FileSystem in = FileSystem.get(conf);
//in = FileSystem.get(URI.create(hdfsPath), conf);//這兩行都會創建一個DistributedFileSystem對象
FileStatus[] status = in.listStatus(hdfs);
for(int i = 0; i < status.length; i++) {
byte[] buff = new byte[1024];
FSDataInputStream inputStream = in.open(status[i].getPath());
while(inputStream.read(buff) > 0) {
System.out.print(new String(buff));
}
inputStream.close();
}
}
}
FileSystem in = FileSystem.get(conf)這行代碼創建一個DistributedFileSystem,如果直接傳入一個Configuration類型的參數,那麼默認會讀取屬性fs.default.name的值,根據這個屬性的值創建對應的FileSystem子類對象,如果沒有配置fs.default.name屬性的值,那麼默認創建一個org.apache.hadoop.fs.LocalFileSystem類型的對象。但是這里是要讀取HDFS中的文件,所以在core-site.xml文件中配置fs.default.name屬性的值為hdfs://localhost:9000,這樣FileSystem.get(conf)返回的才是一個DistributedFileSystem類的對象。 還有一種創建DistributedFileSystem這種指定文件系統類型對像的方法是使用FileSystem.get(Configuration conf)的一個重載方法FileSystem.get(URI uri, Configuration),其實調用第一個方法時在FileSystem類中先讀取conf中的屬性fs.default.name的值,再調用的FileSystem.get(URI uri, Configuration)方法。
⑹ hadoop yarn源碼怎麼進行修改
第一個階段:學習hadoop基本使用和基本原理,從應用角度對hadoop進行了解和學習
這是第一個階段,你開始嘗試使用hadoop,從應用層面,對hadoop有一定了解,比如你可以使用hadoop shell對hdfs進行操作,使用hdfs API編寫一些程序上傳,下載文件;使用MapRece API編寫一個數據處理程序。一旦你對hadoop的基本使用方法比較熟悉了,接下來可以嘗試了解它的內部原理,注意,不需要通過閱讀源代碼了解內部原理,只需看一些博客,書籍,比如《Hadoop權威指南》,對於HDFS而言,你應該知道它的基本架構以及各個模塊的功能;對於MapRece而言,你應該知道其具體的工作流程,知道partition,shuffle,sort等工作原理,可以自己在紙上完整個畫完maprece的流程,越詳細越好。
在這個階段,建議你多看一些知名博客,多讀讀《hadoop權威指南》(可選擇性看相關的幾章)。如果你有實際項目驅動,那是再好不過了,理論聯系實際是最好的hadoop學習方法;如果你沒有項目驅動,那建議你不要自己一個人悶頭學,多跟別人交流,多主動給別人講講,最好的學習方式還是「講給別人聽」。
============
第二個階段:從無到入門,開始閱讀hadoop源代碼
這個階段是最困苦和漫長的,尤其對於那些沒有任何分布式經驗的人。 很多人這個階段沒有走完,就放棄了,最後停留在hadoop應用層面。
這個階段,第一件要做的事情是,選擇一個hadoop組件。如果你對分布式存儲感興趣,那麼你可以選擇HDFS,如果你讀分布式計算感興趣,你可以選擇MapRece,如果你對資源管理系統感興趣,你可以選擇YARN。
選擇好系統後,接下來的經歷是最困苦的。當你把hadoop源代碼導入eclipse或intellij idea,沏上一杯茶,開始准備優哉游哉地看hadoop源代碼時,你懵逼了:你展開那數不盡的package和class,覺得無從下手,好不容易找到了入口點,然後你屁顛屁顛地通過eclipse的查找引用功能,順著類的調用關系一層層找下去,最後迷失在了代碼的海洋中,如同你在不盡的壓棧,最後棧溢出了,你忘記在最初的位置。很多人經歷過上面的過程,最後沒有順利逃出來,而放棄。
如果你正在經歷這個過程,我的經驗如下:首先,你要摸清hadoop的代碼模塊,知道client,master,slave各自對應的模塊(hadoop中核心系統都是master/slave架構,非常類似),並在閱讀源代碼過程中,時刻謹記你當前閱讀的代碼屬於哪一個模塊,會在哪個組件中執行;之後你需要摸清各個組件的交互協議,也就是分布式中的RPC,這是hadoop自己實現的,你需要對hadoop RPC的使用方式有所了解,然後看各模塊間的RPC protocol,到此,你把握了系統的骨架,這是接下來閱讀源代碼的基礎;接著,你要選擇一個模塊開始閱讀,我一般會選擇Client,這個模塊相對簡單些,會給自己增加信心,為了在閱讀代碼過程中,不至於迷失自己,建議在紙上畫出類的調用關系,邊看邊畫,我記得我閱讀hadoop源代碼時,花了一疊紙。注意,看源代碼過程中,很容易煩躁不安,建議經常起來走走,不要把自己逼得太緊。
在這個階段,建議大家多看一些源代碼分析博客和書籍,比如《Hadoop技術內幕》系列叢書(軒相關網站:Hadoop技術內幕)就是最好的參考資料。藉助這些博客和書籍,你可以在前人的幫助下,更快地學習hadoop源代碼,節省大量時間,注意,目前博客和書籍很多,建議大家廣泛收集資料,找出最適合自己的參考資料。
這個階段最終達到的目的,是對hadoop源代碼整體架構和局部的很多細節,有了一定的了解。比如你知道MapRece Scheler是怎樣實現的,MapRece shuffle過程中,map端做了哪些事情,rece端做了哪些事情,是如何實現的,等等。這個階段完成後,當你遇到問題或者困惑點時,可以迅速地在Hadoop源代碼中定位相關的類和具體的函數,通過閱讀源代碼解決問題,這時候,hadoop源代碼變成了你解決問題的參考書。
============
第三個階段:根據需求,修改源代碼。
這個階段,是驗證你閱讀源代碼成效的時候。你根據leader給你的需求,修改相關代碼完成功能模塊的開發。在修改源代碼過程中,你發現之前閱讀源代碼仍過於粗糙,這時候你再進一步深入閱讀相關代碼,彌補第二個階段中薄弱的部分。當然,很多人不需要經歷第三個階段,僅僅第二階段就夠了:一來能夠通過閱讀代碼解決自己長久以來的技術困惑,滿足自己的好奇心,二來從根源上解決解決自己遇到的各種問題。 這個階段,沒有太多的參考書籍或者博客,多跟周圍的同事交流,通過代碼review和測試,證明自己的正確性。
============
閱讀hadoop源代碼的目的不一定非是工作的需要,你可以把他看成一種修養,通過閱讀hadoop源代碼,加深自己對分布式系統的理解,培養自己踏實做事的心態。
⑺ Hadoop源碼分析如何下手
在Eclipse中新建一個java項目,將src下的文件復制到項目的src下,然後導入lib下的jar文件,即可查看源碼了。網上有教程
⑻ 如何通過eclipse查看,閱讀hadoop2.4源碼
1.導入查看hadoop源碼
(1)選擇Existing Projects into
Workspace
(2)選擇源碼路徑
(3)查看源碼
這樣我們就完成了全部的內容。
2.閱讀hadoop源碼
其中比較常用的
Open
Call Hierarchy:
用Open Call
Hierarchy可以查看方法的調用層次。如果想知道一個方法在別的什麼地方被調用了,這個功能就很好用了,實際中也很常用,比如要重構一個方法時,想
知道他對其它什麼地方可能有影響,就可以用這個功能。在方法名上點擊右鍵,選擇Open Type
Hierarchy即可,快捷鍵是Ctrl+Alt+H。可以在Call Hierarchy窗口看到方法的調用層次的導航。
Open Type
Hierarchy:
用Open Type
Hierarchy可以查看類的繼承關系,可以在Hierarchy窗口看到繼承層次的導航。在方法或類名上點擊右鍵,選擇Open Type
Hierarchy即可,快捷鍵是F4。
介紹完畢,這里在介紹一些其他的跟蹤源碼的方法:
1、
用Open Declaration可以查看類、方法和變數的聲明。這是最常用的一個功能了,如果在要追蹤的對象上點右鍵,選擇Open
Declaration,可以跳轉到其聲明的地方。這個功能有個快捷鍵是F3,當然你也可以按住Ctrl鍵,滑鼠移過去會變成一個小手,單擊就可以了。
2、用Open
Super Implemention可以查看當前方法在父類中的實現或介面中的聲明(前提是該方法是對父類或介面中相應方法的重寫),在方法名上點擊右鍵,選擇Open
Super Implemention即可。
3、 最後介紹一個超級好用的功能,叫Open
Implemention,就是可以跳轉到某個調用的方法的具體實現的地方去。為什麼說這個是超級好用呢?用過Spring的人都知道,現在都提倡面向接
口編程,所以,如果使用Open
Declaration來追蹤一個方法的調用的話,只會看到該方法在介面中的聲明,而看不該方法在具體類中的實現,當然,可以使用Call
Hierarchy先得到該方法的整個的調用層次,然後再導航到具體的實現處,但操作有些麻煩了。有了Open
Implemention,就可以直接看到實現的代碼了,在方法名上點擊右鍵,選擇Open
Implemention就可以了!只是要享受這個功能,可安裝一個Eclipse插件,這里就不在詳細介紹了。
⑼ 如何高效的閱讀hadoop源代碼
R語言和Hadoop讓我們體會到了,兩種技術在各自領域的強大。很多開發人員在計算機的角度,都會提出下面2個問題。問題1: Hadoop的家族如此之強大,為什麼還要結合R語言?
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什麼?下面我嘗試著做一個解答:問題1: Hadoop的家族如此之強大,為什麼還要結合R語言?
a. Hadoop家族的強大之處,在於對大數據的處理,讓原來的不可能(TB,PB數據量計算),成為了可能。
b. R語言的強大之處,在於統計分析,在沒有Hadoop之前,我們對於大數據的處理,要取樣本,假設檢驗,做回歸,長久以來R語言都是統計學家專屬的工具。
c. 從a和b兩點,我們可以看出,hadoop重點是全量數據分析,而R語言重點是樣本數據分析。 兩種技術放在一起,剛好是最長補短!
d. 模擬場景:對1PB的新聞網站訪問日誌做分析,預測未來流量變化
d1:用R語言,通過分析少量數據,對業務目標建回歸建模,並定義指標d2:用Hadoop從海量日誌數據中,提取指標數據d3:用R語言模型,對指標數據進行測試和調優d4:用Hadoop分步式演算法,重寫R語言的模型,部署上線這個場景中,R和Hadoop分別都起著非常重要的作用。以計算機開發人員的思路,所有有事情都用Hadoop去做,沒有數據建模和證明,」預測的結果」一定是有問題的。以統計人員的思路,所有的事情都用R去做,以抽樣方式,得到的「預測的結果」也一定是有問題的。所以讓二者結合,是產界業的必然的導向,也是產界業和學術界的交集,同時也為交叉學科的人才提供了無限廣闊的想像空間。問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什麼?
a. Mahout是基於Hadoop的數據挖掘和機器學習的演算法框架,Mahout的重點同樣是解決大數據的計算的問題。
b. Mahout目前已支持的演算法包括,協同過濾,推薦演算法,聚類演算法,分類演算法,LDA, 樸素bayes,隨機森林。上面的演算法中,大部分都是距離的演算法,可以通過矩陣分解後,充分利用MapRece的並行計算框架,高效地完成計算任務。
c. Mahout的空白點,還有很多的數據挖掘演算法,很難實現MapRece並行化。Mahout的現有模型,都是通用模型,直接用到的項目中,計算結果只會比隨機結果好一點點。Mahout二次開發,要求有深厚的JAVA和Hadoop的技術基礎,最好兼有 「線性代數」,「概率統計」,「演算法導論」 等的基礎知識。所以想玩轉Mahout真的不是一件容易的事情。
d. R語言同樣提供了Mahout支持的約大多數演算法(除專有演算法),並且還支持大量的Mahout不支持的演算法,演算法的增長速度比mahout快N倍。並且開發簡單,參數配置靈活,對小型數據集運算速度非常快。
雖然,Mahout同樣可以做數據挖掘和機器學習,但是和R語言的擅長領域並不重合。集百家之長,在適合的領域選擇合適的技術,才能真正地「保質保量」做軟體。
如何讓Hadoop結合R語言?
從上一節我們看到,Hadoop和R語言是可以互補的,但所介紹的場景都是Hadoop和R語言的分別處理各自的數據。一旦市場有需求,自然會有商家填補這個空白。
1). RHadoop
RHadoop是一款Hadoop和R語言的結合的產品,由RevolutionAnalytics公司開發,並將代碼開源到github社區上面。RHadoop包含三個R包 (rmr,rhdfs,rhbase),分別是對應Hadoop系統架構中的,MapRece, HDFS, HBase 三個部分。
2). RHiveRHive是一款通過R語言直接訪問Hive的工具包,是由NexR一個韓國公司研發的。
3). 重寫Mahout用R語言重寫Mahout的實現也是一種結合的思路,我也做過相關的嘗試。
4).Hadoop調用R
上面說的都是R如何調用Hadoop,當然我們也可以反相操作,打通JAVA和R的連接通道,讓Hadoop調用R的函數。但是,這部分還沒有商家做出成形的產品。
5. R和Hadoop在實際中的案例
R和Hadoop的結合,技術門檻還是有點高的。對於一個人來說,不僅要掌握Linux, Java, Hadoop, R的技術,還要具備 軟體開發,演算法,概率統計,線性代數,數據可視化,行業背景 的一些基本素質。在公司部署這套環境,同樣需要多個部門,多種人才的的配合。Hadoop運維,Hadoop演算法研發,R語言建模,R語言MapRece化,軟體開發,測試等等。所以,這樣的案例並不太多。
⑽ 如何在eclipse里方便的讀hadoop源碼
導入查看hadoop源碼(1)選擇Existing Projects into Workspace (2)選擇源碼路徑 (3)查看源碼 這樣就完成了全部的內容。
閱讀hadoop源碼其中比較常用的Open Call Hierarchy:用Open Call Hierarchy可以查看方法的調用層次。