hadoop-分布式安装及报错分析

hadoop-分布式安装及报错分析

 1. 本人在虚拟机中安装了三台centos ,做了一个全分布式的hadoop集群,在网上有很多文章,大多都是一样,如果出错了,也不知道去哪里查,在此我也是试了好几天才试出来,在此把出错的地方记录下来,以便以后来反搭环境时有用。

1.安装SSH并配置无密码login ,这个在此不介绍,见另一blog,或网上有。

在此说明,我的三个centos ip为:

192.168.18.130  master 

192.168.18.131   s131

192.168.18.132   s132

.在三台centos 中的 vi /etc/hosts 文件中只配置 

hadoop-分布式安装及报错分析_第1张图片

注意:把上面的127.0.0.1的前三行注释掉,如果有的话。这个对以后的启动时,在日志文件中会有报错,奇怪的报错,先去掉。

2. 在/etc/hosts 中的 master名,要与hostname相同,在/etc/sysconfig/network中的名子一样,如果是很一次配置完后,用 source /etc/sysconfig/network 或重login 一下 。

这个如果配不对的话,在后面  hadoop  namenode -format 时,会报错, unkonw host,会有一个:

 

04.STARTUP_MSG: Starting NameNode  
05.STARTUP_MSG:   host = java.net.UnknownHostException: localhost.localdomain: localhost.localdomain  
06.STARTUP_MSG:   args = [-format]  
07.STARTUP_MSG:   version = 0.20.0  

3. 在三台centos 中,都做同样的操作。

4. 在三台centos 中,建相同的账号如hadoop ,都归到同一个组hadoop中去。

账号: hadoop 的主目录为:/home/hadoop/ 中。

最好都用同一样账号,这个网上说也可以不用同一个账号,但可能会有问题,要输密码之类的,所以在局域网上,最好在所有的机器上,建相同的账号,配置SSH无密码登陆。

注意,配置ssh 时有个权限要求,网上有的没有讲到,我之前试了,如果权限过高,过低,远程的话,要输入密码,见另一blog .

5. 下载hadoop安装包,放到此账号的主目录下,如/home/hadoop/hadoop1.2下,

这里,网上都直接放在账号的主目录下了,猜想,也是权限的问题,放在另的目录下,因为在格式化hdfs时,会自已建立一些目录,如果放在别的目录下,会报权限不足。所以最好放在账号的主目录下。

6.修改配置文件,conf/core-site.xml

<?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://192.168.18.130:9000</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <!--<value>/hadoop/dfs/tmp</value>-->
   <value>/home/hadoop/tmp</value>
 </property>
</configuration>

 以上标红色的,一定在用IP地址,用master(机器名)不行,网上有的说行,我在启动后,导致

http://192.168.18.130:50030/jobtracker.jsp

State: RUNNING         /////////// INITIALIZING  开始都是 initializing 装态,但所有的服务都能正常启动,注意去查看 logs/里面的日志 用 ll -tr 对文件的时间排序,用cat 查看日志文件,里面有很一些报错。
2. 对于 <value>/home/hadoop/tmp</value>
目录最好配一个,最好放在账号的主目录下,不用先建好,它会自动新建的。如果放在其它的目录下,还对对账号hadoop 赋权限 改变目录的所属者和所属组

 

再配置mapred-site.xml 。

<?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>192.168.18.130:9001</value>
 </property>
</configuration>

 定位jobtracker的主节点,这里最好也要用IP 地址,之前用的是master有问题 。

修改 hdfs-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
 <property>
   <name>dfs.replication</name>
   <value>2</value>
 </property>
<!-- <property>
   <name>dfs.name.dir</name>
   <value>/hadoop/hdfs/name</value>
 </property>
 <property>
    <name>dfs.data.dir</name>
    <value>/hadoop/hdfs/data</value>
 </property>
-->
</configuration>

  dfs.replication  这是hdfs 的复杂数,还不清楚,这里的2 表示我这里有两台 slave机器,如果你有100台slave机器,1台master,这里就可以写成100,表示备份的数量。

下面可以单独配置hdfs 格式化的目录,如果不配置的话,它默认的目录在/home/hadoop/tmp/dfs下 ,当然,也可以配一个单独的目录,最好也配置在主目录下,如/home/hadoop/name   /home/hadoop/data ,

如果配在其它目录下,要先建好,改变所属者,chown   chgrp   等。

 

6. 再修改 conf/hadoop-env.sh  ,这个文件中,只配一下JAVA_HOME,就行了。

7.修改conf/masters 如:

