「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

技术人攻略访谈:当数学家遇上大数据

2014 年 7 月 08 日

本文首发于 Gracia 的《技术人攻略》微信公众账号,经作者本人推荐分享至 InfoQ 中文站。《技术人攻略访谈》系列已经在 InfoQ 上开辟专栏,我们会定期挑选好的访谈在这里分享。

本期内容原载于 2013 年 12 月,本期受访嘉宾陆丹峰是 2014 全球架构师峰会(ArchSummit)大数据专场出品人

嘉宾介绍与导读

@陆丹峰,大数据领域创业者。思维严谨,凡事讲求效率,习惯性地寻找最快、最优美的解决方案,关注事物的本质……北大数学系的 7 年时光显然在他身上烙下了深深的印记。正是由于这些特质,当下流行的“大数据”在他眼里并不难,阳光底下无新事,只要掌握了底层的原理和数学知识,一切就会像庖丁解牛般游刃有余。

他曾用半年时间完成了一篇 SCI 索引文章(SCI 索引是博士毕业的标准),守着横溢的才华不挥霍那不是浪费吗!于是毕业的时候打着创业的幌子玩了半年游戏,游戏没做成,却发现不能再这么玩下去了。再后来的日子,他奋起直追。曾先后几次从无到有搭建技术团队,在上家公司,他负责搭建并管理近百人的研发团队,及公司核心产品线的架构与研发。可他心里清楚,团队再大,也是为了实现别人的梦想,而一直以来,他都想要追寻自己的梦。

终于还是辞职了。他看好大数据处理的未来,创业方向是基于社交媒体的流式数据加工和处理平台。对于这个曾经的数学家来说,大数据的算法复杂度是可以计算的,而创业则要面对更多的变量,在寻求优美架构的背后,还需要很多商业上的支撑。见面那天,他的日程安排得很紧张,下午刚参加完微软孵化器的面试,晚上还要继续见人。采访完成后,我们一起吹着冷风,步行从中关村去北大,二十分钟的路程,他一直在和客户做电话沟通。创业公司刚起步,为了团队能继续追梦,他不得不接一些算法优化方面的项目,在理想和现实间寻求平衡。过了这么多年,他早已不再像毕业时那般心高气傲,而是更加沉稳和实际,脚踏实地的追寻梦想。

技术人攻略:听说你大学 7 年都在北大,能简单介绍一下求学过程吗?

陆丹峰:我本科和研究生都在北大,专业是数学。研究生的方向是图像处理,毕业前用了半年,完成了一篇 SCI 的索引文章(SCI 索引是博士毕业的标准)。论文的内容是关于曲面重建,通过采集到的零散的点,去掉噪音,把原有的场景和形状还原出来。当时非常疯狂,导师在美国,我在中国。每天大概 7 点去实验室,12 点甚至 1 点回宿舍,半学期就完成了从理论到建模的工作。

05 年毕业的时候导师想让我跟他去美国做研究,而我对互联网很感兴趣,想留在国内创业,所以连简历都没有写。当时创业气氛没有现在这么浓厚,北大毕业生这样做的比较少。

于是联合了另外两个本科同学打算做网游,怎么做呢?当时想的是要先玩好游戏才能做游戏。正好魔兽世界特别火,我们仨都沉浸在其中。半年里每天除了吃饭睡觉,就是打游戏,最后游戏没做成,却发觉不能这么玩下去了。

现在回想,这半年是一种很特殊的人生经历,可是这个过程中失去了非常多的东西。选择创业没有错,但当时的我们太心高气傲,不管是对市场、对怎么做这件事情和对自身,都没有一个足够清晰的定位和认知。如果能重新再来一次,我应该会做不一样的选择。

技术人攻略:第一次创业失败之后又干了什么?

陆丹峰:第一次创业失败之后,仍然还是想创业,跟着一个同学的前领导,开始做大型网站的质量分析和诊断。比如说一些国家机关的网站,做得非常庞大,我们就想办法帮它做优化,检查页面上是否有断链、提升访问速度、做 SEO 优化等。由于发展方向不是我喜欢的,所以 07 年离开了。

这个时候我感觉需要进入大公司学一些东西,补充自己在认知体系、经验方面的欠缺。正好日本电通成立了 Digital Marketing 部门,我加入进去负责整个 IT 部门和 IT 团队的搭建,工作内容一方面是公司内部 IT 的运维,另一方面是精准营销产品的开发,主要是广告数据的分析产品。

