12、与大数据技术关系最紧密的就是云计算,您曾在Amazon 云计算部门工作过,能否简单介绍一下亚马逊的Redshift框架吗?
我在 Amazon 云计算部门工作过,所以还是比较了解 AWS,总体上成熟度很高,有大量 startup 是基于其开发,比如有名的 Netflix,Pinterest,Coursera。Amazon 还是不断创新,每年召开 reInvent 大会推广新的云产品和分享成功案例,在这里面我随便说几个:像 S3 是简单面向对象的存储,DynamoDB 是对关系型数据库的补充,Glacier 对冷数据做归档处理,Elastic MapReduce 直接对 MapReduce 做打包提供计算服务,EC2 就是基础的虚拟主机,Data Pipeline 会提供图形化界面直接串联工作任务。
Redshift,它是一种(massively parallel computer)架构,是非常方便的数据仓库解决方案,就是 SQL 接口,跟各个云服务无缝连接,最大特点就是快,在 TB 到 PB 级别非常好的性能,我在工作中也是直接使用,它还支持不同的硬件平台,如果想速度更快,可以使用 SSD 的,当然支持容量就小些。
13、Linkedin都采用了哪些大数据开源技术?
在 Linkedin,有很多数据产品,比如 People you may like, job you may be interested, 你的用户访问来源,甚至你的 career path 都可以挖掘出来。那么在 Linkedin 也是大量用到开源技术,我这里就说一个最成功的 Kafka,它是一个分布式的消息队列,可以用在 tracking,机器内部 metrics,数据传输。数据在前端后端会经过不同的存储或者平台,每个平台都有自己的格式,如果没有一个 unified log,会出现灾难型的 O(m*n) 的数据对接复杂度,如果你设定的格式一旦发生变化,也是要修改所有相关的。所以这里提出的中间桥梁就是 Kafka,大家约定用一个格式作为传输标准,然后在接受端可以任意定制你想要的数据源(topics), 最后实现的线性的 O(m+n) 的复杂度。对应的设计细节,还是要参考设计文档。这里面主要作者 Jay Kreps,Rao Jun 出来成立了 Kafka 作为独立发展的公司。
在 Linkedin,Hadoop 作为批处理的主力,大量应用在各个产品线上,比如广告组。我们一方面需要去做一些灵活的查询分析广告主的匹配,广告预测和实际效果,另外在报表生成方面也是 Hadoop 作为支持。如果你想去面试 Linkedin 后端组,我建议大家去把 Hive, Pig, Azkaban(数据流的管理软件),Avro 数据定义格式,Kafka,Voldemort 都去看一些设计理念,Linkedin 有专门的开源社区,也是 build 自己的技术品牌。
14、谈一谈Coursera在大数据架构方面和其他硅谷创业公司相比有什么特点?是什么原因和技术取向造成了这些特点?
Coursera 是一个有使命驱动的公司,大家不是为了追求技术的极致,而是为了服务好老师,同学,解决他们的痛点,分享他们的成功。这点是跟其他技术公司最大的区别。从一方面来说,现在还是早期积累阶段,大规模计算还没有来临,我们只有积极学习,适应变化才能保持创业公司的高速成长。
Coursera 作为创业公司,非常想保持敏捷和高效。从技术上来说,所有的都是在基于 AWS 开发,可以想像随意启动云端服务,做一些实验。我们大致分成产品组,架构组,和数据分析组。我把所有用到的开发技术都列在上面。因为公司比较新,所以没有什么历史遗留迁移的问题。大家大胆的使用 Scala 作为主要编程语言,采用 Python 作为脚本控制,比如产品组就是提供的课程产品,里面大量使用 Play Framework,Javascript 的 backbone 作为控制中枢。而架构组主要是维护底层存储,通用服务,性能和稳定性。
我在的数据组由 10 多人构成,一部分是对商业产品,核心增长指标做监控,挖掘和改进。一部分是搭建数据仓库完善跟各个部门的无缝数据流动,也用到很多技术例如使用 Scalding 编写 Hadoop MapReduce 程序,也有人做 AB testing 框架, 推荐系统,尽可能用最少人力做影响力的事情。其实除了开源世界,我们也积极使用第三方的产品,比如 sumologic 做日志错误分析,Redshift 作为大数据分析平台,Slack 做内部通讯。而所有的这些就是想解放生产力,把重心放到用户体验,产品开发和迭代上去。