在VMware Workstation的Ubuntu下安裝和配置Hadoop與Ganglia
相信大部分朋友對Hadoop肯定不陌生,它是一個開源的分布式計算框架,主要由MapReduce、HDFS、Hbase這幾個核心部分組成。Hadoop作為雲計算的基礎平台,使用它的人越來越多,對於一般人而言,要想搭建真實的集群環境是比較難的,因此想要體驗Hadoop,只有在虛擬機中搭建環境了。Hadoop集群環境運行起來之后,實時的獲取集群的運行情況是比較重要的,因此需要一款監控工具來進行監控。Ganglia是一個開源的監控平台,可以用它來對Hadoop進行監控,今天就來講一下如何在Ubuntu下搭建Hadoop環境以及如何利用Ganglia來監視集群運行情況。
一.安裝VMWare Workstation和Ubuntu
從網上下載VMWare Workstation和Ubuntu,在這里我用的是VMWare Workstation 8.0.4和Ubuntu 12.04.2(Ubuntu 10貌似很多更新源都停止服務了,所以這里采用Ubuntu 12,注意Ubuntu 12要求vmware版本在8.0以上),相關安裝教程可以參考這篇博文:
《手把手教你用VMWare安裝Ubuntu》(注意他這篇文章在分配磁盤空間時是立即分配的,我建議最好 把那個選項取消掉,否則在創建虛擬機的時候要等很長時間)
(立即分配所有磁盤空間取消掉)
VMWare下載地址:http://www.itopdog.cn/utilities-operating-systems/virtual-machine/vmware-workstation.html
ubuntu 下載:http://mirrors.163.com/ubuntu-releases/或者http://mirrors.sohu.com/ubuntu-releases/
安裝好Ubuntu后,由於ubuntu 12采用的是gnome 3的界面,反映比較慢,建議用回以前的經典界面gnome 2.方法:
需要安裝gnome-session-fallback軟件:
在命令行下輸入
sudo apt-get intall gnome-session-fallback,安裝完之后,點擊右上角的“設置”圖標,選擇“Log out”,然后就出現登錄初始界面了,點擊 小扳手 圖標,選擇 gnome classic之后重新輸入密碼登錄,以后默認就采用經典界面了。
重新進入系統之后,發現界面就發生了變化:
注意在使用的時候最好先shutdown(關閉)系統,再關閉虛擬機的電源,以免造成系統文件意外丟失。
二.安裝配置Hadoop
1.安裝VMWare Tools
安裝了VMWare Tools后,可以在宿主機和虛擬機之間直接拷貝文件。安裝方法如下:
先運行命令:
sudo apt-get install build-essential
然后選擇:
就會彈出VMWare Tools所在的文件夾,然后右鍵VMWare Tools.tar.gz,copy到Home目錄下。
再打開Terminal,輸入解壓命令:
解壓完成之后,進入解壓目錄,進行安裝:
安裝過程中根據提示不斷回車或者輸入“yes”或者“no”即可。
當出現如下界面時,表示安裝成功:
之后重啟系統就可以直接在宿主機和VM之間互相復制粘貼文件了。
2.安裝JDK
由於Hadoop是用Java語言編寫的,運行時必須要有java環境,因此需要安裝JDK。
首先去官網下載JDK安裝包,下面是下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
下載下來之后,先進入到/usr/lib目錄下,建立文件夾java,然后拷貝jdk到java目錄下,先賦予可執行權限,再直接解壓進行安裝:
等待片刻安裝完之后,輸入命令
sudo gedit /etc/profile
來配置環境變量,把下面代碼加入到文件末尾(注意路徑里面的JAVA_HOME根據個人安裝路徑而定):
export JAVA_HOME=/usr/lib/java/jdk1.6.0_45 export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
保存退出之后輸入source /etc/profile使更改生效,再將安裝的jdk設置為系統默認的jdk,依次輸入以下命令:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/java/jdk1.6.0_45/bin/java" 300 sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/java/jdk1.6.0_45/bin//javac" 300 sudo update-alternatives --config java sudo update-alternatives --config javac
注意前2條命令的數字300前面的那個路徑根據個人jdk安裝路徑而定。
最后輸入java -version,若出現版本信息則安裝成功。
3.安裝和配置Hadoop
先從Hadoop官網或者鏡像網站上下載Hadoop的相應版本,下面是下載地址:
http://archive.apache.org/dist/hadoop/core/
我下載的是hadoop-0.20.203.0rc1.tar.gz,然后直接復制粘貼到ubuntu的Desktop上,再在/usr目錄下建立hadoop文件夾,
將hadoop-0.20.203.0rc1.tar.gz文件直接解壓到到/usr/hadoop目錄下。
解壓之后,需要配置系統環境變量:
運行命令 sudo gedit /etc/profile
添加如下內容(注意HADOOPHOME是自己的hadoop-0.20.203.0rc1.tar.gz文件解壓所在路徑):
export HADOOPHOME=/usr/hadoop/hadoop-0.20.203.0 export PATH=$HADOOPHOME/bin:$PATH
添加完之后source /etc/profile,以保存更改。
然后需要更改hadoop文件夾的所屬者,將所屬者賦予當前用戶,我的當前用戶是zwl(這個步驟很重要,否則集群運行時會提示權限不夠),輸入下面這個條命令(后面的zwl表示當前用戶名,/usr/hadoop表示要修改的文件夾):
sudo chown -hR zwl /usr/hadoop
接下來需要配置/usr/hadoop/hadoop-0.20.203.0/conf/hadoop-env.sh文件:
在該文件中添加內容:
export JAVA_HOME=/usr/lib/java/jdk1.6.0_45
最后需要修改/usr/hadoop/hadoop-0.20.203.0/conf/目錄下的core-site.xml、hdfs-site.xml、mapred-site.xml這三個文件:
三個文件的內容修改為下:
core-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
在進行這些配置之后需要安裝ssh,依次輸入命令
sudo apt-get install ssh
sudo apt-get install rsync
完成之后輸入命令
ssh localhost
如果沒有提示錯誤則安裝成功(默認的.ssh文件夾在 /home/用戶名/ 這個路徑下,它是隱藏文件,快捷鍵Ctrl+H可以顯示隱藏文件),然后需要為ssh設置免密碼登錄和設置權限,依次輸入下面幾條命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
完成之后再輸入ssh localhost如果不需要輸入密碼的話則配置ssh免密碼登錄成功。
現在就可以啟動hadoop集群了:
先進入到目錄/usr/hadop/hadoop-0.20.203.0命令下,輸入命令進行格式化:
bin/hadoop namenode -format
然后啟動集群:bin/start-all.sh,,如果提示以下信息則表示安裝成功:
關閉集群可以通過命令bin/stop-all.sh來關閉。
hadoop集群啟動之后就可以向它提交作業了,一般提交作業先需要將輸入文件上傳到HDFS,再將整個作業進行提交:
以自帶的wordcount程序為例:
先進入到hadoop目錄下面,輸入命令:
bin/hadoop dfs -put /usr/test.txt /home/testin
這條命令要注意兩個參數:/usr.text.txt 是需要單詞計數的源文件所在路徑,/home/testin是HDFS讀取輸入文件所在路徑
然后就可以提交了:
bin/hadoop jar hadoop-examples-*.jar wordcount /home/testin /home/testout
這條命令主要注意后面兩個路徑,第一個路徑是輸入所在路徑,第二個路徑是作業執行的輸出結果路徑。
至此hadoop集群的安裝和配置已經完成,接下來需要安裝和配置Ganglia
三.安裝和配置Ganglia
1.安裝ganglia-monitor ganglia-webfrontend gmetad
運行命令 sudo apt-get install ganglia-monitor ganglia-webfrontend gmetad進行安裝。
安裝過程中會彈出提示讓重新啟動apache2,選擇“Yes”:
完了之后會提示配置ganglia-webfrontend,選擇“Yes“:
在這個過程會自動安裝rrdtool,php這些東西,安裝完成之后,需要進行一些配置:
先需要配置gmetad.conf,輸入命令
sudo gedit /etc/ganglia/gmetad.conf
如果里面存在
datasource "my cluster" localhost
則不用更改,否則添加進去
接着配置gmond.conf,輸入命令
sudo gedit /etc/ganglia/gmond.conf
找到cluster塊,將name設置成 "my cluster"。
然后分別重啟gmetad和gmond:
sudo /etc/init.d/gmetad restart
sudo /etc/init.d/ganglia-monitor restart
接下來需要配置apche2下的httpd.conf文件,輸入命令:
sudo gedit /etc/apache2/httpd.conf
將 ServerName localhost:80 添加進去保存(若有則不用添加)。
再將默認的ganglia-webfrontend文件夾復制到apache的www目錄下,輸入命令:
sudo cp -r /usr/share/ganglia-webfrontend /var/www/ganglia
然后重啟apache,輸入命令:
sudo /etc/init.d/apache2 restart
現在打開瀏覽器,在地址欄輸入http://localhost/ganglia就可以看到ganglia的首頁了。
ganglia安裝成功之后,就需要進行一些配置讓它來監控hadoop,這里主要修改/usr/hadoop/hadoop-0.20.203.0/conf/目錄下的
hadoop-metrics2.properties文件,將這個文件的最下面六行注釋去掉,改成:
namenode.sink.ganglia.servers=239.2.11.71:8649 datanode.sink.ganglia.servers=239.2.11.71:8649 jobtracker.sink.ganglia.servers=239.2.11.71:8649 tasktracker.sink.ganglia.servers=239.2.11.71:8649 maptask.sink.ganglia.servers=239.2.11.71:8649 reducetask.sink.ganglia.servers=239.2.11.71:8649
保存關閉之后就可以對hadoop集群進行監控了。
注意我這里所有的配置都是針對hadoop的偽分布式模式的,偽分布式模式就是Namenode和datanode都在一台機器上,模擬成分布式。
關於hadoop和Ganglia的配置就講到這里了,若有地方有問題,最好查閱官方文檔。