Hadoop菜鳥入門之學習筆記

Hadoop是什麼?先問一下度娘吧:

【百度百科】一個分佈式系統基礎架構,由Apache基金會所開發。用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序。充分利用集群的威力進行高速運算和存儲。 Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬件上;而且它提供高傳輸率(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,則MapReduce為海量的數據提供了計算。

Hadoop主要用於一些分佈式計算。在這個大數據年代,那這個的確是一個很不錯的工具。所以很有必要來學一學。

如何開展這個學習呢,不管怎樣,學習一樣新東西,我喜歡這樣的順序:先依葫蘆畫瓢,一步一步行將其運行起來,再來分析一些應用場景及運行的情況,然後深入看一下其高級應用, 最後由於這個是一個開源產品,正好來藉此機會來讀一讀大牛們的代碼,學學其精華。

好了,開始行動:

1.運行環境搭建

首先,這個是需要運行在linux系統中的,所以得安裝個linux才行,市面上有很多個linux的版本,如紅帽子、Fedra、Ubuntu。選哪種呢,對我這種習慣windows的來說,當然要使用方便的,所以選擇了Ubuntu。

安裝Ubuntu,這裡我就不多說了,在官網上有很多,其實也很簡單,一路下一步。當然這裡可以安裝在Vmware虛擬機上,也可以直接安裝在硬盤上。 我個人建議,可以直接安裝在硬盤上,與現有windows做個雙系統。因為後面還要跑開發環境 eclipse,在虛擬機上會有點吃力。 同時安裝在硬盤上後,還可以這樣玩,在進入windows後,安裝 vmware,然後新建虛擬機後,不要創建硬盤,直接使用硬盤的分區,這樣, 就可以在vmware中啟動安裝在硬盤上的ubuntu了。做到雙系統,雙啟動。

這樣好處是,當要開發時,可以直接進ubuntu系統,當只是看看代碼,以及後面模擬分佈式部署時,就可以用vmware來啟動,同時再建上幾個虛擬機來進行分佈式部署。

操作系統準備好後,就需要一些組件了,hadoop比較簡單,只需要ssh和java環境,再加個下代碼的SVN。

先用 sudo apt-get install subversion ssh ant 這個命令,把SSH、Ant和SVN安裝起來。

java環境,可以在網上下載一個JDK安裝包,如:jdk-6u24-linux-i586.bin

安裝直接在目錄下運行./jdk-6u24-linux-i586.bin即可。

然後配置jdk目錄:

先進入安裝目錄 cd jdk-6u24-…

然後輸入 PWD 就可以看到java安裝目錄,複製下來:


Hadoop菜鳥入門之學習筆記


命令行執行:sudo gedit /etc/profile

在打開的文件裡,追加:

export JAVA_HOME=/home/administrator/hadoop/jdk1.6.0_27 //這裡要寫安裝目錄

export PATH=${JAVA_HOME}/bin:$PATH

執行source /etc/profile 立即生效

驗證是否安裝完成,那比較容易了,在命令行下運行 java -version ant svn ssh 看是否找不到命令,如果都能找到,說明OK了。

  1. 下載代碼:

這是個開源的系統,代碼很方便用SVN就可以下載到,版本也很多,在這裡我選擇0.20.2版本,一個是網上好多書都基於這個版本的,另外是看源碼,還是以前點版本吧,後面的版本里面肯定又加了很多。

運行這個命令來下載:

svn co http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.2/

下載完成後,會在當前文件夾內產生一個新文件夾release-0.20.2,這裡面就是代碼了。

為了後面方便操作,把這文件夾重命令一下:

mv release-0.20.2/ hadoop-0.20.2

好了,用圖形界面進入該文件夾,看一看:

Hadoop菜鳥入門之學習筆記

編譯代碼

剛下完的代碼是無法直接運行的,需要編譯一下,但用什麼編譯呢? 編譯前先修改一下build.xml,打開,將裡面的版本號改成:0.20.2,如下:

Hadoop菜鳥入門之學習筆記

看到代碼裡面有個build.xml,這個是典型的用ant編譯用的配置文件,所以直接在命令行裡輸入: ~/hadoop-0.20.2$ant ~/hadoop-0.20.2$ant jar ~/hadoop-0.20.2$ant examples [注意] 編譯時需要聯網,否則在自動下載jar包時會掛掉。 然後屏幕會刷啊刷,等到完成看到下面字符時,也就OK了:

Hadoop菜鳥入門之學習筆記


我們瞭解到,這個hadoop是支持分佈式運行的,每臺機器到時都會來安裝hadoop程序,如果想啟動所有程序怎麼辦? 一臺臺去啟動? 那也太土了, 當然是遠程去啟動咯。為實現這個目標,就得用上SSH了。 SSH是什麼,說白了,這個就是一個遠程登陸器,跟遠程桌面、telnet差不多。在linux上所有操作都可以用命令行來完成,所有SSH也就是一個命令行形式,同時比telnet高級,因為通過了加密通道傳輸信息。 那我們就部署了一臺機器,還要這個SSH嗎? 答案是要的,因為在運行hadoop裡,即使是本機的,裡面也要通過SSH localhost的方式來啟動,這樣代碼統一。 前面不是安裝過SSH了麼,還要配置什麼?SSH正常登陸時,是需要輸入用戶名密碼的,但是當所有的hadoop子服務都受主服務管了後,最好就直接信任了,不要輸入帳號信息,所以我們配置的目的也就是這個。 先試一下,我用SSH登陸當前本機信息:

Hadoop菜鳥入門之學習筆記

可以看到,登陸本機時,也要輸入一下密碼,怎麼辦? SSH是能過RSA加密的,所以有公鑰私鑰的說法,所以,我們先產生一對固定的公私鑰,運行這個ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa命令:

Hadoop菜鳥入門之學習筆記

這裡產生公私鑰,並生成在.ssh文件夾下,於是我們就進入看一下:

Hadoop菜鳥入門之學習筆記

果然,這裡多了兩個文件,id_dsa為私鑰,id_dsa.pub為公鑰 然後再把公鑰複製成authorized_key,即將這個公鑰固定為SSH登陸所用。

Hadoop菜鳥入門之學習筆記

這步很重要,做完這步後,就可以再試一下登陸本機了:

Hadoop菜鳥入門之學習筆記

看,現在再ssh localhost時,就直接進入,沒有再輸入帳號了。 到這裡,SSH配置就成功了。 修改配置文件

在正式運行之前,還要修改一下配置文件才地,這裡具體的配置參數,就不講,葫蘆畫瓢麼,先跑起來,後面再來研究這是為啥: 在代碼的conf文件夾內,就可以找到下面幾個配置文件,分別配置成以下內容:

Hadoop菜鳥入門之學習筆記

Hadoop菜鳥入門之學習筆記

將裡面的JAVA_HOME註釋打開,並把裡面的地址配置正確。

運行

Hadoop是一頭神奇的大象,那我們得站在大象背上說句Hello world了。 進入hadoop目錄: $cd Hadoop-0.20.2 首次運行,需要對namenode進行格式化:bin/hadoop namenode -format 啟動hadoop: bin/start-all.sh 關閉hadoop可以用: bin/stop-all.sh 如果驗證啟動成功呢?有兩種方式

  1. 訪問一下管理頁面看:

Job跟蹤:http://localhost:50030

Hadoop菜鳥入門之學習筆記

NameNode結點:http://localhost:50070

Hadoop菜鳥入門之學習筆記

  1. 用jps看一下有幾個java進程在運行,如果是下面幾個就正常了:
Hadoop菜鳥入門之學習筆記

主要有DataNode NameNode SecondaryNameNode TaskTracker JobTracker這幾個進程,就表示正常了。系統啟動正常後,跑個程序吧。

<code>
$mkdir input
$cd input
$echo "hello world">test1.txt
$echo "hello hadoop">test2.txt
$cd ..
$bin/hadoop dfs -put input in
$bin/hadoop jar build/hadoop-0.20.2-examples.jar wordcount in out
$bin/hadoop dfs -cat out/*


/<code>
Hadoop菜鳥入門之學習筆記

最關健的是,最後輸入:

Hadoop菜鳥入門之學習筆記

輸出這個結果這就表示我們的程序運行成功了。至於這結果是什麼意思,我想看到後大概也猜到了吧。


分享到:


相關文章: