JobPlus知识库 互联网 互联网+ 文章
产品经理学技术:当产品谈论大数据时,程序员在想什么

如果非要让我在互联网科技圈挑一个最讨厌的词,我会挑:大数据。

因为我们总不断听到有人在说大数据:上报的日志文件从来不分析也是大数据;有几百万条零散的数据也是大数据;甚至有掌握了几个大号(微信、微博)的人们也声称自己有用户,有评论,有大数据。

先来看看常见的对「大数据」的定义:

大数据指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

比如,我们之前做的广点通广告时「人群画像」,是基于海量的日志、用户资料、状态、阅读习惯、地理位置等海量数据集合,通过数据挖掘,语义学习等手段重新处理后得到的用户特征,满足了「无法在可承受的时间范围内」、「需要新处理」、「海量、高增长率」几个特征,这种才能称之为大数据。

当然,这篇文章不是为了讨论什么是大数据,而是通过大数据的定义和例子,引出「海量数据集合」、「重新处理」这两个关键字,以及与这两个关键字息息相关的产品和技术手段--也就是对海量数据重新处理(分析)的手段。

如果你对大数据有一定的了解,那你可能猜到了接下来要说的是MapReduce。

先来简单说说啥是「MapReduce」,它是一种编程模型,用于大规模数据的并行运算。

问题:给你一摞纸牌,你怎么从纸牌里挑出所有的黑桃?

普通的办法是:一个个牌数过去,把黑桃挑出来,最后再数数黑桃有多少张。

MapReduce 给出的办法是:

(1)找几个人分牌

(2)每人数出自己手里有多少张牌,上报给分牌的人

(3)分牌的人把大家上报的数字相加,得出黑桃的数量

例子虽然不是很严谨,大概能看出 MapReduce 的优势:将问题简化,分布计算,集中处理结果。

MapReduce 主要提供了下面几个功能:

(1)数据划分和计算任务调度:

MapReduce 将一个待处理的大数据划分为很多个数据块(对应下图spit),每个数据块对应于一个计算任务,并自动调度计算节点(对应下图map)来处理相应的数据块。

(2)系统优化(下面这段话可以配合着上图看):

为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;一个Reduce节点所处理的数据可能会来自多个 Map节点,为了避免Reduce计算阶段发生数据相关性,Map节点输出的中间结果需使用一定的策略进行适当的划分处理,保证相关性数据发送到同一个 Reduce节点。

(3)出错检测和恢复:

以低端商用服务器(为了降低成本嘛)构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件出错是很常见的,因此 MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提 高数据存储的可靠性,并能及时检测和恢复出错的数据。

再举个简单的例子来理解下上面说的一堆枯燥的东西:我们访问微博时,会看各种各样奇怪的微博,关注各种各样奇怪的人,点击各种各样奇怪的广告,这些浏览、关注、点击的行为都被微博上报了日志,存在一堆叫用户行为日志的服务器集群里,这个集群属于一个叫「大数据部」的部门。

产品经理给大数据部门提了个需求:我想知道所有用户的标签,比如那些用户喜欢时尚类型的微博、哪些用户是单身狗等,好给这些人针对性推阿里巴巴的广告,而且很急,下个月新版本就要上线。

大数据部门的程序员们收到需求之后,一分析,数据好几百TB,一台机器跑要跑好7个月(200多天),所以得用分布式计算!

于是为了更快完成需求,他们用了MapReduce(可能是用下面的步骤来分析这些零散的用户行为数据):

(1)大数据部申请了200台机器(计算机服务器),但因为公司削减预算,只批了100台服务器,于是他们就把这100台服务器分成两部分,一部分有90台,叫Master,负责划分数据,分配数据处理任务;一部分有10台,叫Worker,负责归并数据块,计算出最终结果。

(2)架构弄好了,程序员开始分头写程序,一部分负责写数据文件的划分,把文件分成一小块一小块来处理;一部分负责写计算任务调度,就是把划分好的数据文件分配到90台Master服务器中;一部分负责写归并处理程序,部署到剩下的10台Worker服务器,接收那90台服务器传过来的数据,并计算结果;一部分负责写出错检测,检查哪些机器挂了导致计算任务停止了,一旦发现出错了,把计算任务分配到其他正常的服务器上计算。

(3)10台Worker服务器根据1,2,3...10,进行了编号,假设每个人的都有一个微博ID(是数字),按照微博ID的个位数来进行划分,比如我ID是 1001,那我的处理结果会在1号服务器,ID是100213,那么处理结果就在3号服务器。

(4)假设上面的流程都正常,因为机器多了,原本需要200多天的任务,有了100台机器,结果3天就跑完了!得到了这样的微博用户特征(@大师兄[单身概率 88%,科技工作者概率90%,性别男概率100%,本科毕业概率81%,收入水平5000元/月概率 10% ...])。

需求完成了,拿到了用户画像,产品经理很高兴,老板也很高兴,阿里的广告效果看起来也还可以。于是阿里巴巴怒摔5.86亿美元买了18%微博的股份。(本故事纯属虚构,如有雷同,纯属巧合)

看到这,你对 MapReduce 和 大数据处理应该有了一定的认识?如果没看懂,不是你的问题,一定是我没说清楚~ T_T

哦,对了,程序员口里常说的Hadoop(一种分布式计算存储框架)就是基于 MapReduce 的哟~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
191人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序