在互联网营销这个领域做了两年多以后,遇到 AdMaster 的负责人闫曌。AdMaster 专注于做网络广告的效果监测,刚拿了风投,需要加强研发团队,我们就一拍即合在一起了。本来研发团队都在上海,我去了后就开始有北京研发团队了。在电通,IT 属于支持部门,发挥的空间也比较少。AdMaster 是一家广告技术公司,可以有很大的成长空间。

我在 AD 的两年半里,从无到有建立了北京研发团队,重构了广告监测产品的底层并主导了基于社会化媒体的数据分析产品。但我骨子里还是喜欢自己创业,给人打工是帮别人实现梦想,就算挣几万块钱一个月,也无法完全支配自己的生活。

技术人攻略:现在自己创业做什么方向呢?

陆丹峰:我比较看好大数据和大数据处理的未来,我们正在做一个基于社交媒体的流式数据加工和处理平台,实时对社交数据做各种各样的加工,可以应用到精准营销、企业公关预警、行业趋势预测、竞品分析等领域。在数据获取到以后,我们可以在毫秒级别实现数据的实时处理及呈现。

这种对数据的需求,现在看来可能只是大企业愿意花钱,很多中小企业甚至个人没有办法去享受这种数据服务,一方面是因为服务太贵,另一方面是现在市面上的产品还达不到客户的需求。但是如果可以把这个服务变得非常方便,把收费的模式变得非常灵活,中小企业或个人都会有相应的需求。例如,我想买一个东西,特别希望了解背后的信息和评价。但是这些信息得靠我花时间去挖掘,未来通过我们的服务,瞬间就能把这些信息全部展现出来。

技术人攻略:社交网站如新浪微博的活跃度在下降,会不会对产品造成影响?

陆丹峰:不会。我们其实是做一个数据处理的架构,针对不同的平台会有不一样的数据获取方式,和数据源的关系不大。除了社交媒体之外,我们还会抓取一些视频媒体、电商媒体的数据。永远不要为数据担心,因为数据在五年以后,你不知道它会有什么样的变化。五年以前我们有这么多数据吗?根本没有。你现在觉得拿不到什么数据,以后的数据会越来越多。

技术人攻略:你们的系统在数据的获取、清洗、处理、呈现这几个环节,哪块你感觉比较有技术挑战?

陆丹峰:技术挑战是在流式处理的环节里,要加入很多的元素进去,通过数据之间的关联关系增强数据。如何增强呢?当从社交平台上拿到某一条数据的时候,里面可能有一个 ID 及这个 ID 说了什么话。但是并不知道 ID 背后的这个人是什么样的,我们会增强它。首先我们会找到 ID 背后是什么样的人,把性别、年龄,或者其他的数据算出来,这是一部分增强;第二是把他说的这句话做语义分析,让这条信息获得更多的含义,比如说包含什么样的主题和情感。

对于不同网站的数据,我们还考虑到数据之间的 Map 映射,通过 Cookie、帐号、或者用户信息做关联匹配。比如说在微博上的用户名、邮箱、生日等信息,可以和豆瓣上的信息一起做相似度匹配,计算出来是否是同一个用户。

做大数据分析的门槛,一方面是要有构建大型系统的经验。大型系统有非常高的并发,非常大的数据量,要能预见到问题在什么地方,在什么样情况下有什么样的问题,用什么样解决方案,这个难点已经把大部分人挡在外面了。第二个难点,要能够运用数学知识。大数据涉及的机器学习、自然语言处理都逃不过数学,算法里的分类、聚类、预测、回归,无非都是数学。在什么样的场景下,用什么样的数学模型,调一个什么样的参数,这又把好多人挡在外面。

技术人攻略:之前参加业界的一个会,讨论关于组建一个大数据团队需要多少钱。来自电商企业的一个技术经理认为,30 个人左右的团队,加上几十台机器,一年至少需要投入一千万。你怎么看这个问题?你们团队有几个人?

陆丹峰:需要几个人跟你做的事情和跟用什么样的人有关,Instagram 1.5 亿用户的时候,技术团队才 6 个人。如果一个人能力抵几个人,那要不了那么大的团队。我在上一家公司搭建了完善的大数据离线和流式处理系统,每天大概有十几亿数据量的采集,50 个 Hadoop 节点,可真正负责核心数据采集和 Hadoop 运维的人不超过四个。

