Storm相关脚本说明文档

博客公告:(1)本博客所有博客文章搬迁至《博客虫》http://www.blogchong.com/

(2)文章对应的源码下载链接参考博客虫网站首页的“代码GIT”直通车;

(3)更多的相关文章更新,以及代码等,请关注博客虫网站,网站中有技术Q群,以及代码共享链接。

 

该文档为实实在在的原创文档,转载请注明:

http://blog.sina.com.cn/s/blog_8c243ea30101j1e4.html

目录

Storm相关脚本说明文档... 1

1 文档说明... 2

2 相关脚本... 2

2.1 sshFreeLogin.sh. 2

2.1.1 脚本说明... 2

2.1.2 上代码... 2

2.2 optZk.sh. 3

2.2.1 脚本说明... 3

2.2.2 上代码... 3

2.3 monitorNimbus.sh. 4

2.3.1 脚本说明... 4

2.3.2 上代码... 4

3 寻求帮助... 5

3.1 原由... 5

3.2 问题... 5

3.2.1 metaq-client代码... 5

3.2.2 报错... 7

1 文档说明

 

老规矩了,习惯了在写文档前说点什么。写这个文档呢,是因为前几天在群中有人讨论关于nimbus没有自动重启机制,如何保证系统挂掉后重启的问题。刚好有朋友也问到了这个问题,就写了几个脚本,顺便写个文档说明说明。

顺便还写了个集群免登陆的脚本,及集群ZK操作的脚本。免登陆后再执行zk操作脚本,我们就可以在一台机子上启动集群的ZK、停止ZK及查看ZK状态等等。

关于nimbus监控脚本,只需要后台让他执行就行了,他会自动检测nimbus是否挂掉,如果挂掉就会重启他,有点像nimbus守护进程类似的东西,顺便还给他写了monitor监控的log,方便查询。

这些脚本都是原创的哦,刚写出来的,新鲜出炉的。

好了,就说这些了。

有兴趣和我一起讨论相关技术的加入我建的qq群:191321336

我的一些文档都会更新到我的blog上:http://blog.sina.com.cn/huangchongyuan(~_~来关注我吧),有兴趣的去看看,欢迎一起探讨技术。

 

2 相关脚本

 

2.1 sshFreeLogin.sh

 

2.1.1 脚本说明

 

该脚本用于ip之间免登陆设置,在storm集群中,往往很多时候只有一个操作界面,需要登录的其他节点进行操作,设置免登陆后,该操作会变的更简单。

该脚本会有一个ip.list配置列表。

 

2.1.2 上代码

Ip.list:

192.168.2.240

192.168.2.241

192.168.2.242

sshFreeLogin.sh:

#!/bin/bash

 

#author:  chongyuanHuang

#blog:               http://blog.sina.com.cn/huangchongyuan   

#QQ group:      191321336

#E-mail:   874450476@qq.com

 

function Echo() {

         parameter=$1

         name=$2

         if [ $1 -ne 1 ]; then

                 echo "Usage:  $2  ip.list"

                 echo "        please input ip.list for freelogin and password next"

                 exit 1

         fi     

}

 

function LocalSsh() {

         remote=$1

         echo "------------------------------------------------------------"

         echo "Begin to set Local-Remote free login!"

         ssh-keygen -t rsa -P ''

         scp /root/.ssh/id_rsa.pub  $1:/root/id_rsa.pub

         ssh $1 'cat /root/id_rsa.pub >> /root/.ssh/authorized_keys'

         ssh  $1 'chmod 600  /root/.ssh/authorized_keys'

         echo "Local-Remote free login set Ok!"

         echo "------------------------------------------------------------"

}

 

