Logstash:
比较偏重于字段的预处理
logstash基于JRuby实现,可以跨平台运行在JVM上
Flume:
偏重数据的传输
Logstash组件:
- 1、Shipper 负责日志收集。职责是监控本地日志文件的变化,并输出到 Redis 缓存起来;
- 2、Broker 可以看作是日志集线器,可以连接多个 Shipper 和多个 Indexer;
- 3、Indexer 负责日志存储。在这个架构中会从 Redis 接收日志,写入到本地文件。
Logstash:
1.插件式组织方式,易于扩展和控制
2.数据源多样不仅限于日志文件,数据处理操作更丰富,可自定义(过滤,匹配过滤,转变,解析......)
3.可同时监控多个数据源(input插件多样),同时也可将处理过的数据同时有不同多种输出(如stdout到控制台,同时存入elasticsearch)
4.安装简单,使用简单,结构也简单,所有操作全在配置文件设定,运行调用配置文件即可
5.管道式的dataSource——input plugin——filter plugin——output plugin——dataDestination
6.有logstash web界面,可搜索日志
7.有一整套的EKL日志追踪技术栈,可收集处理(logstash),存储管理搜索(elasticsearch),图形显示分析(kibana)
8,做到更好的实时监控(插件设置时间间隔属性,对监控的数据源检查更新)
Flume (1.x flume-ng)
1.分布式的可靠的可用的系统,高效的从不同数据源收集聚合迁移大量数据到一个集中的数据存储
2.安装部署比较logstash复杂
3.同样以配置文件为中心 提供了JavaAPI
4.是一个完整的基于插件的架构 有独立开发的第三方插件
5.三层架构:source channel sink
Flume使用基于事务的数据传递方式来保证事件传递的可靠性。Source和Sink被封装进一个事务。事件被存放在Channel中直到该事件被处理,Channel中的事件才会被移除。这是Flume提供的点到点的可靠机制。
6.一个agent可指定多个数据源
Sqoop2 (1.99X)
1. 用于结构化数据源(mysql)与半结构化(Hbase)非结构化(HDFS)数据源之间相互转换,是为Hadoop和关系型数据库相互转换的工具(MYsql orcal postgres 等数据库与HDFS Hbase Hive)利用的是Hadoop的mapreduce技术
2. 分为server和client两部分,server是与所有client连接的接入点,安装在Hadoop client;client 无需Hadoop 数量任意多
3. 访问方式多样化,可用REST API,JAVA API,WEB UI,CIL控制台进行
总结:
Logstash:有ELK 技术成熟 使用场景广泛 数据预处理 带缓存
Flume: 分布式 事务传输 配置复杂 轻量级线程
Sqoop2:Hadoop和关系型数据库相互转换
笔者认为:
***Logstash收集日志的能力很强轻,不限日志来源,不限日志形式,对系统监控,问题分析应该很好,而且对技术要求也不高,相比hdfs,storm什么的而言。
***Logstash有一套完整的日志收集(logstash)、日志存储(elasticsearch)、日志展示分析(kibana),搭建起来非常方便