零拷贝技术通过DMA技术将文件内容复制到内核模式下的Read Buffer中。不过没有数据被复制到Socket Buffer,只有包含数据的位置和长度的信息的文件描述符被加到Socket Buffer中。DMA引擎直接将数据从内核模式中传递到网卡设备。这里上下文切换变成了2次,也只经历了2次复制过程就从磁盘中传送出去了。
……继续阅读 »
在spark源码阅读之shuffle模块①中,介绍了spark版本shuffle的演化史,提到了主要的两个shuffle策略:HashBasedShuffle和SortedBasedShuffle,分别分析了它们的原理以及shuffle write过程,而中间的过程,也就是shuffleMapTask运算结果的处理过程在spark源码阅读之executor模……继续阅读 »
根据 KafkaConsumer 类上的注释上来看 KafkaConsumer 具有如下特征:
在 Kafka 中 KafkaConsumer 是线程不安全的。
2.2.1 版本的KafkaConsumer 兼容 kafka 0.10.0 和 0.11.0 等低版本。
消息偏移量与消费偏移量(消息消费进度)
Kafka 为分区中的每一条消息维护一个偏移量,即……继续阅读 »
根据 KafkaProducer 类上的注释上来看 KafkaProducer 具有如下特征:
KafkaProducer 是线程安全的,可以被多个线程交叉使用。
KafkaProducer 内部包含一个缓存池,存放待发送消息,即 ProducerRecord 队列,与此同时会开启一个IO线程将 ProducerRecord 对象发送到 Kafka 集群。
……继续阅读 »
读写一个文件之前,得一层层目录找到这个文件,以及做一堆属性、权限之类的检查。写新文件时还要加上寻找磁盘可用空间的耗时。对于小文件,这些时间消耗的占比就非常大了。
……继续阅读 »
spark streaming源码解读之基于贯通
……继续阅读 »
本讲内容:
a. updateStateByKey解密
b. mapWithState解密
……继续阅读 »
自定义类编写完成后后,将jar包拷贝到每个broker的CLASSPATH下,比如kafka的libs目录下。在MySQL中插入几条用户信息,然后尝试以这些用户的身份来连接Kafka(为方便起见,测试阶段可以先不要开启ACL),我们会发现,MySQL中的用户可以连接,而写在配置文件中的用户无法连接,说明这个插件达到了预期的效果,增删用户不需要重启了。
……继续阅读 »
Apache Kafka由著名职业社交公司LinkedIn开发,最初是被设计用来解决LinkedIn公司内部海量日志传输等问题。Kafka使用Scala语言编写,于2011年开源并进入Apache孵化器,2012年10月正式毕业,现在为Apache顶级项目。
Kafka是一个分布式数据流平台,可以运行在单台或者多台服务器上部署形成集群。它提供了发布和订阅功能……继续阅读 »
在一个Kafka集群中如何选择topics/partitions的数量,针对kafka 1.1.0以及之后的版本,建议单台broker上partition数量不超过4000, 整个集群partition数量不超过2000,000,主要原因还是上面讲过的controller选举和controller重新选举partition leader的耗时。
……继续阅读 »