前言:
從七月中旬開始大規模學習hadoop平台搭建過程,雖然現在看來,解決很實現的問題並不多,但是對於一個以前沒有接觸過linux、java和雲端運算平台的人來說,確實也花了一段時間。最大的感慨是,各種工具的版本問題,十分重要,Vmware、ubuntu、jdk、hadoop、hbase、zookeeper,任何一種的版本問題都是致命的。
剛開始我是照著劉鵬老師的《雲端運算》第二版做實驗的。裡面貌似很簡單的一句話,我要花整整一天的時間去實現。比如:
1、虛擬機器的使用問題,最新版的Vmware裡,安裝Vmware-tools後,死活出現不了/mnt/hgfs/share目錄,沒有共用資料夾,就沒法搞到各種軟體(雖然現在知道其實虛擬機器直接可以上網下,但剛開始我就認為各種軟體只能通過與主機的共用獲得)我就一直找問題,用盡了各種方法,幾乎對於有Vmware-tools安裝的網頁都被我百度過。最後極端抑鬱,乾脆換箇舊點的Vmware試試,採用了Mware-workstation-full-7.1.1-282343.exe
,換過之後,當在命令列裡 cd /mnt/hgfs 有出現時,那種激動的心情無法言表。但是我沒有意識到,還有更大的問題在後邊等著我。
2、安裝jdk,java環境的配置,其實現在看起來很簡單的問題,就是在/ect/profile檔案裡把我們安裝的各種工具的路徑寫進去而已。但是剛開始一頭霧水的我,總是不小心將路徑寫錯,最後還得一遍遍的反過來修改。
3、關於linux各種檔案的許可權問題。剛開始使用普通使用者,總是提示許可權不夠,最後我懶得使用sudo命令,直接跳入root使用者,一直用它解決問題。而這個習慣,恰恰造成了再後面使用hbase時的巨大問題出現,這是後話。
閑話不扯,進入實驗過程。
使用的各種版本:
1)VMware-workstation-full-7.1.1-282343.exe 建議不要漢化,最新版本有問題
2)ubuntu-10.04.1-desktop-i386.iso
3)hadoop-0.20.2.tar.gz
實驗過程
一、更改root使用者密碼:
sudo passwd root 更改root密碼
su root 進入root使用者
二、安裝虛擬機器工具:
1、mount -o,loop /dev/cdrom /mnt 這句話的意思是把光碟機掛載到/mnt目錄之下
2、cd /mnt 進入到掛載目錄下
3、tar zxvf VmwareTools-8.4.2-261024.tar.gz -C ~
把 VmwareTools-8.4.2-261024.tar.gz解壓到/root目錄下,C大寫
4、./vmware-install.pl 在/root/vmware-tools-distrib目錄下運行安裝檔案
5、一路斷行符號或者yes
6、重啟系統,並且在VM Setting裡去掉對光碟片的關聯,同時設定共用資料夾
7、/usr/bin/vmware-config-tools.pl是設定檔的位置和名稱,進行對共用資料夾的配置,需要用root使用者,仍然是一路斷行符號、yes、no
8、cd /mnt/hdfs/share 存在檔案夾,表示安裝虛擬機器工具成功
三、安裝SSH
sudo apt-get install ssh
四、安裝與配置JAVA
1、在/usr目錄下,建立java檔案夾:mkdir java 需要用root使用者
2、在/usr/java目錄下,運行:/mnt/hgfs/share/jdk-6u26-linux-i586.bin
輸入java javac java -version 版本有資訊
3、安裝vim軟體,方便以後編輯檔案 apt-get install vim (強烈建議安裝,因為vi工具使用起來很不方便)
4、配置java環境:
1)vim /etc/profile 編輯profile檔案
2)在檔案末尾加入如下資訊:
JAVA_HOME=/usr/java/jdk1.6.0_26
JRE_HOME=/usr/java/jdk1.6.0_26/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JAVA_HOME
export JRE_HOME
export CLASSPATH
export PATH
3)編輯完畢 :wq 儲存 退出
五、安裝Hadoop
1、將安裝包 hadoop-0.21.0.tar.gz 拷貝至 /usr 下
cp /mnt/hgfs/share/hadoop-0.20.2.tar.gz /usr
2、/usr目錄下解壓包:tar -zvxf hadoop-0.20.2.tar.gz
解壓完畢,出現檔案夾:hadoop-0.20.2
六、配置Hadoop
1、配置Hadoop環境參數:
vim /etc/profile
加入以下資訊
:wq 儲存 退出
2、reboot 重啟電腦
輸入 hadoop version 出現版本資訊 安裝完畢
3、編輯usr/hadoop2-0.20.2/conf/hadoop-env.sh檔案
vim conf/hadoop-env.sh
七、單機模式
1、在usr/ usr/hadoop2-0.20.2目錄下用root使用者:
2.查看結果 cat output/*
八、偽分布模式
1、hadoop配置:
1)core-site.xml文檔內容,(位置在vim /usr/hadoop-0.20.2/conf/core-site.xml)
2)hdfs-site.xml文檔內容:
3)mapred -site.xml文檔內容:
2、免密碼SSH設定:
1)產生金鑰組:ssh-keygen –t rsa
一路斷行符號,檔案儲存在/root/.ssh裡
2)進入.ssh目錄,執行命令:
cp id_rsa.pub authorized_keys
ssh localhost
3、Hadoop運行
1)格式化Distributed File System,在usr/hadoop2-0.20.2目錄下:
bin/hadoop namenode –format
2)啟動hadoop守護進程,啟動五個進程:
bin/start-all.sh
3)運行WordConut執行個體:
將本地系統中的input目錄複寫到HDFS的根目錄下,重新命名為in,運行Hadoop內建的WordConut執行個體。Out為資料處理完後的輸出目錄,預設為在Hadoop的根目錄下,運行之前必須清空或者刪除out目錄,否則會報錯。
4)任務執行完,查看資料處理結果:
也可以把輸出檔案從HadoopDistributed File System複製到本地檔案系統查看
5)停止Hadoop守護進程。
bin/stop-all.sh
九、完全分布模式
1、配置各個機子的IP地址值:
在這裡,一共設定了三個機子,unbuntunamenode、unbuntu1、unbuntu2
unbuntunamenode:192.168.122.136
unbuntu1配置:192.168.122.140
Unbuntu2配置:192.168.122.141
它們的子網路遮罩都為:255.255.255.0,網關為192.168.122.255。(注意,一旦修改了etho的IP,就無法連上外網)
2、配置NameNode和DataNode的hosts:(最好保持一致)
把unbuntunamenode作為NameNode,配置其/etc/hosts,需要在檔案中添加叢集中所有機器的IP地址機器對應的主機名稱
使用scp命令,將/etc/hosts拷貝到其他節點:
scp /etc/hosts ub1-deskop:/etc
scp /etc/hosts ub2-desktop:/etc
3、SSH配置,為了實現在機器之間執行指令時不需要輸入密碼:
1)在所有的機器上建立.ssh目錄,執行:mkdir .ssh
2)在unbuntunamenode上產生金鑰組,執行:ssh-keygen –t ras
一路enter,就會按照預設的選項將產生的金鑰組儲存在.ssh/id_rsa檔案中
3)在unbuntunamenode上執行:
cd ~/.ssh
cp id_rsa.pub authorized_keys
scp authorized_keys ub1-desktop:/home/grid/.ssh
scp authorized_keys ub2-desktop:/home/grid/.ssh
4)進入所有機器的.ssh目錄,改變authorized_keys檔案的許可許可權:
4、配置Hadoop:
在namenode機子上,確保hadoop已經安裝
1)編輯core-site.xml、hdfs-site.xml和mapred -site.xml
2)、編輯conf/masters,修改為master的主機名稱,加入:192.168.122.136(或者ubn)
3)編輯conf/slaves,加入所有slaves的主機名稱,即ub1、ub2
192.168.122.140
192.168.122.141
4)把namenode的設定檔複製到其他機器上
scp –r hadoop2-0.20.2 ub1-desktop:/usr/
scp –r hadoop2-0.20.2 ub2-desktop:/usr/
5、Hadoop運行
格式化Distributed File System:bin/hadoop namenode -format
啟動Hadoop守護進程:bin/start-all.sh
並用jps命令檢測啟動情況:/usr/java/jdk1.6.0_26/bin/jps
6、測試wordcount案例
1)將本地的input檔案夾複製到HDFS根目錄下,重新命名為in:
bin/hadoop dfs –put input in
2)運行案例:
bin/hadoop jar hadoop2-0.20.2-examples.jar wordcount in out
3)查看處理結果:
bin/hadoop dfs –cat out/*
4)停止Hadoop守護進程
bin/stop-all.sh
7、HDFS裡的一些常用命令:
1)刪除HDFS根目錄下的檔案:bin/hadoop dfs –rmr in
2)bin/hadoop dfsadmin –help 能列出當前所支援的所有命令
3)bin/hadoop dfsadmin –report查看namenode日誌
4)關閉安全模式:
bin/hadoop dfsadmin –safemode leave
5)進入安全模式:
bin/hadoop dfsadmin –safemode enter
6)負載平衡:
bin/start-balancer.sh
7)基準測試:
bin/hadoop jar hadoop2-0.20.2-test.jar TestDFSIO –write –nrFile 20 –filezize 200