对大公司来说人多好办事,可我觉得小而美反而会更好。Google 的 Analytics 这个产品,最初始的原型就是一个印度人开发的。人不在于多,而在于精。你用什么样的方式去解决这个事情决定了时间和成本,有很多问题的解决方案有很多,但有一条方案有可能是最合适的、最省时间的、最便宜的,但是往往很多人找不到这样的方法。你能根据自己的经验和知识构建出好的解决方案,你就值得比其他人获得更多的回报。

我们团队加上我自己才四个半人,一个产品经理、一个做大数据的、一个算法工程师,半个是我们的在校实习生。他们的技术和知识面都非常广,并且数学功底都比较深。

技术人攻略:大数据技术很火爆,市场究竟需要具备什么技能的大数据人才?

陆丹峰:市场肯定是缺大数据处理的人才的,但我说的是“人才”。现在也有培训公司在做大数据培训,但培训出来的那不叫人才,叫技术工人。培训公司教的就是 Hadoop 怎么搭、MapReduce 怎么写,这种东西其实用不着培训,善学的人看看网上的资料就可以做了。真正的人才是理解数据的人,核心在于掌握大数据处理的思维方式。分布式处理技术老早之前就有了,自己写一套架构就可以实现,只不过 Hadoop 架构让这种服务变得非常便捷和廉价。

大数据的思维跟平常处理数据的思维不一样。几个重要的变化包括:用全量数据代替采样、通过寻找相关性代替寻找因果关系、拥抱杂乱无章的数据。这几点总结来自《大数据时代》那本书,引用一下。

采样的方法很难保证随机性,而且一旦采样采错了,最后的结论就是失之毫厘,谬以千里。用全量数据则没有这个问题。直接的因果关系往往难以找到,而相关关系比较容易挖掘,并且相关性也多种多样,比如强相关弱相关、正相关负相关、线性相关非线性相关等,都是我们日常中要经常遇到的。第三是使用各种各样的杂乱无章的数据,例如 PC 的、手机的、穿戴式设备的、脑电的,及线下的数据,你要想办法把他们揉杂在一起。数据越多,你描述一个东西就变得越丰富,越有可能接近真实的情况。

技术人攻略:对于想进入大数据领域的人,除了思维上的变化,在技能上需要做什么准备?

陆丹峰:技能方面最重要的是理解两点,第一是跟底层操作系统相关的方方面面,第二是数据处理的一些基本算法。

现代的技术逃脱不了操作系统相关的知识,分布式的算法也是一样,无非是把一些任务拆解分到不同的机器上,让不同机器上的数据在本机运算,然后再传回去而已。当你对操作系统各项东西都理解了,比如内存、进程、IO 都弄清楚了,你就是一个很好的架构师,在当前技术领域里就没什么太大的难事,大数据在你面前就灰飞烟灭了。

市面上很多技术人员对 IO 的原理都搞不清楚,IO 模型有几种,Windows 用什么样的模型,Linux 用什么样的模型,一台机器如何应对那么多的请求访问,高并发到底怎么实现,一个请求怎么产生的,在服务端怎么处理的,最后怎么返回给用户的,整个的环节操作系统是怎么控制的……而且很多小朋友对于算法复杂度,也是搞不清楚的。我实现一个东西,最低的算法复杂度是多高,都是可以计算出来的。

这就是你的知识体系问题,我们的教育体系在教的时候,没有特别好地让学生把这些做 IT,做互联网最基本的知识学到脑子里。一些人在写代码的时候,用的逻辑简直非常可笑,不是严谨的,不是最精简的,不是一个合理的逻辑,只是实现了一个功能而已。为什么这些人找不到很好的方式去提升自己?或者学了一门新的语言就很得意。其实这一点意义都没有,语言可以在一天之内就学会,但如果不去关注这个语言为什么会产生,这门语言解决的问题是什么是没用的。他们的思维方式,需要经过磨炼才能够达到一个新层面。

第二就是数据处理的一些最基本的算法,做互联网要用到的算法包括分类、聚类、回归、协同过滤、推荐等。至少要去学一学,去了解一下,在什么情况下,我应该用什么样的算法去实现一个什么样的东西,这些都是在做数据处理的时候非常重要的。

