hadoop 集群中 同步配置文件

来源:互联网 发布:php b2b2c 编辑:程序博客网 时间:2024/06/09 19:07

在集群配置中,经常遇到的问题:

1、修改了namenode上的配置文件了,但是忘记把所有文件copy到所有的节点上,导致参数不起作用,或者根本就产生错误

2、修改了namenode上的配置文件了,手动一个一个的copy到所有的节点上,如果节点较少,则问题不大,如果节点比较多,那可能问题就来了,中间是否有漏更新的,且也耽误时间

基于以上两个问题,就需要用到rsync工具,当集群启动的时候,自动将配置文件以选定的master 为base 同步到所有的节点

实现以上功能就要开启hadoop-env.sh 中一下两个选项

1、HADOOP_MASTER 这个选项是指定master以及其base路径

加入我们设置如下:server1:/home/$USER/hadoop-1.0.4 那所有的节点在启动的时候都会并行从指定的节点 同步配置文件,那问题就产生了,我们的集群很大,是否会把master压垮 ,导致主节点瘫痪.为避免产生这样的问题,需大量下面第二个参数

2、HADOOP_SLAVE_SLEEP 这个选项设置为一个时间段,如0.1 表示0.1秒,这样主节点会在相继调用两个工作节点的指令的间隙主动休眠一段时间间隔,


但上面两个选项起作用的前提是SSH 必须是完好配置的,比如其他节点访问server1 本身就需要输入密码,那集群启动rsync的时候就会报错,无法完成同步不。

如下:

server2: rsync fromserver1:/home/hadoop/hadoop-1.0.4
server2: Permission denied, please try again.
server2: Permission denied, please try again.
server2: Permission denied (publickey,password).
server2: rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
server2: rsync error: unexplained error (code 255) at io.c(463) [receiver=2.6.8]

所以ssh 是前提。