Hadoop 入門

我看過的比較全的文章。贊一下

問題導讀:
1.hadoop編程須要哪些基礎?
2.hadoop編程須要注意哪些問題?
3.如何建立mapreduce程序及其包含幾部分?
4.如何遠程鏈接eclipse,可能會遇到什麼問題?
5.如何編譯hadoop源碼?





 

閱讀此篇文章,須要些基礎下面兩篇文章
零基礎學習hadoop到上手工做線路指導(初級篇)
http://www.aboutyun.com/thread-6780-1-1.html
零基礎學習hadoop到上手工做線路指導(中級篇)
http://www.aboutyun.com/thread-7567-1-1.html
若是看過的話,看這篇不成問題,此篇講hadoop編程篇。

hadoop編程,hadoop是一個Java框架,同時也是編程的一次革命,使得傳統開發運行程序由單臺客戶端(單臺電腦)轉換爲能夠由多個客戶端運行(多臺機器)運行,使得任務得以分解,這大大提升了效率。

hadoop既然是一個Java框架,由於咱們必需要懂Java,網上有大量的資料,因此學習Java不是件難事。 可是學到什麼程度,多是咱們零基礎同窗所關心的。
語言不少狀況下都是相通的,若是你是學生,還處於打基礎的階段,那麼難度對於你來講仍是不小的。

1.初學者要求必須有理論基礎,而且可以完成一個小項目,最起碼可以完成幾個小例子,例如圖書館裏等。
初學者基本的要求:
(1)懂什麼是對象、接口、繼續、多態
(2)必須熟悉Java語法
(3)掌握必定的經常使用包
(4)會使用maven下載代碼
(5)會使用eclipse,包括裏面的快捷鍵,如何打開項目


傳統程序員,由於具備豐富的編程經驗,所以只要可以掌握開發工具:
(1)會使用maven下載代碼
(2)會使用eclipse,包括裏面的快捷鍵,如何打開項目
(3)簡單熟悉Java語法

上面的只是基礎,若是想開發hadoop,還須要懂得下面內容
(1)會編譯hadoop
(2)會使用hadoop-eclipse-plugin插件,遠程鏈接集羣
(3)會運行hadoop程序。

上面列出大概的內容,下面咱們具體說一些須要學習的內容。



不管是傳統開發人員仍是學生,零基礎下面都是須要掌握的:


咱們就須要進入開發了。開發零基礎,該如何,我們提供了相關的內容分別介紹下面文章
學習hadoop----java零基礎學習線路指導視頻(1)
http://www.aboutyun.com/thread-6920-1-1.html
這一篇咱們使用什麼開發工具,甚至考慮使用什麼操做系統。而後就是Java基礎知識篇,包括變量、函數等。

學習hadoop---Java初級快讀入門指導(2)
http://www.aboutyun.com/thread-6921-1-1.html
第一篇是屬於思想篇,那麼這一篇屬於實戰篇,經過不一樣的方式,交給你怎麼編寫第一個小程序。

Java零基礎:一步步教你如何使用eclipse建立項目及編寫小程序實例
http://www.aboutyun.com/thread-6963-1-1.html
因爲上面沒有真正抽象出eclipse的使用,因此這裏專門介紹了 使用 eclipse如何建立項目,及如何編寫小程序實例


java基礎:eclipse編程不得不知道的技巧
http://www.aboutyun.com/thread-6964-1-1.html
eclipse基本知識會了以後,咱們在項目,這些技巧至關有用,並且常常用到


1、考慮開發環境
上面是咱們打基礎,有了這些基礎,咱們就開始學習開發hadoop了,可是咱們該怎麼搭建環境,咱們知道Windows有3二、64位之分,jdk也有,那麼該如何解決,咱們在window32位上須要使用32位jdk,64位則使用64位jdk,一樣若是Linux則使用Linux32位於64位。
更詳細,能夠參考
零基礎利用Java開發hadoop須要考慮的問題
http://www.aboutyun.com/thread-6824-1-1.html

