北游记

早就该写了,与之前的《南游记》对应。

跑到北京参加了QCon,写写感想。这也是老习惯了,我对其他同学也是这样要求的,不管是参加什么规格的会议、看了些什么样的书籍、或者研究了什么新鲜玩意,一定要有总结或分享。这是梳理自己思路的一个过程,你的思考不一定是对的(毕竟人类一思考那啥就发笑),但至少证明有思考过。如果不去思考,很多道理即使摆在你面前你也不会发现,无论那道理多么浅显。
深度思考,真的不只是说说。

还是大数据

QCon其实并不是一个专门的大数据会议,而是综合性的。但纵观下来,大数据仍然热度不减。其实几个热门的主题大家都能想像到,按我自己的感觉,排名大概是这样的:

  1. AI/深度学习。没啥好说的,近几年最火热的主题,虽然我觉得有些泡沫,面临着和前几年大数据一样的问题:技术飞速发展,但炒作概念过多,落地很难。但总体还是看好的。
  2. 大数据。下文详述。
  3. 高并发/高可用/大规模架构。永不过时的主题。

意外的是,没有看到太多区块链的分享。
同行的人感慨到,以前的QCon,讲讲系统、讲讲搜索之类的就可以了。现在不跟什么热门的概念搭上边,都不好意思上去讲。。。

大数据领域,虽然热度不减,但其实也有一些变化:

  1. 从技术角度来讲,越来越规范了,或者说,同质化。以前那种百花齐放(或者说群魔乱舞?)的架构、方案,很少有了。也许已经进入了一个需要“微创新”的时代?
  2. 越来越实时。lambda architecture之类的,只是计算能力不足时的一种妥协。离线与实时的融合,是一个大趋势。
  3. 越来越多的SQL。尽量使用SQL来表达计算逻辑,已是业界共识。根本的好处在于便于优化执行计划,毕竟SQL已经研究了这么多年。但由于SQL不是图灵完备的,一些复杂的逻辑必须辅以UDF。
  4. 越来越偏向于应用。我不是第一次吐槽“落地太难”了,但感觉大家已经慢慢摸索出了一些套路,成功落地的案例越来越多了。说的更大些,是数据文化的落地。而且我们以前所理解的“应用”还是太狭隘,数据无处不在。

如果按所谓的技术成熟度曲线,也许是行业正在慢慢成熟吧,应该是好事。话说每次看到这个曲线,我总是想到生物课上的细菌生长曲线。。。

部分干货

只写写印象比较深刻的几个,我也不会完整复述每个演讲的内容,只是吐吐槽。ppt都在QCon官网上,可以自己去看。

京东的spark on k8s

与Intel合作的。怎么说呢,脑洞真是大。。。话说科技的进步就是来源于脑洞,要敢想,关键人家能把脑洞变成现实。大跃进式的放卫星就算了。

  • 来自Databricks。已经随spark 2.3正式发布。
  • k8s的好处就不说了,在业务系统中其实已经应用的很多了。
  • 本质是为了异构计算,统一的抽象所有的GPU/CPU/存储等资源。更多的用于算法训练、深度学习之类。
    • 并不能替代传统的hive+MR,定位不一样。
  • 但为什么不是用YARN来做这些事呢?我知道的业界一些做法是增强YARN的docker支持,然后在YARN上跑tensorflow/caffe之类。
    • 讲师的一个解释是YARN双层调度的性能损失,这无法否认。但影响面有多大不知道。
    • 另一个可能的原因是和业务系统一样统一用k8s管理,降低运维成本。
  • 传统观点来看,数据本地性是个大问题,但既然是定位于算法、训练,根本就不用care数据本地性。取决于你的workload类型。

阿里的MaxCompute

MaxCompute,就是原odps,在业界也算很知名了。当初大数据刚开始兴起时,BAT各家都有自己的自研框架,似乎只有阿里坚持下来并发展到如今规模,还打赢了内部pk(分别起源于阿里云和电商的两套体系),这份魄力,佩服。
也可能是其他两家发声太少?至少baidu当初是大张旗鼓搞过很多东西的,自研的BigTable什么的。

本次相关的分享有两个,分别是MaxCompute和它对应的运维体系。有点不够接地气,这也没啥办法,太复杂而且全都是自研。
话说去年云栖大会的时候我也去听过MaxCompute,讲师也是同一个人。

  • 自研就是好,可以做各种深层次的优化:索引、缓存、文件格式甚至指令级的优化。
  • 对于各种应用场景和痛点的整理,非常有价值。
  • HBO印象深刻,大家也都认可它的必要性,但不知道咋做的。。。
  • profileing也是印象深刻,也是不知道咋做的。
  • 运维体系超复杂,比被运维的系统还复杂。

链家网的数据平台

