Storm学习总结(flume+kafka+storm)

Storm学习总结(flume+kafka+storm)

storm是实时流计算用到的一门技术。在学习storm的时候,首先学习了flume和kafka,所以在这里放一块总结一下。flume的核心是把数据从数据源收集过来,然后送到目的地。kafka是一种分布式的消息系统。storm集群可以实时处理数据源传入的数据。

flume

flume为了实现数据的传输,设计了三个部分,source, channel, sink。

source

source负责接收外部传来的数据,并传入channel中,可以通过配置source使其接收不同类型的数据(如http source, exec source, Avro source, Syslog source,自定义source等等),也可以为它配置拦截器,来对数据源进行过滤。

channel

channel的功能是临时存储source传来的数据,再发给sink端。常用的有memory channel和file channel。各有速度和可靠性方面的优缺点。

sink

sink是将传来的数据按照指定的方式写入。常用的类型有HDFS sink, Avro sink, kafka sink等。

配置文件

所有的source, channel, sink配置全都在conf文件夹下进行配置,然后在命令行直接运行该agent即可。要注意,如果使用TCP, UDP这几种source的话,先开启该代理,然后往指定的ip地址和端口下写入内容。使用Avro source创建多层拓扑时也一样。

kafka

kafka是一种分布式的,基于发布/订阅的消息系统。它包括生产者和消费者两部分。kafka集群中的每台机器都是一个broker。

  • 使用kafka的必要性:

    • 如果有些时候访问量激增, 无疑会对后续的处理程序带来极大的压力,甚至有可能丢失数据,所以,使用消息队列,可以作为缓冲,保存下数据供以后的程序处理。
    • 消息队列还提供了异步处理机制,用户可以在想用的时候再从队列中调出数据,然后处理。
    • 消息系统也可以作为一个接口,降低耦合性。
  • kafka的工作原理:

    • 一个topic可以认为是一类消息,首先创建出一个topic,指定分区数目。
    • 每个topic将被分成多个partition,每个partition在存储层面是append log文件。任何发布到此partition的消息都会被追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量), offset为一个long型的数字,它唯一标记一条消息。
    • 然后生产者往该topic下写入数据
    • 消费者可以消费该topic下的数据。
    • 其中,每个消费者都存在于一个group中,发送到Topic的消息,只会被订阅此Topic的每个group中的一个consumer消费。

storm

storm是用来进行流计算的工具。它是一个拓扑结构,定义了数据的源头spout和处理方法bolt。storm集群上,master node上运行着nimbus,work node上运行着supervisor。
使用storm时需要构建一个拓扑,定义spout,bolt,这样就指定了数据的流动顺序和处理方式。

  • storm的并行度:
    • 每个supervisor上运行着若干个worker进程(运行多少个取决于最开始安装时的配置)。
    • 每个work进程中运行着若干executor线程(线程的数量在代码中指定)。
    • 每个executor线程中运行着若干个相同的task(spout或者bolt)。
  • DRPC
    • istributed RPC是由一个” DPRC服务器”协调(storm自带了一个实现)。
      DRPC服务器协调:
      ① 接收一个RPC请求
      ② 发送请求到storm topology
      ③ 从storm topology接收结果
      ④ 把结果发回给等待的客户端
  • trident

    • Trident是在storm基础上,一个以实时计算为目标的高度抽象。
    • 它在提供处理大吞吐量数据能力的同时,也提供了低延时分布式查询和有状态流式处理的能力。
    • Tident提供了 joins, aggregations, grouping, functions, 以及 filters等能力。
  • storm窗口机制

    • 窗口分为滑动窗口和滚动窗口,需要设置窗口大小和滑动间隔即可。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值