hadoop 1.2 集羣搭建與環境配置

 

1、虛擬機環境html

見個人另外一篇博客http://www.cnblogs.com/xckk/p/6000881.htmljava

須要安裝JDK環境,centos下安裝JDK可參考:node

http://www.centoscn.com/image-text/install/2014/0827/3585.htmllinux

注意三臺機器均要配置,由於啓動時,namenode會啓動其它機器。apache

 

2、hadoop環境centos

hadoop1.2.1瀏覽器

idk7u79-linux-i586.tar.gzbash

 

3、開始搭徹底分佈式hadoop分佈式

三臺機器,角色配置以下oop

hostname 角色配置
centos1 namenode
centos2 datanode, secondaryNameNode
centos3 datanode

 

一、hadoop配置

   分別在三臺虛擬機內拷貝hadoop-1.2.1.tar.gz,並解壓: tar -zxvf hadoop-1.2.1.tar.gz

   conf目錄文件配置

conf目錄下文件 配置項 備註
core-site.xml

<configuration>

    <property>

         <name>fs.default.name</name>

         <value>hdfs://centos:9000</value>

     </property>

    <property>

         <name>hadoop.tmp.dir</name>

         <value>/opt/hadoop-tmp</value>

     </property>

</configuration>

一、fs.default.name:配置namenode站點地址。須要注意。9000端口是hdfs rpc協議端口,若是從瀏覽器訪問,則是http協議,端口號是50070.例:http://cetnos:50070
二、hadoop.tmp.dir默認配置/tmp/hadoop-${user.name},hadoop文件數據會默認配置在此目錄,因爲tmp目錄,linux重啓後自動清空,所以這裏對hadoop.tmp.dir進行手動指定。

hadoop-env.sh export JAVA_HOME=/usr/local/java/jdk1.7.0_79

配置jdk時在系統配置了JAVA_HOME,可是hadoop不認,必需要在這裏修改爲你如今的路徑。

hdfs-site.xml

<configuration>

     <property>

         <name>dfs.replication</name>

         <value>2</value>

     </property>

</configuration>

lock最大附本數,配置2臺dataNode,此處填2.
masters centos1 master文件用來配置secondaryNameNod, 注意是secondaryNameNode,不是nameNode
slaves

centos1
centos2  (一個節點一行)

slaves用來配置dataNode

 

二、格式化dfs

cd /home/hadoop-1.2/bin/

./hadoop namenode -format    (格式化成功後會在/opt/hadoop-tmp/dfs/name/下生成格式化文件)

 

三、hadoop路徑每臺機器要保持一致

配置完成後,NameNode機器上輸入命令,便可完成hadoopo的hdfs分佈式服務的啓動。

root@centos bin]# ./start-dfs.sh

 

四、啓動後結果

在瀏覽器中輸入http://{NameNode IP}:50070便可訪問配置的hdfs環境

 

4、配置中常見問題

一、JAVA_HOME is not set.

錯誤日誌:

root@centos bin]# ./start-dfs.sh 

starting namenode, logging to /home/alvin/hadoop-1.2.1/libexec/../logs/hadoop-root-namenode-centos.out

centos1: bash: line 0: cd: /home/alvin/hadoop-1.2.1/libexec/..: No such file or directory

centos2: bash: line 0: cd: /home/alvin/hadoop-1.2.1/libexec/..: No such file or directory

centos2: starting datanode, logging to /opt/hadoop-1.2/libexec/../logs/hadoop-root-datanode-centos2.out

centos1: starting datanode, logging to /usr/hadoop-1.2.1/libexec/../logs/hadoop-root-datanode-centos1.out

centos2: Error: JAVA_HOME is not set.

centos1: Error: JAVA_HOME is not set.

centos1: bash: line 0: cd: /home/alvin/hadoop-1.2.1/libexec/..: No such file or directory

centos1: starting secondarynamenode, logging to /usr/hadoop-1.2.1/libexec/../logs/hadoop-root-secondarynamenode-centos1.out

centos1: Error: JAVA_HOME is not set.

 

產生緣由三種:

(1)、JDK未配置

解決方法:配置JDK解決,可參考

http://www.centoscn.com/image-text/install/2014/0827/3585.html

(2)、hadoop在每臺機器路徑不一致,會報JAVA_HOME is not set.問題

該問題首先會想到centos1, centos2兩臺機器JDK環境是否有配置JAVA_HOME,可是查看均已配了JDK環境。

仔細閱讀日誌,發現問題是No such file or directory

centos1: bash: line 0: cd: /home/alvin/hadoop-1.2.1/libexec/..: No such file or directory

centos2: bash: line 0: cd: /home/alvin/hadoop-1.2.1/libexec/..: No such file or directory

解決方法:hadoop在每臺機器配置路徑要一致

(3)、hadoop-env.sh裏面沒有配置JAVA_HOME

解決方法:配置jdk時在系統配置了JAVA_HOME,可是hadoop不認,必需要在這裏修改爲你如今的路徑。

 

分析緣由:

因爲centos1下hadoop路徑在/home/alvin/hadoop-1.2.1/下,centos2與centos3路徑在/opt/hadoop-1.2/下,

啓動datanode或secondaryNameNode節點時,報No such file or directory.

能夠看到centos2與centos3都是按照centos1機器的hadoop路徑去讀取文件的。所以報 No such file or directory

 

二、啓動dfs服務時,jps命令查看,NameNode啓動,DataNode和SecondaryNameNode未啓動。

   防火牆未關,輸入命令service iptables stop關閉三臺機器防火牆

 

三、org.apache.hadoop.security.AccessControlException

解決方法

在 hdfs-site.xml 添加參數:

<property>
        <name>dfs.permissions</name>
        <value>false</value>
  </property> 
</configuration>

 

四、org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /opt/hadoop-tmp/dfs/data: namenode namespaceID = 1165565627; datanode namespaceID = 1468616188

解決方法:以name爲準,將namenode節點上${hadoop-tmp}/hfs/data/current/VERSION文件的namespaceID改成${hadoop-tmp}/hfs/name/current/VERSION文件的namespaceID。同時將datanode節點上的${hadoop-tmp}/hfs/data/current/VERSION文件的namespaceID相應修改

 

五、org.apache.hadoop.hdfs.server.datanode.DataNode: All directories in dfs.data.dir are invalid

發生錯誤的緣由就是hdfs下的data文件夾權限設置錯誤,應爲rwxr-xr-x,所以修改方式以下:

解決方法:chmod 755 /opt/hadoop-tmp/ –R  

 

六、ERROR security.UserGroupInformation: PriviledgedActionException as:alvin cause:java.net.ConnectException: Call to 192.168.95.134/192.168.95.134:9091 failed on connection exception: java.net.ConnectException: Connection refused

java.net.ConnectException: Call to 192.168.95.134/192.168.95.134:9091 failed on connection exception: java.net.ConnectException: Connection refused

at org.apache.hadoop.ipc.Client.wrapException(Client.java:1142)

解決方法:確認IP和端口號是否正確,mapreduce端口號是9001,這裏是9091.因此報錯

 

七、啓動hadoop時,log中出現:java.io.IOException: NameNode is not formatted.

解決方法:初始化namenode 

./hadoop namenode –format

 

秀才坤坤 出品

轉載請註明源連接地址:http://www.cnblogs.com/xckk/p/6124553.html

相關文章
相關標籤/搜索