为豆瓣电影实现User-based协同过滤的推荐系统

协同过滤(Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的信息,个人透过合作的机制给予信息相当程度的反馈(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,反馈不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要,比如浏览信息,收藏,分享,点击等。

阅读全文

使用Spark MLlib给豆瓣用户推荐电影

推荐算法就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西。
随着电子商务规模的不断扩大,商品数量和种类不断增长,用户对于检索和推荐提出了更高的要求。由于不同用户在兴趣爱好、关注领域、个人经历等方面的不同,以满足不同用户的不同推荐需求为目的、不同人可以获得不同推荐为重要特征的个性化推荐系统应运而生。

阅读全文

机器学习算法 Python&R 速查表

原文出处: Cheatsheet – Python & R codes for common Machine Learning Algorithms
在拿破仑•希尔的名著《思考与致富》中讲述了达比的故事:达比经过几年的时间快要挖掘到了金矿,却在离它三英尺的地方离开了!

现在,我不知道这个故事是否真实。但是,我肯定在我的周围有一些跟达比一样的人,这些人认为,不管遇到什么问题, 机器学习的目的就是执行以及使用2 – 3组算法。他们不去尝试更好的算法和技术,因为他们觉得太困难或耗费时间。

像达比一样,他们无疑是在到达最后一步的时候突然消失了!最后,他们放弃机器学习,说计算量非常大、非常困难或者认为自己的模型已经到达优化的临界点——真的是这样吗?

下面这些速查表能让这些“达比”成为机器学习的支持者。这是10个最常用的机器学习算法,这些算法使用了Python和R代码。考虑到机器学习在构建模型中的应用,这些速查表可以很好作为编码指南帮助你学好这些机器学习算法。Good Luck!

PDF版本

阅读全文

Kafka的一个配置参数

Kafka默认的消息大小为1000012,参数的名称为message.max.bytes.

1
2
3
kafka.server.KafkaConfig:
val messageMaxBytes = props.getIntInRange("message.max.bytes", 1000000 + MessageSet.LogOverhead, (0, Int.MaxValue))

但是对于topic来说,这个参数的名称却叫max.message.bytes,和前面的参数的名称很容易弄混。 Kafka应该将这两个参数统一成一个。
因此,如果你想对Boker统一设置的话,你需要在server.properties中设置:

1
message.max.bytes=1000000

如果针对单个的topic设置,你需要:

1
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic ABC --config max.message.bytes=1000000

另外,你还需要为Consumer设置fetch.message.max.bytes
为Boker设置replica.fetch.max.bytes (至少和message.max.bytes一样,最大Int.MaxValue)

stackoverflow针对这个问题有个问答
需要针对Boker和Consumer同时配置:

  • Boker
    1 replica.fetch.max.bytes
    2 message.max.bytes
  • Consumer
    3 fetch.message.max.bytes
    需要重启服务器。
    尤其第二项,如果没有配置,你不会得到任何的异常信息或者警告,很难发现此类问题。
    值设的太大也不好,因为会占用太大的内存用于数据传输(消费或者复制)

LinkedIn运行大规模的Kafka集群

英文原文: Running Kafka At Scale by Todd Palino, Staff Engineer, Site Reliability.
中文翻译: LinkedIn —— Apache Kafka 的伸缩扩展能力 by 袁不语, 社会主义好, 无若, 开心613, fr000, Shawock.

我在转载时根据原文对译文有所改动。

如果数据是高科技的血脉的话,Apache Kafka 就是 LinkedIn 公司正在使用中的心脏系统。我们使用 Kafka 在多个系统之间传递各类数据,它几乎每一天都和各种服务器打交道。这个架构的复杂性,以及架构实践中采用的各种取舍,衍生出一种快速又可靠地传输的大块数据需求。

阅读全文

memcached Java客户端spymemcached的一致性Hash算法

最近看到两篇文章,一个是江南白衣的陌生但默默一统江湖的MurmurHash,另外一篇是张洋的一致性哈希算法及其在分布式系统中的应用。虽然我在项目中使用memcached的java客户端spymemcached好几年了,但是对它的一致性哈希算法的细节从来没有仔细研究过。趁此机会,特别的看了一下它的源代码。

阅读全文

Spark: 大数据领域的新贵

现在谈起大数据几乎等价于谈论Hadoop及其它的生态圈产品。但是现在一个下一代的计算框架已经长大,而且声名显赫。那就是Spark。你或许已经听说过它以及它的诸多好处。
自从发布之日起,Hadoop就被认为是Google大数据工具的等价实现。它帮助很多公司处理先前不可想象的大数据。围绕着它的两个主要部件(HDFS,分布式一致性的文件系统,和MapReduce, 分布式的计算框架), 一堆相关的工具涌现, 补充并提高它的功能。

阅读全文