flume+RabbitMQ+Storm实时日志运算处理

一.说明
      通常来说,大数据处理hadoop能够处理绝大部分场景,但是有些需求,比如实时的道路交通情况.实时的订单情况等等,这类需要实时运算处理的,hadoop处理起来就相对麻烦.
      处理实时数据的框架很多,这里采用apache storm,队列的话通常采用kafka,但是因为现有的队列是RabbitMq集群,为了这个在单独搭建一套kafka集群有点浪费资源,因此采用RabbitMQ作为队列.而日志的采集依然采用flume.

二.Storm环境搭建
Storm的工作原理请自行百度,
Strom需要zookeeper,首先安装zookeeper,前文有安装描述.此处略
解压Strom的包.
cd storm/conf
vim storm.yaml

单机配置如下:
storm.zookeeper.servers:
     - "192.168.130.132"

nimbus.host: "192.168.130.132"

storm.local.dir: "/opt/stormDir"


supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

ui.port: 8089  

保存配置

按顺序启动
./bin/storm nimbus &  
./bin/storm supervisor &  
./bin/
storm ui &
jps查看是否启动成功.

拓扑的部署方式参考
http://www.blogjava.net/paulwong/archive/2013/09/11/403942.html

三.从RabbitMq->Storm
1.因为Storm官方不支持RabbitMQ,好在GIT上有前辈们的源码.搞定Storm-rabbitmq.jar(在下方的百度云盘中有) 

2.创建scheme

public class RabbitMqScheme implements Scheme{

@Override
public List<Object> deserialize(byte[] bytes) {
List objs = new ArrayList();
   //直接反序列化为string
   String str = new String(bytes);
   //依次返回UUID,String,Number
//     objs.add(UUID.randomUUID().toString());
   objs.add(str);
//     String numStr = Math.round(Math.random()*8999+1000)+""; 
//     objs.add(numStr);
   return objs;
}

@Override
public Fields getOutputFields() {
return new Fields("str");
}


在拓扑的main方法里面,创建拓扑配置之前加入

RabbitMqScheme scheme = new RabbitMqScheme();
IRichSpout  spout = new RabbitMQSpout(scheme);
ConnectionConfig connectionConfig = new ConnectionConfig("192.168.7.79", 5672, "guest", "guest", "/", 10); // host, port, username, password, virtualHost, heartBeat 
ConsumerConfig spoutConfig = new ConsumerConfigBuilder().connection(connectionConfig)
                                                       .queue("sdk_pay_trans_queue_key")
                                                       .prefetch(200)
                                                       .requeueOnFail()
                                                       .build();
 
好了,接下来在自己的bolt里面写逻辑就行了.



四.从flume-RabbitMQ
1.Flume本身不支持RabbitMQ,同样在GIT上找到前辈们的杰作,不过由于支持的rabbitmq的版本比较老,所以在我调试后,也支持了云盘提供的版本.但是目前只支持exchange类型为direct的队列,即routing-key=queueName的情况.

2.Flume配置如下

a1.sources =  r2
a1.sinks =  k3
a1.channels = c3

a1.sources.r2.type = spooldir
a1.sources.r2.spoolDir = /var/log/flume_spoolDir_for_rabbitmq
a1.sources.r2.deletePolicy=immediate
a1.sources.r2.basenameHeader=true
a1.sources.r2.channels=c3

a1.channels.c3.type = memory
a1.channels.c3.capacity = 1000
a1.channels.c3.transactionCapacity = 200


a1.sinks.k3.type = com.aweber.flume.sink.rabbitmq.RabbitMQSink
a1.sinks.k3.host = 192.168.7.79
a1.sinks.k3.port = 5672
a1.sinks.k3.virtual-host = /
a1.sinks.k3.username = guest
a1.sinks.k3.password = guest
a1.sinks.k3.exchange = mq-exchange
a1.sinks.k3.routing-key = test_aaa
#a1.sinks.k3.publisher-confirms = true

a1.sinks.k3.channel = c3 


配置完毕后保存,往flume监控的文件夹下丢日志文件,可以看到被一行行写入rabbitmq中.


至此,日志从flume->rabbitMQ->storm已经打通.具体示例以后有空会发出来   


需要的包:
http://pan.baidu.com/s/1nvzUxi5  
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值