flume:

分布式的日志收集系统。
作用就是监控数据

三个组件:
agent=source+channel+sink

  • source:数据源 各种数据源。
  • channel:在sink组件确保数据准确无误的送到目的地之后,暂时存在channel中的数据就会被清除,目的是为了保证数据的安全性。
  • sink:下沉 把数据发送到某一个地方去 可以送到任何地方去。

组件之间的数据传递方式:
整体来说是通过flow(数据流)的形式传递数据。
内部是通过很多个event传递数据。
event是flume数据传递的最小单元
每个event里都包含数据的元数据和真实数据
如果是文本文档的话,每个event都会携带一行数据。

配置文件:
可以有很多个配置文件,每个配置文件都有自己的source和sink。
内容三大模块:
a.对agent和agent里的每个组件进行命名
b.分别对source,channel,sink进行配置
c.各个组件之间通过名字进行连接组合

启动服务:

flume-ng agent --name a1 --conf conf --conf conf/xxx -Dflume.roor.logger=INFO,console &

几种数据的传递方式:
1.socket
2.ftp:文件共享服务器
3.共享数据库
4.消息系统

中间件的好处:
1.系统解耦
2.削峰填谷
3.数据交换
4.异步通知
5.定时任务

kafka:

就是一个分布式的,可分区的,可复制的消息队列
分布式的:数据是存储在集群中的不同节点上
可分区的:同一个主题下,可以对数据进行分区
可复制的:在同一个分区下,由leader和follower保证有设置的副本份数

组成:

  • producer:生产者
  • broker:一个broker就是一个kafka的服务,消息中间件
  • consumer:消费者
  • zookeeper:用来协调生产者和消费者之间的节点的资源调度
  • topic:主题,用来对数据进行分类的依据
  • partition:分区,对同一个主题下的数据进行多分区存储

storm:

纯实时的计算框架

storm和sparkStreaming的区别:

  • 响应时间:
    storm的响应时间为毫秒级别
    sparkStreaming的响应时间为秒级
  • 处理方式:
    storm是纯实时,使用流处理方式。
    sparkStreaming是伪实时,使用微批次处理方式。

应用场景:
如果说场景为对响应时间要求特别高的情况,必须要选择纯实时框架。
如果对响应时间没有特别高需求的话,sparkStreaming是性价比较高的选择

storm几个关键词:

  • 主节点:集群中的负责全局任务的分配的节点,全局只有一个。
  • 从节点/工作节点:集群中具体执行内容的节点,全局可以有多个。
  • nimbus:主节点上启动的守护进程,负责整体的任务调度。
  • supervisor:
    从节点上启动的守护进程,负责分配给他那部分的任务调度
    根据实际情况开启或关闭worker进程。
  • worker:在每个从节点中,启动的执行任务的进程。每个节点可以有多个
  • executer:进程里的线程。
  • task:线程中的并行度。最小的计算单元
  • zookeeper:对于nimbus,supervisor,worker保持心跳机制。
  • topology:拓扑。storm中提交的任务。全局只有一个,不受数据限制。
  • spout:topology中负责发送数据的组件。
  • bolt:
    topology中负责处理数据的组件,每个步骤都是一个bolt
    可以接收spout和其他bold传来的数据。
  • tuple:storm计算过程中的最小的数据单元。
  • task里执行tuple。最小的计算单元处理最小的数据单元。

topology:
拓扑,是storm提交的任务。

内部有两类组件:

  • spout:
    只负责发送数据。可以有多个,但是一般是在最开始的位置。
  • bolt:
    接收spout或者其他bolt传递过来的数据。可以有多个。

执行:
进程:执行topology。
线程:在进程中可以有很多线程,每个线程处理一个spout或一个bolt组件。
并行度:最小的计算单元,处理的是最小的数据单元tuple。

分组:
对于task内的tuple的流动有不同的分组方式:
1.shuffle grouping:随机分组,尽量平均。
2.none grouping:不分组,相当于是随机分组
3.field grouping:按字段分组
4.direct grouping:直接分组
5.all grouping:广播发送
6.global grouping:全局分组