master
#192.168.18.130

 这里可以用主机名,

conf/slaves :

s131
s132
#192.168.18.131
#192.168.18.132

 和上面一样。

 

8 .修改完后,再把整个文件用 scp 到另两台slave的此相同账号的主目录下如:

scp  -R /home/hadoop/hadoop1.2/    hadoop@s131:/home/hadoop/

scp  -R /home/hadoop/hadoop1.2/    hadoop@s132:/home/hadoop/

 

9. copy 完后,再格式化namenode  用:

bin/hadoop   namenode  -format 

如果没有报错成功的话,再用:有报错的话,就报一个UnKnowHost的话,见上面。

bin/start-all.sh  启动。

用这个命令时,它会把主从上的所有节点服务都启动。在master上启动  namenode secondnamenode jobtracker. 在  slave 中有:datanode   tasktracker 服务。

猜想:主master是怎么启动从机上的服务呢?

      1.可能是和账号有关,都是同一个账号,主目录一样,

      2. 整个hadoop1.2放的位置一样。都在 主目录下如: /home/hadoop/hadoop1.2/下,

     3. 启动master后,再启动slaves 上的服务,就是找到和主master上相同的位置下去启动从slaves 上的服务。

只是猜想,目前还不清楚。

 

启动好后,在主master 可以用:

bin/hadoop   dfs  -ls 

[hadoop@master hadoop1.2]$ bin/hadoop  dfs -ls
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2014-01-08 15:12 /user/hadoop/in
drwxr-xr-x   - hadoop supergroup          0 2014-01-08 15:11 /user/hadoop/out
drwxr-xr-x   - hadoop supergroup          0 2014-01-08 15:13 /user/hadoop/out1

bin/hadoop  fs  -mkdir  out2   新建,它还有很多命令。

用:[hadoop@master hadoop1.2]$ bin/hadoop  dfsadmin  -report    查看启动是否正确,如果都为0表示启动有问题,查看日志。
Configured Capacity: 8553406464 (7.97 GB)
Present Capacity: 6522089472 (6.07 GB)
DFS Remaining: 6521745408 (6.07 GB)
DFS Used: 344064 (336 KB)
DFS Used%: 0.01%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.18.131:50010
Decommission Status : Normal
Configured Capacity: 812650496 (775 MB)
DFS Used: 65536 (64 KB)
Non DFS Used: 722128896 (688.68 MB)
DFS Remaining: 90456064(86.27 MB)
DFS Used%: 0.01%
DFS Remaining%: 11.13%
Last contact: Wed Jan 08 16:44:06 CST 2014


Name: 192.168.18.132:50010
Decommission Status : Normal
Configured Capacity: 7740755968 (7.21 GB)
DFS Used: 278528 (272 KB)
Non DFS Used: 1309188096 (1.22 GB)
DFS Remaining: 6431289344(5.99 GB)
DFS Used%: 0%
DFS Remaining%: 83.08%
Last contact: Wed Jan 08 16:44:06 CST 2014


[hadoop@master hadoop1.2]$
或用:

 

http://192.168.18.130:50030/jobtracker.jsp

hadoop-分布式安装及报错分析_第2张图片

查看,如果状态不是RUNNING  ,就有问题,查看日志。

用 bin/hadoop  dfs  -ls  .  或不加.  查看dfs

这样,整个分布式的hadoop  就启动好了。

测试示例,bin/hadoop   jar   hadoop-example-1.2.0.jar  wordcount  in  out3

这个 in 目录要先建一个,out3  不用新建,它会自已建,建了反而会报错。

bin/hadoop  dfs -mkdir   in  建立 dfs  目录。

再用 bin/hadoop   dfs -ls  out3/  查看里面的文件,有一个:

-rw-r--r--   2 hadoop supergroup       1306 2014-01-08 15:13 /user/hadoop/out1/part-r-00000
查看此文件即可:

[hadoop@master hadoop1.2]$ bin/hadoop dfs -cat  out1/part-r-00000
就可以查看里面的内容。

 注意:

 要把三台机器的防火墙 都关闭,否则也会有问题。

用chkconfig   iptables  --list  查看:

[hadoop@master hadoop1.2]$ chkconfig  iptables --list
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
如果有  on 的用

chkconfig  --level  2345  iptables off
这个命令,要用root 用户去操作。

 

用此命令

bin/hadoop dfsadmin -report
启动好后,多试几次,在后台可以还在运行,状态由INITIALIZING --------------  RUNNING  需要几十秒的时间。

你可能感兴趣的:(hadoop)