分类: 服务器与存储
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软件包放到各机器典型配置是:
根据这个配置,容易推断出:
PS:这个放到配置里面说更合适:)
配置
配置文件分两类,分别是:
从它们所在的目录,大概猜测出:
从配置文件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通。
注意:
试想,假如配置文件需要同步到所有节点,是不是需要额外增加了系统的开销呢?
运行
运行命令参见手册中“Pseudo-Distributed Operation”一节,因为从本质上说与二者运行机制是一样的。
另外前面说过,在配置文件所在的节点运行命令。
检查每个节点HADOOP_HOME/logs/*.log,排查错误。
然后重新运行bin/start-dfs.sh
确认没有错误发生后,可运行如下两条命令:
ls命令输出如下:
这样分布式HDFS成功运行起来了:D
通过web monitor看看吧,浏览器:
在Cluster Summary能看到Live Nodes : 2查看Live Nodes
go on!
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%
最后看看结果吧:
本次结语
hadoop的实现具有常见的特点,因此可以很快的上手使用。
hadoop是典型的分层构架,下层HDFS,上层MapReduce,这也体现在实现和软件管理上。
下次看看HDFS的应用需求,即Hadoop的MapReduce。