版本v0.1
系統(tǒng)安裝
環(huán)境說明
用戶管理
ssh服務(wù)端與客戶端設(shè)置
安裝jdk
安裝hadoop
運(yùn)行測試
使用一臺電腦,在該電腦上安裝ubuntu虛擬機(jī),使用兩臺虛擬機(jī)連成一個(gè)集群(可以根據(jù)需要另外擴(kuò)展)。具體配置如下:
1、宿主機(jī):
硬件:(1)cpu:4核4線程 intel i5-2400 3.10Ghz
(2)內(nèi)存:4G
軟件:(1)32位XP系統(tǒng) 最大內(nèi)存識別為3G。
(2)vmware-workstation-9.0.1-894247
2、虛擬機(jī):
硬件:(1)cpu:每個(gè)虛擬機(jī)分配2個(gè)核心1個(gè)線程
(2)內(nèi)存:每個(gè)虛擬機(jī) 512M
(3)磁盤空間:每個(gè)虛擬機(jī)分配40G的磁盤空間。
軟件:(1)ubuntu-12.04版本
(2)jdk版本:jdk-6u31-linux-i586.bin
(3):hadoop版本:hadoop-0.20.203
分區(qū)方案按照默認(rèn)模式下的分區(qū):
可以使用df –l –h命令來查看當(dāng)前磁盤。
使用Ubuntu Server安裝過程還是比較簡單的,就是要注意在進(jìn)行系統(tǒng)分區(qū)的時(shí)候選擇是否對磁盤進(jìn)行劃分。對于雙硬盤的電腦可以嘗試使用軟件raid。
安裝過程中注意選中ssh服務(wù),采用NAT來連接宿主機(jī)的網(wǎng)絡(luò)。
集群中包括2個(gè)節(jié)點(diǎn):1個(gè)Master,1個(gè)Salve,節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互ping通。節(jié)點(diǎn)IP地址分布如下:
機(jī)器名稱 | IP地址 |
Master | 192.168.235.129 |
Salve | 192.168.235.131 |
Salve1 | Null |
Salve2 | Null |
以上兩個(gè)節(jié)點(diǎn)上均是ubuntu系統(tǒng),并且有一個(gè)相同的用戶hadoop。Master機(jī)器主要配置NameNode和JobTracker的角色,負(fù)責(zé)總管分布式數(shù)據(jù)和分解任務(wù)的執(zhí)行; Salve機(jī)器配置DataNode和TaskTracker的角色,負(fù)責(zé)分布式數(shù)據(jù)存儲以及任務(wù)的執(zhí)行。其實(shí)應(yīng)該還應(yīng)該有1個(gè)Master機(jī)器,用來作為備用,以防止Master服務(wù)器宕機(jī),還有一個(gè)備用馬上啟用。后續(xù)經(jīng)驗(yàn)積累一定階段后補(bǔ)上一臺備用Master機(jī)器,另外準(zhǔn)備再加上兩臺slave機(jī)器。
一.如果已有用戶xxx,需要新建一個(gè)用戶hadoop,則可以按照以下操作:
1. 在xxx用戶下運(yùn)行命令groups查看當(dāng)前用戶所屬組,并記錄下來
2. 創(chuàng)建hadoop用戶組 sudo addgroup hadoop
3. 創(chuàng)建hadoop用戶 sudo adduser -ingroup hadoop hadoop
4. 給hadoop用戶添加權(quán)限,打開/etc/sudoers文件:sudo gedit /etc/sudoers
然后再sudoers中給hadoop用戶賦予root用戶同樣的權(quán)限:
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL 保存即可。
二.修改機(jī)器名:
每當(dāng)ubuntu安裝成功時(shí),我們的機(jī)器名都默認(rèn)為:ubuntu ,但為了以后集群中能夠容易分辨各臺服務(wù)器,需要給每臺機(jī)器取個(gè)不同的名字。機(jī)器名由 /etc/hostname文件決定。
1. 打開/etc/hostname文件; sudo gedit /etc/hostname
2. 將/etc/hostname文件中的ubuntu改為你想取的機(jī)器名。這里取master,slave。 重啟系統(tǒng)后才會生效。
三.修改hosts文件(重要)
"/etc/hosts"這個(gè)文件是用來配置主機(jī)將用的DNS服務(wù)器信息,是記載LAN內(nèi)接續(xù)的各主機(jī)的對應(yīng)[HostName和IP]用的。當(dāng)用戶在進(jìn)行網(wǎng)絡(luò)連接時(shí),首先查找該文件,尋找對應(yīng)主機(jī)名(或域名)對應(yīng)的IP地址。
我們要測試兩臺機(jī)器之間知否連通,一般用"ping 機(jī)器的IP",如果想用"ping 機(jī)器的主機(jī)名"發(fā)現(xiàn)找不見該名稱的機(jī)器,解決的辦法就是修改"/etc/hosts"這個(gè)文件,通過把LAN內(nèi)的各主機(jī)的IP地址和HostName的一一對應(yīng)寫入這個(gè)文件的時(shí)候,就可以解決問題。
在master跟slave主機(jī)中打開/etc/hosts文件,sudo nano /etc/hosts。在文件中加入以下內(nèi)容:
192.168.235 .129 Master
192.168.235.131 Slave1
Ip地址可用ifconfig指令來查看。
如果之前沒有選擇安裝SSH服務(wù),則可以使用apt-get install openssh-server來安裝。
修改ssh的配置文件,vi /etc/ssh/sshd_config,取消AuthorizedKeysFile %h/.ssh/authorized_keys的注釋,然后將key文件放在當(dāng)前用戶主目錄的.ssh/authorized_keys文件中。
一般是把自己的公鑰放到這個(gè)文件中。但是如果客戶端是windows的話,會遇到一個(gè)問題,windows下生成的密鑰和linux下生成的不一樣,所以,需要在linux下生成公私鑰,然后將私鑰拷貝到客戶機(jī),并刪除服務(wù)器上的私鑰,利用putty的puttygen.exe導(dǎo)入后重新轉(zhuǎn)換才能使用。具體步驟如下:
1. 在master機(jī)器上生成密鑰對:
首先進(jìn)入到hadoop用戶,執(zhí)行
ssh-keygen –t rsa –P ''
來生成其無密碼密鑰對,詢問其保存路徑時(shí)直接回車采用默認(rèn)路徑。生成的密鑰對:
id_rsa和id_rsa.pub,默認(rèn)存儲在"/home/hadoop/.ssh"目錄下
2、 進(jìn)入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權(quán)文件中,開始是沒有authorized_keys文件的:
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
3、修改文件"authorized_keys"權(quán)限:
chmod 600 ~/.ssh/authorized_keys
4、設(shè)置ssh配置:
用root用戶登錄服務(wù)器修改SSH配置文件"/etc/ssh/sshd_config"的下列內(nèi)容
RSAAuthentication yes # 啟用 RSA 認(rèn)證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認(rèn)證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)
設(shè)置完之后重啟SSH服務(wù),才能使剛才設(shè)置有效。
service sshd restart
退出root登錄,使用hadoop普通用戶驗(yàn)證是否成功。
ssh localhost
5、把公鑰復(fù)制到slave機(jī)器上
(1)、把Master上的公鑰復(fù)制到Slave上
scp ~/.ssh/id_rsa.pub hadoop@192.168.235.131:~/
(2)、在"/home/hadoop/"下創(chuàng)建".ssh"文件夾,并賦予權(quán)限
mkdir ~/.ssh
chmod 700 ~/.ssh
(3)、追加到授權(quán)文件"authorized_keys"
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
(4)、用root用戶修改"/etc/ssh/sshd_config"
具體步驟參考前面Master的"設(shè)置SSH配置",具體分為兩步:第1是修改配置文件;第2是重啟SSH服務(wù)
6、登陸:ssh 遠(yuǎn)程服務(wù)器IP(第一次可能需要輸入密碼,以后就不需要了)
linux下的java有兩種一個(gè)是openjdk一個(gè)sun的。因?yàn)橐恍┰颍?span lang="EN-US">Sun Java 無法從 Ubuntu 的軟件庫里面取得取而代之的是 OpenJDK,不過 OpenJDK 跑某些程式會出現(xiàn)問題所以還是需要 Sun Java 。
安裝過程:
1)首先刪除掉已經(jīng)安裝的openjdk sudo apt-get purge openjdk*
2)sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner"
3)sudo apt-get install python-software-properties
4)sudo apt-get update
5)sudo apt-get install sun-java*
6)sudo apt-get install openjdk-6-jdk openjdk-6-jdk gcj-4.6-jdk ecj default-jdk
7)配置JAVA環(huán)境變量: sudo gedit /etc/environment
在其中添加如下兩行:
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
8)java -version查看不出錯(cuò)說明,成功
所有的機(jī)器上都要安裝hadoop,現(xiàn)在就先在Master服務(wù)器安裝,然后其他服務(wù)器按照步驟重復(fù)進(jìn)行即可。安裝和配置hadoop需要以"root"的身份進(jìn)行。
我們采用的hadoop版本是:hadoop-0.20.203。因?yàn)樵摪姹颈容^穩(wěn)定。最新的alpha版本已經(jīng)很高,但是還是建議采用穩(wěn)定的版本。我是在apache站點(diǎn)直接下載的
(http://www.apache.org/dyn/closer.cgi/hadoop/common/)。
1. 假設(shè)hadoop-0.20.203.tar.gz在桌面,將它復(fù)制到安裝目錄 /usr/local/下
Sudo cp hadoop-0.20.203.0rc1.tar.gz /usr/local/
2. 解壓hadoop-0.20.203.tar.gz
cd /usr/local
sudo tar -zxf hadoop-0.20.203.0rc1.tar.gz
3. 將解壓出的文件夾改名為hadoop;
sudo mv hadoop-0.20.203.0 hadoop
4. 將該hadoop文件夾的屬主用戶設(shè)為hadoop,
sudo chown -R hadoop:hadoop hadoop
5. 打開hadoop/conf/hadoop-env.sh文件;
sudo gedit hadoop/conf/hadoop-env.sh
6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本機(jī)jdk的路徑)
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
7. 打開conf/core-site.xml文件;
sudo gedit hadoop/conf/core-site.xml
編輯如下:property后面需要手工敲
<?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>
8. 打開conf/mapred-site.xml文件;
sudo gedit hadoop/conf/mapred-site.xml
編輯如下property后面需要手工敲:
<?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>
9. 打開conf/hdfs-site.xml文件;
sudo gedit hadoop/conf/hdfs-site.xml
編輯如下:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>
</property>
<property>
<name>dfs.da
<value>/usr/local/hadoop/da
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
10.配置master文件
sudo gedit hadoop/conf/masters
修改為master的ip地址192.168.235.129
11.配置slave文件(master特有)
sudo gedit hadoop/conf/slaves
去掉"localhost",加入集群中所有Slave機(jī)器的IP,每行一個(gè)。
至此配置完成。
1.格式化HDFS文件系統(tǒng)
在"Master. "上使用普通用戶hadoop進(jìn)行操作。(備注:只需一次,下次啟動不再需要格式化,只需 start-all.sh)
hadoop namenode –format
2、啟動hadoop
在啟動前關(guān)閉集群中所有機(jī)器的防火墻,不然會出現(xiàn)datanode開后又自動關(guān)閉
service iptables stop
使用下面命令啟動。
start-all.sh
3、檢測hadoop是否啟動成功
Jps
hadoop dfsadmin -report用這個(gè)命令可以查看Hadoop集群的狀態(tài)。
4、網(wǎng)頁查看集群
1)訪問"http:192.168.235.129:50030"
2)訪問"http:192.168.235.129:50070"
聯(lián)系客服