雨果书斋

拙笔记录生活琐事 微语道出肺腑真言

Kafka在大数据中的应用

技术 0 评 66

Kafka适用大数据处理的原因:

  1. 支持存储任何类型和格式的数据
  2. 使用商业硬件来存储大量数据
  3. 是一个高性能和可伸缩的系统
  4. 将数据存储在磁盘上,可以用来服务不同的数据管道;可用于实时事件处理和批处理
  5. 由于数据和系统冗余,它是高可靠的

管理Kafka的高容量

  1. 高容量的写入或高消息写入吞吐量
  2. 高容量的读取或高消息读取吞吐量
  3. 高容量的复制速度
  4. 高磁盘刷新或I/O

     生产者读取和消费者写入的选择

消息压缩:生产者生成所有数据的压缩类型。压缩类型属性的值为none、GZIP、Snappy或1Z4.

消息batches:此属性特定于异步模式的生产者。小型的batches可以降低吞吐量,将batch大小设置为0将禁用batch大小。不推荐设置大的batch,大的batch会迫使分配更多的内存给生产者,导致内存的浪费。发送到同一个分区的消息被batch在一起,使用请求将它们发送给Kafka brokers,将其持久化到topic分区中。

异步发送:将producer.type的值设置为async,生产者将在内部使用AsyncProducer.—指定后台线程中消息的发送方式是异步的,可以运行生产者以batch的形式push数据,极大地提高broker的性能,但会增加丢失数据的风险。

Linger时间:生产者在可用的时候发送缓冲区,并且不等待任何其他触发器。

Fetch大小:这个feth.message.max.bytes属性是用来设置一个消费者可以读取的最大消息大小。

Kafka消息传递语义

三种类型:

  1. 最多一次(At most once):在这种情况下,消息只会读或写一次。可能导致数据丢失。
  2. 至少一次(At least once):在这种情况下,至少会读或写一次消息,而且它们不会丢失。但是可能存在重复消息。
  3. 正好一次(Exactly Once):这是最有利的传递语义,确保消息只传递一次并且仅有一次,确保消息不丢失且不重复。

大数据和Kafka常见的使用模式

—-作为流数据平台 (常见模式之一)

Kafka数据源:RDBMS、Custom Apps、NoSQL、Search、Real Time Processing、Batch

一旦数据存储在Kafka topic中,它就可以用于数据搜索引擎、实时处理或警报,甚至可以进行批处理。

批处理引擎,例如Gobblin,从Kafka读取书,并使用Hadoop MapReduce在Hadoop中存储数据。实时处理引擎,如Storm可以读取数据。微批处理引擎,例如Spark可以读取Kafka topics的数据,并使用它们的分布式引擎处理记录。

Kafka和数据治理

Kafka的基本数据元素是Topic。

例如使用Apache Atlas和Apache Ranger 定义Kafka的治理框架。

  1. 在Apache Atlas中创建标签(Tag)。每个标签对应于Kafka中的Topic数据元素。
  2. 使用Atlas和Ranger集成,将Atlas中创建的标签同步到Ranger中。
  3. 同步完成后,使用这些标签为用户或应用程序定义授权策略,这些策略将访问Kafka topics.
  4. Ranger也可以用于审计目的。

有用的Kafka指标

  1. Kafka生产者指标
  2. Kafka broker指标
  3. Kafka消费者指标

Kafka生产者指标

响应速度:生产者将记录发送给Kafka broker,当一条消息被写入到一个副本以备请求时,broker确人。

请求速率:请求速率是生产者在给定时间内产生的记录数。

I/O等待时间:生产者发送数据,然后等待数据。

失败的发送速率:这使得消息请求的数量每秒都失败。

缓冲区总字节:这表示生产者在将数据发送给brokers之前可以使用的最大内存去缓冲数据。

压缩率:表示用于topic的批记录的平均压缩率。

Kafka消费者指标

records-lag-max:生产者当前偏移量和消费者当前偏移量之间的计算差值成为record lag.

bytes-consumed-rate:表示消费者每秒消耗的字节数。

records-consumed-rate:定义每秒消费的消息数量。

fetch-rate:表示消费者每秒获取的记录数。

fetch-latency-max:表示获取请求所需的最长时间。

上一篇

0 条评论

请先登录后评论!