1、虛擬機環境html
見個人另外一篇博客http://www.cnblogs.com/xckk/p/6000881.html,java
須要安裝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-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 |
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