2、使用J2SE、J2EE
使用Java咱們須要總體瞭解Java語言,Java包含下面三種
  • J2EE java企業版,主要用於web開發
  • J2SE java 標準版,主要用於WEB開發,可是缺乏企業版的一些特性,通常狀況下java下的應用都是指J2SE的開發。
  • J2ME java 微小版,主要用於手機等的開發
所以若是咱們想處理、並展現數據,可使用J2EE,更詳細參考
hadoop開發--Java零基礎之J2EE、J2SE、J2ME的區別
http://www.aboutyun.com/thread-6904-1-1.html
3、對Java有了必定的認識,咱們開始使用Java
1.環境變量配置
對於慣用集成環境的開發者來說,這有點不適應,好比.net,安裝開發環境vs,直接開發就行了,爲啥還須要配置環境變量。
環境變量可讓咱們找到jdk的命令,這個或許.net的一點好處,就是都封裝起來了。別的不用關心了。對於環境變量,咱們
須要配置java_home,path路徑,更詳細參考:
hadoop開發--Java零基礎之開發工具環境變量配置


2.開發工具選擇
開發工具備不少種,不一樣的人習慣不一樣,開發工具也不同,這裏列出我的認爲比較經常使用
1.eclipse
2.MyEclipse
3.maven
更多工具參考hadoop開發—Java零基礎,開發選擇什麼開發工具比較合適
http://www.aboutyun.com/thread-6892-1-1.html

而其中maven能夠和eclipse一塊兒使用,也能夠單獨使用,後面開發中它仍是比較經常使用的,好比咱們下載hadoop源碼,編譯hadoop,都是須要maven來完成的。
maven的學習能夠參考
源碼編譯maven系列視頻教程彙總
http://www.aboutyun.com/thread-7972-1-1.html

3.Java編譯
Java能夠一處編譯到處運行,緣由是由於jvm。編譯後的效果,能夠查看:
Java零基礎,學習hadoop:爲何要編譯Java源代碼,編譯後會有什麼效果
http://www.aboutyun.com/thread-7620-1-1.html
4.如何打開Java項目
Java項目的開發,仍是比較特別的,是經過導入的方式,摺合其它好比.net項目,直接點擊圖標就能打開,Java項目,例如經過eclipse的import導入,詳細參考下面帖子:
零基礎教你如何導入Java項目到eclipse中
http://www.aboutyun.com/thread-8213-1-1.html
5.Java資源下載:

上面補充了一些基本的知識,可能還不夠全面,若是缺乏這方面的知識,有兩種辦法:
1.百度,查看視頻,缺什麼看什麼視頻
2.若是想本身何時,都能看,能夠下載下面的資源
javaWeb圖書館管理系統源碼mysql版本
http://www.aboutyun.com/thread-7269-1-1.html
Java使用hadoop開發基礎:Javaweb視頻共享
http://www.aboutyun.com/thread-7117-1-1.html
幾百GJava文件共享
http://www.aboutyun.com/thread-7955-1-1.html
java百G內容下載:包含自學,入門,高級應用,案例等
http://www.aboutyun.com/thread-6195-1-1.html




Java基礎完畢,咱們終於能夠開發了,其實開發也並不怎麼困難,常常遇到的問題以下:
1.使用插件鏈接不上集羣
windows下鏈接集有兩個緣由
1.用戶名不一致
解決辦法:
一、若是是測試環境,能夠取消hadoop hdfs的用戶權限檢查。打開conf/hdfs-site.xml,找到dfs.permissions屬性修改成false(默認爲true)OK了。(1.2.1 版本只有這個方法可行),如何操做能夠參考第一個問題。
 

二、修改hadoop location參數,在advanced parameter選項卡中,找到hadoop.job.ugi項,將此項改成啓動hadoop的用戶名便可
3 修改window 機器的用戶名爲 hadoop 用戶名。


2.運行mapreduce程序的時候,會檢查權限
根據hadoop開發方式總結及操做指導
http://www.aboutyun.com/thread-6950-1-1.html
咱們知道hadoop開發可使用插件,也能夠不使用插件,若是不使用插件開發可能會遇到下面問題


