2023-176,#每日一悟每日进步##大数据#
数据采集解决方案
1、Flume
分布式、可靠的数据采集工具,可以有效地收集、聚合及传送大量的事件流数据。
包括三种组件:Source、Channel和Sink,Source是采集源,常见有Avro、Thrift、JMS、Kafka和HTTP等;Channel类似缓存,像一个队列,可以方便地将同一个Source复制成多个队列,以发送到不同出口;Sink是采集出口,常见的有HDFS、Hive、HBASE和Kafka等。
2、Logstash
提供了丰富的输入和输出插件来对接不同的数据源和协议,且有Filter机制,可以在数据采集过程中嵌入很多处理逻辑。
组件结构与Flume类似,包括input、filter和output三种,input常用有File、syslog、redis、beats等;filter常用有grok、mutate、drop、clone、geoip等;output常用有elasticsearch、file、graphite、statsd等。
3、Kafka Connect
Kafka出品公司Confluent针对数据采集组件推出的产品。专注于将外部数据写入Kafka或将Kafka数据输出到外部数据源,因捆绑性较强和成熟度问题,使用人不多。
同时支持分布式模式和单机模式,自动化offset管理,支持rest接口。模型的核心是Task,一项工作会被分割成多个task,分发到各个worker中执行。
4、Camel
基于规则的消息路由引擎,为企业应用集成而设计的工具,可扮演万向接头的角色,让数据和消息在不同的系统间流转和交换。
采用URI描述各种组件,包含HTTP、ActiveMQ、JMS、JBI、SCA等。
5、直接API上传
最后一种就是重新造轮子,客户端直接采用接口将信息发送给服务端,服务端接收信息并保存在文件或数据库。
部分程序员可能会喜欢这种实现方案,因为简单可控,而且在数据采集节点少(小于50个),采集周期长(分钟级或小时级)不会有性能问题,但扩展性较差。
个人偏好于Logstash,搭配Openresty/Nginx后可以成为简单方便且高性能的采集解决方案。