在通過幾天的環境搭建,終於搭建成功,其中對於hadoop的具體設置卻是沒有碰到不少問題,反而在hadoop各節點之間的通訊遇到了問題,並且還反覆了不少遍,光虛擬機就從新安裝了四、5次,可是當明白了問題以後才發現這都是無用功,有了問題應該找具體的解決方案,並非徹底的重裝,這樣不會明白問題是怎麼解決的,除了費時費力沒有多大的用處,接下來就把搭建的過程詳細敘述一下。html
環境配置: 計算機: CPU-I7 2630QM 6G內存 256G SSD 虛擬機: vmware workstation 11 系統: ubuntu 14.04 LTS 節點: 192.168.1.150 master 192.168.1.151 slave1 192.168.1.151 slave2
參考:
http://www.aboutyun.com/thread-7684-1-1.html
http://my.oschina.net/u/2285247/blog/354449
http://www.aboutyun.com/thread-5738-1-1.html
http://www.aboutyun.com/thread-6446-1-1.html
安裝步驟: 1、安裝虛擬機系統(安裝1個便可,其他的能夠經過克隆),並進行準備工做
2、安裝JDK,並配置環境變量 3、克隆虛擬機系統,並修改hosts、hostname
四、配置虛擬機網絡,使虛擬機系統之間以及和host主機之間能夠經過相互ping通。
5、配置ssh,實現節點間的無密碼登陸
6、master配置hadoop,並將hadoop文件傳輸到slave節點
7、配置環境變量,並啓動hadoop,檢查是否安裝成功
一、安裝虛擬機系統,並進行準備工做java
安裝虛擬機系統不用贅述,安裝vmware——新建虛擬機——典型——選擇鏡像——設置帳戶密碼——安裝位置——配置——安裝。node
當虛擬機安裝成功後,默認的是nat模式,不要當即將網絡模式切換到橋接模式下,這時nat模式下應該能夠聯網,先安裝幾個軟件,之後須要用到,固然在橋接模式下也能夠聯網,可是橋接模式是要設置成靜態IP的,侷限性比較大,下載安裝完之後,接下來就不用聯網了。web
#切換到root模式下 #剛開始root是默認不開啓的,能夠利用以下命令對root密碼進行設置
sudo passwd root #如今在root模式先安裝vim,命令以下:
apt-get install vim #安裝ssh
apt-get install ssh #這個步驟是可選的,用於更新,以及將ssh相關都安裝
apt-get install openssh* apt-get update
二、安裝jdk,並配置環境變量apache
1)從oracle下載jdk安裝包,並將安裝包拖入到虛擬機當中ubuntu
2)經過cd命令進入到安裝包的當前目錄,利用以下命令進行解壓縮。vim
tar -zxvf jdk.....(安裝包名稱)
3)利用以下命令將解壓後的文件夾移到/usr目錄下 網絡
#注意,這樣移動到/usr之後就沒有jdk1.8...這個目錄了,是將這個目錄下的全部文件所有移動到/usr/java下,
mv jdk1.8...(文件夾名稱) /usr/java
4)配置環境變量oracle
#切換到root模式下
su - root #利用vim編輯/etc/profile(這個是對全體用戶都起做用的)
vim /etc/profile
#將一下兩句加入到其中,並保存退出
export PATH=$PATH:/usr/java/bin:/usr/java/jre/bin
export CLASSPATH=.:/usr/java/lib:/usr/java/jre/lib
#而後使profile生效
source /etc/profile
#試驗java、javac、java -version
三、克隆虛擬機並修改三個虛擬機的hosts、hostnameapp
1)克隆虛擬機時要注意必定要選擇完整克隆
2)修改hosts(三個虛擬機都要改)
#root下用vim打開hosts
vim /etc/hosts #將如下內容添加到hosts中
192.168.1.150 master 192.168.1.151 slave1 192.168.1.152 slave2
如圖:
3)修改hostname(三個虛擬機都要改)
#root下打開hostname
vim /etc/hostname #分別將每一個虛擬機改爲對應的name(master、slave一、slave2)
四、配置虛擬機網絡
在安裝好虛擬機後,虛擬機有三種模式分別是nat模式、僅主機模式、橋接模式,此處對於此三種模式進行簡單介紹:
nat模式:這是通nat地址轉換共享主機Ip的模式,在安裝好虛擬機後會發現有vmnet8虛擬網卡,這個網卡默認是nat模式,這時nat模式下的虛擬機至關於又組成一個局域網,而vmnet8至關於這個局域網的網關,在這種模式下,虛擬機之間能夠相互ping通,可是不能與主機通訊,由於主機與虛擬機之間有有一個vmnet8網卡。固然經過配置vmnet8網卡能夠實現通訊。
僅主機模式:這種模式沒有地址轉換能力,各個虛擬機之間是相互獨立的,不能相互訪問,每一個虛擬機只能與主機通訊。
橋接模式:這種模式是將虛擬網卡直接綁定到物理網卡上,能夠綁定多個地址,這裏是將網卡設置成混雜模式,而後實現能夠收發多個地址的消息。
本人搭建環境採用的是橋接模式,這種模式擬真性更強一些,雖然有些麻煩。
注意:要將三個虛擬機的ip與主機都處於同一個網段,而後實驗是否能夠Ping通
五、配置ssh,實現節點間的無密碼登陸 (注意關閉防火牆 ufw disable)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2)導入authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3)試驗看是否安裝成功
#查看是否有sshd進程
ps -e | grep ssh #嘗試登陸本地
ssh localhost
4)遠程無密碼登陸
#進入master的.ssh目錄
scp authorized_keys u0@slave1:~/.ssh/authorized_keys_master #u0是個人用戶名 #進入slave一、slave2的.ssh目錄
cat authorized_keys_master >> authorized_keys
注意:第四步要在slave上重複,要使三者都可以無密碼相互登陸,重複完後能夠利用以下命令試驗,第一次須要輸入密碼綁定
ssh salve1(slave2)
注意:個人主機是鏈接的路由無線網絡,我遇到了一個問題,就是在虛擬機網絡重連後master能夠登陸slave2,可是過一會後就發現總是connection refused,就由於這個問題我還從新安裝了幾回,網絡上的方法都試了也無論用,後來發現,原來是個人虛擬機ip與路由局域網中的其餘機器Ip衝突,千萬要保證局域網內的Ip不要和虛擬機的ip衝突
六、master配置hadoop,並將hadoop文件傳輸到slave節點
1)解包移動
#解壓hadoop包
tar -zxvf hadoop...
#將安裝包移到/usr目錄下
mv hadoop... /usr/hadoop
2)新建文件夾
#在/usr/hadoop目錄下新建以下目錄(root)
mkdir /dfs mkdir /dfs/name mkdir /dfs/data mkdir /tmp
3)配置文件:hadoop-env.sh(文件都在/usr/hadoop/etc/hadoop中)
修改JAVA_HOME值(export JAVA_HOME=/usr/java)
5)配置文件:slaves
將內容修改成:
slave1
slave2
6)配置文件:core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.u0.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.u0.groups</name>
<value>*</value>
</property>
</configuration>
7)配置文件:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
8)配置文件:mapred-site.xml
<configuration> <property>
<name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
9)配置文件:yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
10)將hadoop傳輸到slave1和slave2根目錄
scp -r /usr/hadoop u0@slave1:~/
七、配置環境變量,並啓動hadoop,檢查是否安裝成功
1)配置環境變量
#root模式編輯/etc/profile
vim /etc/profile #以上已經添加過java的環境變量,在後邊添加就能夠
export PATH=$PATH:/usr/java/bin:/usr/java/jre/bin:/usr/hadoop/bin:/usr/hadoop/sbin
2)啓動hadoop
#注意最後單詞帶‘-’
hadoop namenode -format start-all.sh
3)查看啓動進程