if [ $# -eq 1 ]; then

         num=`awk 'END{print NR}' $1`

         echo 'Set free login ip.list:'

 

         for ((i=1;i<=$num;i++)); do

                   ip=`cat $1 | sed -n ''$i'p'`

                   echo $ip

                   LocalSsh $ip

         done

else

         Echo $# $0

fi

 

2.2 optZk.sh

 

2.2.1 脚本说明

 

该脚本主要是ZK集群操作,配合免登陆设置,可以在一台机子上进行ZK集群的启动,停止及查看状态等操作。该脚本稍微改改就可以用于其它集群类型的操作。代码很简单,可以自己看看。

 

2.2.2 上代码

 

optZk.sh:

#!/bin/bash

 

#author:  chongyuanHuang

#blog:               http://blog.sina.com.cn/huangchongyuan   

#QQ group:      191321336

#E-mail:   874450476@qq.com

 

function Echo() {

         parameter=$1

         name=$2

         if [ $parameter -ne 2 ]; then

                 echo "Usage:  $name ip.list  start/stop/status"

                 echo "        please input ip.list opt"

                 exit 1

         fi     

}

 

function optZk() {

         ip=$1

         opt=$2    

         echo "------------------------------------------------------------"

         echo "Begin to '$opt' '$ip' ZK:"

         ssh $1 '/usr/local/zookeeper/bin/zkServer.sh '$opt''

         echo "------------------------------------------------------------"

}

 

if [ $# -eq 2 ]; then

         num=`awk 'END{print NR}' $1`

 

         for ((i=1;i<=$num;i++)); do

                   ip=`cat $1 | sed -n ''$i'p'`

                   echo $ip

                   optZk $ip $2

         done

else

         Echo $# $0

fi

 

2.3 monitorNimbus.sh

 

2.3.1 脚本说明

 

该脚本用于nimbus的监控,只需后台执行该脚本,该脚本会自动监控nimbus的运行,当检测到挂掉以后,会自动重启,并且会把监控结果以log的形式保存下来。

 

2.3.2 上代码

 

MonitorNimbus.sh:

#!/bin/bash

 

#author:  chongyuanHuang

#blog:               http://blog.sina.com.cn/huangchongyuan   

#QQ group:      191321336

#E-mail:   874450476@qq.com

 

function Init() {

         date=`date +%Y%m%d%H%M%S`

         echo ''$date': Begin monitor nimbus.' > monitorNimbus.log

}

 

function MonitorNimbus() {

         for ((;;)); do

                   num=`ps aux | grep nimbus | grep -v grep | wc -l`

                   if [ $num -eq 0 ]; then

                            date1=`date +%Y%m%d%H%M%S`

                            echo ''$date1': nimbus is down, and restarting!' >> monitorNimbus.log

                            storm nimbus&

                   fi

                   sleep 60

         done

        

}

 

Init

MonitorNimbus

exit 1

 

3 寻求帮助

 

3.1 原由

 

前几天一直在研究metaq,试图往metaq上写数据(已经启动ZK集群,及metaq集群,并且都保证集群启动成功,metaq也配置好了),但代码执行时出错了,纠结了很久。希望有朋友能够帮助我,有能指导的请博客留言,谢谢了。

 

3.2 问题

 

3.2.1 metaq-client代码

 

这是我的metaq写数据的代码:

final MetaClientConfig metaClientConfig = new MetaClientConfig();

final ZKConfig zkConfig = new ZKConfig();

zkConfig.zkConnect = "192.168.2.240:2181";

zkConfig.zkRoot = "/meta";

metaClientConfig.setZkConfig(zkConfig);

 

SendResult sendResult;

final MessageSessionFactory sessionFactory = new MetaMessageSessionFactory(metaClientConfig);

final MessageProducer producer = sessionFactory.createProducer();

                   // publish topic

          final String topic = "meta-test";

          if (producer == null) {

                  System.out.println("producer is null");

          } else {

                  System.out.println("producer is:  " + producer);

          }

producer.publish(topic);

 

fis = new FileInputStream("test.log");

final BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-8"));

String line = null;

while ((line = reader.readLine()) != null) {

        try {

              sendResult = producer.sendMessage(new Message(topic, line.getBytes()));

               if (sendResult.isSuccess()) {

                        System.out.println("Send message successfully,sent to "

                                          + "[" + sendResult.getPartition() + "[");

                 } else {

                        System.err.println("Send message failed,error message:"

                                         + sendResult.getErrorMessage());

                 }

          } catch (final Exception e) {

                e.printStackTrace();

          }

}

 

3.2.2 报错

 Storm相关脚本说明文档

PS:有知道的朋友指导一二,留个言,拜托了~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值