对于这个分享,用一个词来形容就是“扎实”。没有黑科技,没有令人眼花缭乱的概念和包装。就是讲构建数据平台的过程中碰到的各种问题和解决方法,从规模和技术上都和我现在面临的情况最像。可惜ppt没放出来。

  • 了解清楚业务和用户,比了解技术和架构更重要,尤其对于中小公司。
    • 印象深刻的是,讲师很清楚自己的数据有哪些(人和房);也很清楚自己的数据会被怎么使用(BI/to C/to B等等);我羞愧的低下了头。。。
    • 这也是业务模式决定的。链家的业务模式注定数据量有限,或者说上限比较低。毕竟房子总不可能9.9包邮。
  • 技术上的问题,倒是都差不多。但链家的平台化起步更早一些。

实时专场

这个专场比较有意思。总共4场分享,分别来自于实时三大流派:databricks的spark streaming、阿里的flink(最近blink很火)、pinterest的Kafka Stream(虽然我觉得跟前两者不是一个量级),还有一个比较另类的来自于美团(下文详述)。三大流派同场争锋,场下的观众们也是煽风点火:“spark streaming相对于flink有哪些优势?”,“为什么要选择flink,而不是上一场讲到的streaming?”,很好玩。可惜的是,这个专场的ppt大多都没有放出来。

  • 说是三大流派,其实我觉得flink会一家独大。
    • kafka就不说了,优点在于简单,缺点也是简单。
    • spark的优势在于批处理和流处理可以部分共用同样的逻辑,但在SQL语义下,这个优势正被弱化。
    • spark的另一个优势是推广做的好,但也正被其他人追赶上来,尤其是blink这种有阿里站台的。
    • 后发优势了解一下?
  • 本来以为会讲spark 2.3新出的continous streaming,结果只是一笔带过。
    • 提到了一个datatricks delta,正在尝试融合离线与实时,感兴趣可以了解。
  • 阿里的ppt非常赞,讲了实时处理中的各种问题:chandy lamport、retraction、exactly-once等,可惜没放出来。
    • 同样也是缺少细节,很多东西只是大概提了下。

美团的SnappyData

非常另类。这个分享来自于美团的酒店团队,是一个纯业务团队。它展示了业务团队是如何看待大数据相关技术、如何确定自己需求、如何选型的,这个思考过程值得深思。在三大流派下场后,安排这样一个分享也许是别有深意:对业务方而言,争论各种引擎的优劣毫无价值。这个演讲的ppt放出来了,我建议每一个数据团队的同学都去仔细看看。

  • 通俗点说,SnappyData就是一个内存数据库。美团的解决方案就是所有数据放内存,然后用SQL去做adhoc。
    • 内存数据库不是个新鲜东西,但在大数据场景下蛮少见。
    • 我提了个问题,如果要查大量数据,比如一年,内存放不下咋整?答案是他们仔细评估过,一年的数据量也不会有多少。。。而且机器成本换人力成本很值。
  • 也许在“内行”看来,这个解决方案很不完美。我们早期也是各种东西乱用:mongo/hbase/cassandra/greenplum之类,导致现在很痛苦。但业务团队就是这样思考的,我们有必要去理解。
  • 平台 vs 业务,通用 vs 专有,长期 vs 短期,想取得平衡很难。“在正确的阶段做正确的事”,说起来很简单,道理大家都明白,但没有通用的解法。

数据应用

上面我也说过,大数据领域越来越重视应用和落地。我们以前所谓的“应用”更多是“在业务上产生价值”,也就那么几种方式:BI、推荐、风控、算法之类的。但其实很多其他领域也是会用到数据的,比如运维(滴滴《数据驱动的风险防范体系建设》),比如测试(腾讯《手Q性能优化的大数据实战》)。本次会议甚至有一个“大数据下的软件质量建设实践”专场。虽然吧,很多在我看来只是跟大数据沾个边,而且很多只是T+1的报表或统计(这在大数据领域是要被鄙视的),但真的能产生价值。只能说以前还是太狭隘。。。

杂七杂八

  • 几场海外的演讲,感觉都收获不大,更像是请来镇场子的。一个java的,讲了些Java9和Java10的新特性;一个kafka的,讲了些kafka的历史和一些基本特性。其实这些东西,随便搜一下就能知道的。
  • kotlin和go的两个演讲,主要关注于协程。这种纯语言特性的分享,还是挺少见的,可惜这两种我都不会。。。
  • 阿里的微服务实践,题目很大但落点比较小。在线btrace印象深刻。

鸡汤时间

写文章要首尾呼应啊。

参加这种会议,会接触各种各样的技术,看到各种各样的点子,但切忌头脑发热。不能落地的idea,都是YY。有一个词:buzzword-driven architecture,就是指这种情况,看到什么新鲜的东西都想拿过来。很多东西可以借鉴,但真的是无法复制。