- 论坛徽章:
- 6
|
各很长时间,各位前辈,遇到了如下问题,第一个已经解决但是不是最优解,第二个有思路但是不知道如何实现,
还希望各位熟悉shell的前辈给些指点,帮助解答第二个,看看第一个还有没有比我的法子更快速简单的,在这先谢谢大家了,thanks~
整体问题如下:有一个文件,需要用户填写需要得worker ID,之后根据填写的ID个数完成如“server读取rver1=ID1,server2=ID2”形式的文件写入,之后将读取的ID个数分发到各个worker节点,如果用过zookeeper的前辈会知道这个过程就是完成zookeeper的自动化配置分配的过程,将这个过程细分分为两个过程,如下:
文件内容如下:
slaves 文件内容
s001
s002
s003
需要实现将上面的内容按照如下写入到文件zoo.cgf:
server1=s001
server2=s002
server3=s003
之后还需要根据server的数目将 每个slaves对应的server$id 传到对应的slave节点上,就是将server1写入名为“id”的文件并传给s001,server2写入名为"id"的文件传到s002,以此类推,实现在s001中可以找到名为id的文件,文件内容为server1,s002上可以找到同样名为id的文件,内容为server2
步骤一,将slaves写入到zoo.cgf
我的实现如下,嵌套循环用的不好,只能用如下比较笨的方法实现,让大家见笑了,同时希望熟悉的前辈给些指点和优化,多谢了。
c.sh脚本内容如下
awk 'END{print NR}' slaves > number
i=1
while [ $i -le `cat number` ]
do
echo server.$i=
let i+=1
done
p.sh脚本内容如下
for zp in `cat slaves`
do
echo $zp
done
之后对两个循环的结果处理合并成如下:
server1=s001
server2=s002
server3=s003
步骤二,分配各个自己的id内容到各个节点
将id分发到各个slave节点,这个虽然有思路,知道传递的方法就是分别将server1传到s001,server2传到s002,但是不知道怎么实现,还希望大家多帮忙,多谢谢。
|
|