技术人攻略:你先后几次搭建新的技术团队,这个过程困难吗?你挑人的时候看重哪些方面?

陆丹峰:搭建新团队的过程一般需要一两个月,因为搭建之前就对团队的目标和所需的技能心里有数了。核心团队主要来自于一些志同道合者,已经建立了非常好的信任关系,所以比较容易一起共事,在这个基础上再慢慢寻找其它成员。

上一家公司的研发团队接近 100 人,我面过几百个人。挑人的时候我主要看两方面。第一是人品、态度和为人处事,品格要端正,待人接物要懂礼貌。因为一旦要去做一些大的事情,必然要求这个人是很大气的,一个团队的短板,决定了一个团队能走多远,一个大气的人,一个心胸宽广,一个很沉着冷静的人,必然能做大事。而且往往在危机的关头,他也知道怎么去做,他也能挺过去。

第二点这个人一定要足够的聪明,学东西一定要足够的快,这方面通过交流过程中观察他的思维和逻辑来判断。通过一个人说话的方式,组织语言的方式,基本可以看出他平时怎么思考,他有没有在思考,他以前有没有思考过这些问题。

举个简单的例子,比方说我会问:你是怎么学语言的?有些人会说,就是把语法看一遍,习题做一做,然后就上手开始做东西,这些人往往有可能就是把一个经验用了好几年。另外一个人会说,我要先去了解这门语言,它是怎么产生的,为什么存在,它的特性有哪些,它适用于哪些场景,它有什么样的数据结构,它是一个函数式语言,还是面向对象的语言。如果面试者跟我谈这些,这个人的思维模式就对路子了,说明他在更高的层面上去看这件事,这种人往往具备较强的解决问题的能力。创业团队要面临着很多特殊的情况,不可总是让老大冲在前面,每个人都要有解决问题的能力。一个人的思维模式就代表了他是否具有处理问题的能力。

我会从各个层面去了解候选人,反而技术问题会谈得非常少,因为技术都是可以教的,但为人处事,或解决问题的能力是很难教的。一个热爱运动的人身上往往会有拼搏精神,有兴趣爱好说明他能长期坚持做一件事情。我现在的团队人,每个人都有自己的爱好,但是唯一最重要的一点,他们都有一颗善良的和包容的心。当然,在上家公司招聘的人里,有 10% 的人还是招错了。百分之一百把人看准了,这是不可能的。

招聘的时候还遇到有一类人,是来自大公司的求职者。大公司的毛病往往在于,一个人就是一颗螺丝钉,这些人往往只会一个工具,在公司只做一件事情,工资还不低。他们换工作的原因是觉得无聊,必须要成长,不能在一个地方做两三年都做同一件事情。但是想摆脱这种困境需要做好准备,没做好准备怎么往上跳呢?所以在大公司工作一定要注意提升自己的视野和技能,这对长期成长来说,是非常重要的事。

技术人攻略:你在广告领域做了这么多年,从行业大趋势和技术两方面,这个行业从你 08 年进去到现在有什么样的变化?

陆丹峰:从 08 年开始,在线广告变得越来越火,这中间经历了视频网站、SNS、微博、电商的崛起,广告在这里面扮演了很重要的角色,每年有几百亿的市场在里面。虽然跟传统的广告相比还是很小的一块,但它的比重在变大,并且形式变得丰富多样,不仅仅是图片、文字、声音,还有地理位置,很多新东西在进入广告这个领域。互联网广告不停改善的目标,一方面是把营销变得更精准,另一方面是把广告变得不是那么突兀,而是以一个非常的自然的状态呈现。

但中国互联网有很多急功近利和不太好的地方,比方说做广告监测的时候,我们发现很多媒体都在作弊;还有就是媒体间竞争越来越激烈,同质化严重,例如视频网站的内容同质化,但慢慢地大家也在走差异化道路了;另外对于怎样避免广告干扰用户,怎样避免隐私被过渡使用,这是需要我们全行业去解决的。大家应该联合起来建立一套标准,把用户服务好,而不是想着瓜分用户、抢用户、不停骚扰用户,这样只会把这个行业毁掉。

技术的演变并没有什么特别的新的东西,但是技术在逐渐的被模块化和标准化。现在构建一个产品,已经可以根据业务的场景,用开源的服务把它搭建起来,生产力变得更加高效了,技术正变得易用、标准、开放、可拆卸。

