记录一下在 Mac 上安装和测试 kafka 的步骤。
使用Go 机器学习库来进行数据分析 3 (平均感知器)
这一次,我们使用平均感知器(Average Perceptron)算法来预测美国国会的投票。
[译] Kafka 存储的工作机制
翻译自 Kafka/Confluent 公司的工程师 Travis Jeffery 的文章: How Kafka’s Storage Internals Work。
通过本文我会帮助你理解Kafka是如何存储它的数据的。
对于调优Kafka的性能以及了解broker配置实际是干什么的, 了解Kafka的存储很有用。 我受Kafka的简单性的启发, 用我所学开始实现一个Go的Kafka: jocko。
那么, Kafka存储内部是如何工作的呢?
Kafka通讯协议指南
官方英文版本: A Guide To The Kafka Protocol
中文翻译: watchword 翻译于2016年1月31日,修改于6月17日,基于原文2016年5月5日修改版本(v.106)修改翻译: Kafka通讯协议指南
smallnest 基于原文 Jan 20, 2017版本修改。
如果想深入了解Kafka的通讯协议的话,这篇文章不可不读。感谢 watchword 将原文翻译成了中文,我基于最新版进行了修订,修订和完善翻译中的错误。
Kafka Connect简介
Kafka 0.9+增加了一个新的特性Kafka Connect,可以更方便的创建和管理数据流管道。它为Kafka和其它系统创建规模可扩展的、可信赖的流数据提供了一个简单的模型,通过connectors可以将大数据从其它系统导入到Kafka中,也可以从Kafka中导出到其它系统。Kafka Connect可以将完整的数据库注入到Kafka的Topic中,或者将服务器的系统监控指标注入到Kafka,然后像正常的Kafka流处理机制一样进行数据流处理。而导出工作则是将数据从Kafka Topic中导出到其它数据存储系统、查询系统或者离线分析系统等,比如数据库、Elastic Search、Apache Ignite等。
Kafka Connect特性包括:
- Kafka connector通用框架,提供统一的集成API
- 同时支持分布式模式和单机模式
- REST 接口,用来查看和管理Kafka connectors
- 自动化的offset管理,开发人员不必担心错误处理的影响
- 分布式、可扩展
- 流/批处理集成
Kafka 0.9 发布
confluent的CTO Neha Narkhede女士在11月24日宣布 Apache Kafka 发布0.9版本。confluent是由apache kafka的创建者也就是LinkedIn开发Kafka的那个team成立的一家公司。这个版本提供了相当多的Feature和bug fix,具体的改动可以参看 523 JIRA
以下是0.9的主要的改动:
为豆瓣电影实现Item-based协同过滤的推荐系统
前面的两篇文章分别使用Spark mllib ALS实现了Model-based协同过滤推荐系统和使用Mahout实现了User-based的协同过滤推荐系统。
我们再来回顾一下item-base CF算法的特点:
- 物品数明显小于用户数的场合,否则物品相似度矩阵计算代价很大
- 适合长尾物品丰富,用户个性化需求强的领域
- 对新用户友好,对新物品不友好,因为物品相似度矩阵不需要很强的实时性
- 利用用户历史行为做推荐解释,比较令用户信服
所以item-base挺适合做电影的推荐。当用户浏览某个电影的时候,我们可以推荐给他类似的电影,或者根据用户以前的观影记录,推荐他感兴趣的电影。
本文还是以mahout 非分布式计算的方式实现。因为电影的记录比较少(166条),计算量不是很大。