解決辦法修改下權限就行了
windows eclipse運行mapreduce遇到權限問題該如何解決
http://www.aboutyun.com/thread-7660-1-1.html

3.缺乏hadoop.dll,以及winutils.exe
(1)缺乏winutils.exe回報以下錯誤:
Could not locate executable null \bin\winutils.exe in the hadoop binaries
 


windows經過hadoop-eclipse-plugin插件遠程開發hadoop運行mapreduce遇到問題及解決
http://www.aboutyun.com/thread-8311-1-1.html
(2)缺乏hadoop.dll
錯誤以下:
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解決辦法:
1.首先將hadoop.dll放到hadoop的bin目錄下,以下圖所示
 


2.配置hadoop home及path

path,這裏使用的是絕對路徑,path裏面配置的是hadoop的bin路徑。配置完畢,切忌重啓機器
以下圖所示

 




包及插件的下載,能夠在這裏面找
hadoop家族、strom、spark、Linux、flume等jar包、安裝包彙總下載(持續更新)
http://www.aboutyun.com/thread-8178-1-1.html
上面總結了咱們開發環境中常常遇到的問題,上面問題打了預防針,咱們後面在鏈接的時候,就會順利多了。






開發hadoop,能夠在Linux下,也能夠在window下面
這裏主要講的是window下面:


該如何遠程鏈接hadoop集羣
對於不一樣版本不一樣的配置,遠程鏈接的配置有所不一樣,特別是端口的配置,可是整體的步驟是差很少的,下面分別是hadoop1.X與hadoop2.X

1.插件遠程鏈接
hadoop1.X 
hadoop開發方式之一:利用插件開發指導
http://www.aboutyun.com/thread-6947-1-1.html
hadoop2.X
新手指導:Windows上使用Eclipse遠程鏈接Hadoop進行程序開發
http://www.aboutyun.com/thread-6001-1-1.html
hadoop2.2 eclipse連接hdfs(hadoop)
http://www.aboutyun.com/thread-8190-1-1.html
配置Hadoop 2.x開發環境(Eclipse)
http://www.aboutyun.com/thread-7538-1-1.html
2.遠程鏈接問題
鏈接中存在問題上面總結了一部分,好比插件、缺.dll、版本等問題

Win7中使用Eclipse鏈接虛擬機中的Ubuntu中的Hadoop2.4經驗總結
http://www.aboutyun.com/thread-7784-1-1.html
windows 7 使用 eclipse 下hadoop應用開發環境搭建及問題總結
http://www.aboutyun.com/thread-8179-1-1.html
3.運行mapreduce
已經鏈接上集羣,咱們開始運行能夠編程了,這裏面咱們能夠操做hdfs,以下例:
hadoop實戰:Java對hdfs的編程
http://www.aboutyun.com/thread-6500-1-1.html
Java建立hdfs文件實例
http://www.aboutyun.com/thread-6779-1-1.html
Java操做HDFS錯誤總結
http://www.aboutyun.com/thread-6261-1-1.html
固然操做hdfs,會遇到權限問題,修改hdfs-site.xml便可,咱們不在重複。
除了操做hdfs上傳下載文件等操做,咱們還須要完成必定的功能,好比wordcount等簡單功能。這裏面編程完成三方面內容:
1.map函數,起到分割的做用
2.reduce函數,處理而後彙總
3.main()驅動。
4.如何帶參數還須要繼續Tool接口,帶參數詳細參考
如何編寫運行帶參數輸入輸出路徑hadoop程序


(1)建立mapreduce
運行mapreduce參數參考下面:
咱們首先能夠完成必定的功能,功能的實現,能夠參考
MapReduce初級案例(1):使用MapReduce去重
http://www.aboutyun.com/thread-7041-1-1.html
MapReduce初級案例(2):使用MapReduce數據排序
http://www.aboutyun.com/thread-7046-1-1.html
MapReduce初級案例(3):使用MapReduce實現平均成績
http://www.aboutyun.com/thread-7048-1-1.html
經過上面的實現,這裏有一個例子,能夠放到項目中,直接運行,固然你須要建立數據文件,及根據本身的實際狀況修改uri,也就是hdfs://。。。須要修改爲本身的內容。
新手指導,該如何在開發環境中,建立mapreduce程序
http://www.aboutyun.com/thread-7945-1-1.html

