Chinaunix首页 | 论坛 | 博客
  • 博客访问: 599018
  • 博文数量: 83
  • 博客积分: 5453
  • 博客等级: 大校
  • 技术积分: 894
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-10 13:51
文章分类

全部博文(83)

文章存档

2015年(2)

2014年(1)

2013年(1)

2012年(3)

2011年(14)

2010年(7)

2009年(7)

2008年(12)

2007年(17)

2006年(19)

我的朋友

分类: 服务器与存储

2011-09-26 11:19:02

本次记录hadoop集群的配置和运行

实验环境

三台运行linux的主机或者虚拟机。

ip  192.168.15.62      hostname  U1

ip  192.168.15.63      hostname  U2

ip  192.168.15.64      hostname  U3

安装,将Hadoop软件包放到各机器

典型配置是:

  1. 两个master:NameNode和JobTracker。
  2. 许多slave:slave两个身份,既是DataNode又是TaskTracker。

根据这个配置,容易推断出:

  • NameNode和DataNode是为管理FileSystem(HDFS)存在的;
  • JobTracker和TaskTracker是为管理MapReduce存在的;
  • slave的两种身份显示了Data intensive Scalable Computing的特点。
  • 需要某个配置文件指明节点的角色:master/slave

PS:这个放到配置里面说更合适:)

 

配置

配置文件分两类,分别是:

  1. 只读配置文件,src/core/core-default.xml, src/hdfs/hdfs-default.xml, src/mapred/mapred-default.xml.
  2. 节点自身配置文件,conf/core-site.xml, conf/hdfs-site.xml,conf/mapred-site.xml.

从它们所在的目录,大概猜测出:

  • src/core/*.xml是编译配置;
  • conf/*.xml是运行时配置。

从配置文件name可推断出,hdfs管理文件配置,mapred管理进程配置,core很可能是整体配置。

另外,在conf目录下有masters和slaves文件,用来指明节点的角色。

OK,let’s go.

conf/core-site.xml


    
         fs.default.name
         hdfs://192.168.15.62:9000
    

 

conf/hdfs-site.xml


    
         dfs.replication
         1
    

    
         dfs.name.dir
         /mnt/name1,/mnt/name2,/mnt/name3
    

    
         dfs.data.dir  
         /mnt/data1,/mnt/data2,/mnt/data3
    

 

conf/mapred-site.xml


    
         mapred.job.tracker
         192.168.15.62:9001
    

 

less conf/masters
192.168.15.62

 

less conf/slaves
192.168.15.63
192.168.15.64

上面的配置与手册中“Pseudo-Distributed Operation”一节也很类似,主要是更改hostname为具体的IP地址。

使用IP的地方也可使用hostname,在这种小规模实验中用ip是可以的,这里看个人喜好了。

另外,hadoop在运行的时候,需要使用hostname。看来至少两个开发人员没有很好的交流。

因此需要确保使用hostname各个节点可相互ping通。

 

注意:

  • 配置文件仅在一个节点设置即可。
  • 如果仅在这个节点管理hadoop,配置文件不需要同步到其他节点。

试想,假如配置文件需要同步到所有节点,是不是需要额外增加了系统的开销呢?

 

运行

运行命令参见手册中“Pseudo-Distributed Operation”一节,因为从本质上说与二者运行机制是一样的。

另外前面说过,在配置文件所在的节点运行命令。

  • bin/hadoop namenode –format
  • bin/start-dfs.sh

检查每个节点HADOOP_HOME/logs/*.log,排查错误。

然后重新运行bin/start-dfs.sh

确认没有错误发生后,可运行如下两条命令:

  • bin/hadoop fs -mkdir mydir
  • bin/hadoop fs –ls

ls命令输出如下:

  • Found 1 items
  • drwxr-xr-x   - root supergroup          0 2011-09-26 10:14 /user/root/mydir

这样分布式HDFS成功运行起来了:D

通过web monitor看看吧,浏览器:

在Cluster Summary能看到Live Nodes : 2

查看Live Nodes

hdfs

go on!

  • bin/hadoop fs -put conf mydir/input
  • bin/hadoop fs -ls mydir/input
  • bin/start-mapred.sh
  • bin/hadoop jar hadoop-examples-*.jar grep mydir/input mydir/output 'dfs[a-z.]+'

mapreduce的进度,很有意思:

11/09/26 10:56:43 INFO mapred.JobClient:  map 0% reduce 0%
11/09/26 10:57:02 INFO mapred.JobClient:  map 20% reduce 0%
11/09/26 10:57:08 INFO mapred.JobClient:  map 30% reduce 0%
11/09/26 10:57:11 INFO mapred.JobClient:  map 40% reduce 0%
11/09/26 10:57:14 INFO mapred.JobClient:  map 50% reduce 10%
11/09/26 10:57:17 INFO mapred.JobClient:  map 60% reduce 10%
11/09/26 10:57:20 INFO mapred.JobClient:  map 70% reduce 10%
11/09/26 10:57:23 INFO mapred.JobClient:  map 80% reduce 16%
11/09/26 10:57:26 INFO mapred.JobClient:  map 90% reduce 16%
11/09/26 10:57:29 INFO mapred.JobClient:  map 90% reduce 26%
11/09/26 10:57:32 INFO mapred.JobClient:  map 100% reduce 26%
11/09/26 10:57:45 INFO mapred.JobClient:  map 100% reduce 100%

最后看看结果吧:

  • bin/hadoop fs -cat mydir/output/*
    2       dfs.data.dir
    2       dfs.name.dir
    2       dfs.replication
    1       dfs.server.namenode.
    1       dfsadmin

 

本次结语

hadoop的实现具有常见的特点,因此可以很快的上手使用。

hadoop是典型的分层构架,下层HDFS,上层MapReduce,这也体现在实现和软件管理上。

下次看看HDFS的应用需求,即Hadoop的MapReduce。

阅读(1347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~