大数据在线分析处理的特点
- . 数据源源不断的到来;
- 数据需要尽快的得到处理,不能产生积压;
- 处理之后的数据量依然巨大,仍然后TB级甚至PB级的数据量;
- 处理的结果能够尽快的展现;
以上四个特点可以总结为数据的收集->数据的传输->数据的处理->数据的展现。其中数据的处理一般涉及数据的聚合,数据的处理和展现能够在秒级或者毫秒级得到响应。
针对这些问题目前形成了 Flume + kafka + Storm / Spark + Hbase / Redis 的技术架构
Flume介绍
Flume 专注于大数据的收集和传输,用来解决在线分析处理特点,数据源源不断的到来的问题。类似的大数据开源系统有 Logstash 和 Fluentd 。
三者区别如下:
- Logstash 主要 和 Elasticsearch 、 Kibana 结合使用,俗称 ELK 框架; Logstash 主要负责将数据源的数据转换成 Elasticsearch 认识的索引结构供 Kibana 查询
- Fluentd 当前的使用者已经很少,逐渐被功能更强大的 Flume 代替了
- Flume 能够支持多种数据源并且输出到多种输出源,并且支持多种格式的数据
架构图
架构图中 Source 用来连接输出源,Sink 用来连接输出源,Channel 是 Flume 内部数据传输通道(主要包括 Memory Channel 和 File Channel)。
其中 Source 连接的输入源可以但不限于:
- Avro
- Thrift
- Exec(unix command output)
- JMS (Java Message Service)
- Kafka
- NetCat (可以使用 nc –lk port 测试)
- Syslog
- Custom
其中 Sink 连接的输出源可以但不限于:
- Hdfs
- Hive
- Avro
- Thrift
- File Roll
- Hbase
- ElasticSearch (提供的功能和 Logstash 一样,但是不如Logstash 丰富,大多数时候需要自己构造 ElasticSearch 文档和索引)
- Kafka
- Custom
Flume 也能多个 Agent 相连形成 Agent 链
Flume 也能多个 Agent 进行数据源的合并
Spark 和 Storm 介绍
Spark (Spark Streaming) 和 Storm 专注于将数据按照时间窗口进行聚合和处理。用来解决在线分析处理特点,数据需要尽快的得到处理的问题。所以经常被称作流式处理框架。
两者的区别如下:
- Storm 提供比 Spark 更加实时的流式处理;
- Spark 提供比Storm更加多的服务,Spark 逐渐已经形成类似 Hadoop 的生态圈了。