若是咱們對mapreduce有一個深度的瞭解,咱們能夠把大部分程序轉換爲mapreduce來實現,詳細參考如何讓傳統程序轉換成mapreduce
http://www.aboutyun.com/thread-8314-1-1.html

hadoop編程須要注意的問題 雖然hadoop是Java語言編寫的,可是其有本身的數據類型,及而且可能會遇到編碼問題,同時因爲mapreduce的分區,採用的是hash算髮,下面的內容,能夠了解一下
hadoop編程基礎:數據類型介紹及與Java數據類型之間轉換
http://www.aboutyun.com/thread-7036-1-1.html
eclipse 調試hadoop須要注意編碼問題
http://www.aboutyun.com/thread-6910-1-1.html
hadoop基礎:Java中的Hash值介紹
http://www.aboutyun.com/thread-7560-1-1.html
(2) 運行mapreduce 
建立完畢,咱們有兩種方式運行mapreduce,一種打包到集羣運行,一種在eclipse中運行。
hadoop集羣,如何運行Java jar包---如何運行mapreduce程序
http://www.aboutyun.com/thread-7408-1-1.html

打包集羣運行:參考下面內容
java零基礎:將java源碼打成jar包各類方法介紹
http://www.aboutyun.com/thread-7058-1-1.html
hadoop編程:解決eclipse能運行,打包放到集羣上ClassNotFoundException:經驗總結
http://www.aboutyun.com/thread-7086-1-1.html

(3) 運行中會遇到的問題
在開頭已經說了一些經典的問題,這裏在列出一些相關帖子。
1.eclipse中開發Hadoop2.x的Map/Reduce項目彙總
http://www.aboutyun.com/thread-7541-1-1.html
闡述了下面問題:
1.如何建立MR程序?
2.如何配置運行參數?
3.HADOOP_HOME爲空會出現什麼問題?
4.hadoop-common-2.2.0-bin-master/bin的做用是什麼?
擴展:
4.winutils.exe是什麼?


2.Win7 Eclipse調試Centos Hadoop2.2-Mapreduce出現問題解決方案
http://www.aboutyun.com/thread-8030-1-1.html
闡述下面問題:
1.建一個MapReduce Project,運行時發現出問題:Could not locate executable null,該如何解決?
2.Could not locate executabl   ....\hadoop-2.2.0\hadoop-2.2.0\bin\winutils.exe in the Hadoop binaries.該如何解決?

3.win7下使用hadoop-eclipse-plugin插件開發添加了hadoop.dll不生效
http://www.aboutyun.com/thread-8322-1-1.html
4.經過eclipse中的Java API上傳至集羣爲何replication默認3份,該如何設置
http://www.aboutyun.com/thread-7085-1-1.html
5.eclipse運行出現 Call From to master:8020 failed on connection exception:
http://www.aboutyun.com/thread-8321-1-1.html
6.hadoop eclipse插件出現問題
http://www.aboutyun.com/thread-8269-1-1.html
7.Linux下面eclipse鏈接報錯,請教大神
http://www.aboutyun.com/thread-5104-1-1.html
(4) mapreduce調試:
調試的方法有多種,這裏說一種最簡單、原始的一種。
記得Javascript剛開始之初是不能調試的,因而咱們就採用alert的方法,看看結果是否是咱們想要的,這裏咱們調試mapreduce採用的是相似的方法。咱們經過 Counter countPrint1 = context.getCounter("Map中循環strScore", 「輸出信息」);來輸出調試信息, getCounter能夠把程序裏面的變量輸出到Java控制檯,這樣就達到了調試效果。
詳細參考:
Hadoop中調試(mapreduce)map與redcue信息的輸出辦法
http://www.aboutyun.com/thread-7682-1-1.html
固然還有其餘調試方法,能夠參考下面
Win7 Eclipse調試Centos Hadoop2.2-Mapreduce出現問題解決方案
http://www.aboutyun.com/thread-8030-1-1.html
調試Hadoop源代碼:eclipse調試及日誌打印
http://www.aboutyun.com/thread-8021-1-1.html