技术人攻略:你平时的兴趣爱好是什么?

陆丹峰:早年听了很多摇滚,看了很多电影啊书什么的,算是文青。游戏打的也不少。现在这些基本都是需要放松一下时候才碰一下。但是运动还是要坚持的,跑跑步踢球游泳什么的,逮到机会并且空气也不太差的时候就锻炼一下,身体对于创业来讲非常重要,前几天因为劳累加吃坏了东西肠胃发炎,影响工作好几天。也可以说现在最大的兴趣爱好就是创业了,把这当游戏成就一样来看待,想想都是很兴奋有意思的事情。

作者信息

技术人攻略访谈是关于技术人生活和成长的系列访问,由独立媒体人 Gracia 创立和维护。报道内容以“人”为核心,通过技术人的故事传递技术梦想;同时以小见大,见证技术的发展和行业的变迁。在这个前所未有的变革时代下,我们的眼光将投向有关:创造力、好奇心、冒险精神,这样一些长期被忽略的美好品质上。相信通过这样一群心怀梦想,并且正脚踏实地在改变世界的技术人,这些美好的东西将重新获得珍视。

联系方式 gracia@devlevelup.com
微博: @技术人攻略
订阅:微信搜“技术人攻略”或“dev-levelup”

2014 年 7 月 08 日 03:155119

评论

发布
暂无评论
发现更多内容

28天瞎写的第二百一七天:你们 CentOS 服务器还有图形界面啊?

树上

28天写作

创业失败启示录|校园微生活(故事篇3)

青城

28天写作 创业失败启示录 青城

快的不止一点点!阿里强推的“Redis速成手册”也太香了吧

互联网架构师小马

Java 数据库 nosql redis 缓存

RocketMQ中的事务消息

废材姑娘

RocketMQ

精选算法面试-数组(二分查找)

李孟

面试 算法 数组 28天写作

28 天带你玩转 Kubernetes-- 第六天(玩转 Docker命令)

Java全栈封神

Docker k8s 28天写作 docker命令

简单三招,每个管理者都可以成为有温度的共情高手

一笑

沟通与管理 28天写作

不要用+""代替强转

BerryMew

油车和电车比到底哪个整体能源利用效率高?(28天写作 Day6/28)

mtfelix

自动驾驶 28天写作 电动汽车

三分钟快速掌握 maven插件

田维常

maven

Spring 源码学习 14:initApplicationEventMulticaster、onRefresh 和 registerListeners

程序员小航

spring 源码 源码阅读

测试一年多,上线就崩溃!微服务到底应该怎么测试?

阿里巴巴中间件

中间件

pub哥的2020文章清单

JavaPub

Java javapub

为什么我们需要自动化回归?

阿里巴巴中间件

中间件

【计算机内功修炼】五:从小白到高手,你需要理解同步与异步

码农的荒岛求生

异步 同步 回调函数

HBase 底层原理详解(深度好文,建议收藏)

五分钟学大数据

大数据 HBase

醒醒!Python已经支持中文变量名啦!

Python猫

Python

城市生态的机器人革命

脑极体

DevSecOps:好处和挑战

啸天

敏捷开发 运维自动化 DevSecOps 应用安全

Kubernetes介绍篇:是什么?为什么要用?

xcbeyond

Docker Kubernetes 容器 28天写作 Kubernetes从入门到精通

Docker真的被Kubernetes放弃了吗?

蔡超

Docker Kubernetes 云原生

玩一玩Linux常见命令第二篇

程序员的时光

程序员 28天写作

《适用于初学者的Python》

计算机与AI

【Mysql-InnoDB 系列】锁定读

程序员架构进阶

MySQL innodb 锁机制 28天写作

LeetCode题解:105. 从前序与中序遍历序列构造二叉树,递归+数组切割,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

[4/28]保障产品高质量交付业务价值

俊毅

数据结构与算法-时间和空间复杂度

Byte_Panda

算法

大流量场景下如何云淡风轻地进行线上发布?

阿里巴巴中间件

Swift 算法-栈

Byte_Panda

算法

读书笔记:《中产阶级如何保护自己的财富》

lidaobing

28天写作 中产阶级如何保护财富

【TF2系列笔记】Day01:在VSCode中创建开发环境

IT蜗壳-Tango

七日更 TF2

技术人攻略访谈:当数学家遇上大数据-InfoQ