4.獲取源碼、閱讀源碼

獲取源碼能夠經過git,maven等方式。

(1)maven
maven能夠單獨使用,也能夠做爲插件放在eclipse中,因爲hadoop src採用的是maven的方式,因此咱們須要學習和使用maven。
eclipse maven plugin 插件安裝和配置及maven實戰書籍下載
http://www.aboutyun.com/thread-8014-1-1.html

源碼編譯maven系列視頻教程彙總
http://www.aboutyun.com/thread-7972-1-1.html
若是看了上面的內容,那麼咱們對maven已經算是很熟悉了,能夠經過maven獲取hadoop源碼了,在獲取的源碼的時候,最起碼要保持網絡暢通,如何獲取,以及查看hadoop源碼,查看的時候,咱們還須要關聯一些包,不然會出現下面狀況,source not found。


更多內容,詳細可參考:

從零教你如何獲取hadoop2.4源碼並使用eclipse關聯hadoop2.4源碼
http://www.aboutyun.com/thread-8211-1-1.html

Eclipse查看hadoop源代碼出現Source not found,是由於沒有添加.zip
http://www.aboutyun.com/thread-7047-1-1.html


在eclipse中編輯hadoop2.2.0源代碼指導
http://www.aboutyun.com/thread-7283-1-1.html
源碼獲取了,咱們該如何查看閱讀源碼,如何經過eclipse查看類的定義,函數的實現,經過下面帖子便可達到咱們的目的。
如何經過eclipse查看、閱讀hadoop2.4源碼
http://www.aboutyun.com/thread-8225-1-1.html

(2)其它獲取源碼工具git、svn

源碼管理、獲取網絡源碼工具:TortoiseSVN使用手冊
http://www.aboutyun.com/thread-7982-1-1.html
Eclipse上GIT插件EGIT使用手冊
http://www.aboutyun.com/thread-8034-1-1.html

5.編譯hadoop源碼


源碼編譯,剛開始仍是比較複雜的,須要安裝很多的軟件包括maven、protobuf、CMake、ant等工具的安裝,編譯完畢以後,咱們就能夠安裝了。更詳細,能夠查看下面內容
從零教你在Linux環境下(ubuntu)如何編譯hadoop2.4
http://www.aboutyun.com/thread-8130-1-1.html
Hadoop 源代碼 eclipse 編譯教程
http://www.aboutyun.com/thread-5653-1-1.html
對於編譯的.class文件,若是想查看源碼,能夠經過反編譯工具實現
java的class文件反編譯和Eclipse、MyEclipse反編譯插件安裝、使用
http://www.aboutyun.com/thread-7053-1-1.html

6.插件製做

eclipse開發,有的同窗,感興趣,想製做插件,能夠查看下面內容


Hadoop2.4.0 Eclipse插件製做
http://www.aboutyun.com/thread-8117-1-1.html
Hadoop2.4.0 Eclipse插件製做及問題記錄
http://www.aboutyun.com/thread-7780-1-1.html
Hadoop 2.2.0編譯hadoop-eclipse-plugin插件
http://www.aboutyun.com/thread-7516-1-1.html


7.資源:
因爲一些同窗常常找不到安裝包、插件等,這裏彙總一些資源:

hadoop家族、strom、spark、Linux、flume等jar包、安裝包彙總下載(持續更新)
http://www.aboutyun.com/thread-8178-1-1.html

hadoop2.4彙總:hadoop2.4插件下載、徹底分佈式、僞分佈、eclipse插件開發大全
http://www.aboutyun.com/thread-7795-1-1.html
hadoop-eclipse-plugin-2.2.0.jar插件包分享
http://www.aboutyun.com/thread-6342-1-1.html
相關文章
相關標籤/搜索