[关闭]
@gaoxiaoyunwei2017 2018-05-29T17:56:43.000000Z 字数 7928 阅读 568

用户视角下的搜狗大数据平台建设——冯晋

黄晓轩


讲师 | 冯晋
编辑 | 黄晓轩

讲师简介

冯晋
搜狗平台技术总监,曾负责过搜索、运维、云平台、大数据等多个方向的产品和技术研发,参与过搜狗早期多个技术项目的落地工作,目前带领的团队主要负责公司大数据基础平台建设、数据的管理和应用等方向

前言

了解搜狗历史的人知道,我们和阿里早年有资本的合作,大概在2012年经常和阿里交流。阿里多年来在大数据上的规模、体量、精细化数据运营方向都是标杆。我不知道应该从哪个角度做分享,经过思考,我应该给大家分享差异化的内容,定位在搜狗近年来的AI战略和商业化方向的问题和探索。我今天的主题是《用户视角下的搜狗大数据平台建设》,如果大家遇到大数据的问题,如何进一步找到自己的价值,如何探索适合自己的中型或者小型公司数据团队在其管理方向的思考和探索。
我做过很多项目,负责过搜索、运维、云平台、大数据,见证搜狗的成长过程,目前在做大数据基础平台建设和数据管理应用方向。
今天我的分享分为三部分:

搜狗大数据业务概况

image_1ce99pllojj33561q72qnp1cv89.png-343.5kB

搜狗是典型的大数据公司,我想表达的是我们的大数据团队也并不容易。如果了解搜索引擎的实现机制会知道,搜索的好与坏和数据量规模有关系,无论市场多大,都必须收集很多的数据,才能保证数据的覆盖度。对搜狗来说,搜索引擎本身的数据量非常大,很多年前我要处理上百亿的数据,现在整个搜索的覆盖大概在2000亿左右。搜狗输入法目前是行业第一的产品,DAU用户规模4亿+,我们在很早的时候就已经面对4G内存的机器上万并发的情况。我们在规模体量上和数据规模上面对的问题挺多。

image_1ce9a6igp42iqov185f2o41b2s16.png-270.6kB

通过我的思考,把我对大数据演化方向的理解分享给大家。近期比较火的是以Hadoop生态为依托的生态系统。经历了几个阶段,每个时间节点并不代表Hadoop的研发时间点,而是被行业接受和逐步用起来的时间点。

搜狗大概也有几个阶段:

image_1ced8018o10cp1qf52hqeelee61j.png-346.6kB

image_1ced83kovmhma215uj1145ebu20.png-317.8kB

image_1ced88cca19uq1q4tgn0mrf169n2t.png-493.2kB

image_1ced8er1o15j6bsk506dhlq8c3a.png-360.9kB

这是基本服务版图,相信各大公司的差别不太明显,一般都是有数据源、数据采集Agent、数据存储、数据计算、数据应用等等方向。但在每个细节上的优化非常多,包括模块与模块之间连接的地方,服务监控管理、资源调度管理等是很重要的一部分。搜狗也是如此,在拥抱开源技术的基础之上,把周边的服务、模块逐渐的普及和优化的过程。

搜狗基础运维平台简介

image_1ced8qb9j1u3k14fhl2eviier13n.png-307.8kB

下面简单分享搜狗基础运维平台的思考和建设情况。大概2012年前后,由于当时机器数量比较少,只有小几千台。当时也有类似规模的小公司,大量运维平台开源工具,很多套系统满天飞的状态。后来随着机器和管理规模变大,2012年前后下定决心,完全从开源走向自研。
走自研路线主要的需求有:

  1. 我们需要灵活性的变化,我们要与商业计划、OA系统、财务系统、预算系统打通。管理这么多问题的成本非常高,所以我们有需要打通的需求。并不希望在解决问题时要打开七八个系统,分别找数据来排查问题。在这样的背景下,我们在2012年前后把运维工具从开源逐渐转向自研平台。
  2. 希望平台更加易用,所以我们把所有的从业务视角、用户视角把所有的业务整合起来,我们内部称之为ROC系统,实际是资源管理的中心。我把它定义为更广义的运维平台,因为它不仅有常规的集群管理、域名带宽管理、存储系统管理、监控管理,还有安全审计、采购、工单等平台,把他们都整合在一起,现在搜狗的整个基础运维平台都在这个平台上运行。

image_1ced9v3df1a7u1ts3ul1agf16k644.png-271.7kB

接下来分享一点搜狗关于在机器管理方面的思考和想法。

image_1cedl5qlo6do1tilhfa18u8gus9.png-299.6kB

大数据本身依赖大量的进程、日志数据产生的模块,搜狗以业务集群的叶子节点为最小的运维单位,可以串联进程和日志的定义。举例说明,在任何一种机器上跑一个模块或者一组进程,只需要模块和配置文件,便能完成对进程本身的运维平台的接入。只需要定义进程的基本形态、运行基本情况,这个进程就已经被运维平台接管了。做了这个基本定义后,后面提到跟大数据有关的是我们会对里面的日志做简单的配置,日志就被管理起来。我们的日志管理包括日志在数据上的存储生命周期、日志适合做什么样的压缩、日志进入大数据系统中的限流限速。对进程的定义和对日志怎样进去到大数据的定义,我认为这是大数据系统依赖的基本工具。这两个东西已经做得比较轻量级,只需要在平台上做技术的管理便能达到操作。

切到监控版块。我们对大数据运维平台管理/运维人员的日常工作有几大类。其中一类是针对任务失败情况、任务延时情况做事。这依赖的就是监控系统,我们用了很多年监控系统,我会分享介绍我们在监控上的思考和理念。

监控分为两大类:

image_1cedlmqaq1vr7om71f4t1iomhuvm.png-381.4kB

第一类,黑盒监控,是用户视角的模拟。我不知道系统长什么样,我们会把所有用户可能访问系统的方式定义出来,各种可能性。我们支持多种监控插件,从TCP、MySQL、Redis等,给定义成黑盒。
除了是活和不活之外,我们还做了语义的定制,根据内容访问的不同,选择不同的报警策略。
还有一块是完整的现场快照,搜索引擎对这个要求非常高,搜狗可以找到99.994%-99.996%左右,百度可以做到99.997%。我们每个月会抓出几个失败,排查问题非常麻烦。针对该情况,我们做了很详细的现场快照的汇总工作。以前排查千万分之一出错的可能性,是非常困难的。当你发现监控出一个问题时,可以快速的看到里面的快照信息,包括监控机网络状况、执行过程、抓包网卡,看服务器的每一个包和每一个网络如何进行传输,有非常明确的记录。后面即使有非常小概率错误,排查问题也能一目了然,这对我们来说是比较顺手的工具。

image_1cedmvm9u17gqhd1e91q2v1v9u13.png-246.3kB

第二类,白盒监控,是系统视角。对搜狗来说如何设计白盒,黑盒是从业务视角看业务模块好不好,那反过来白盒就是已经知道系统的一切运行状态和日志都收集上来了,要如何发现系统的隐患和问题。我们把所有的数据、模块运行系统日志、进程日志、打印日志都做成标准结构,它一定是标准的结构才能清晰入到监控库中。我觉得它非常好用,它可以做灵活的语义定制。比如我的进程有很多的数据,可以做加减乘除以及各种各样的条件,这对我们来说是搜狗运维平台的利器,我们可以对任何一个我们运维的服务和模块做各种可能监控的方法,这在界面设置可以完成,对Ky的值做各种各样的组合。
接下来时报警策略的问题。搜狗发展十几年,我们经历过有大量的监控报警和大量问题出现的阶段,每天在被报警的汪洋大海中活着,我们为当时的状态解决问题。灵活报警,报警策略有很多种,轻量级只是简单的提醒你,比如邮件或者电话提醒你解决问题。我们采集各种各样的数据进行条件的组合,比如10台机器有1台机器故障,你可以发邮件,我第二天处理。如果5台机器故障,会直接把你叫起来。这都可以灵活的配置,这是搜狗用得比较广的方向。
监控系统是我们大数据运维工程师日常经常面对的问题,保证日常服务稳定的基础上,我们不断的挖掘系统的隐患,不断的补齐各种各样的监控手段和方法,让系统更加稳定和可靠。

image_1cegtkilmec4us91og11ibr1afn9.png-283.2kB

我门大数据运维团队有大量的工作是配合公司和业务资源的管理,有人申请新机器、扩容、搬迁、调整,这会占一定的工作时间,我们做了大量系统化和信息化的工作。其思路有点像公有云,对搜狗公司的业务来说,其产品受到严格的管理流程,每个人用多少资源与其商业计划完整挂钩。首先是整个资源,如提预算,我们不是按照机器来算的,而是今年或未来一个季度可能会用到多少存储、多少内存、多少计算资源等,这些资源会转换为业务考核目标,比如产品日活、产品收入增加多少。到了一定规模,到CFO审核后,自动形成机器的采购、上线单,这套流程完全打通。对运维人员来说清晰可见,机器采购完后,会在集群管理上生成采购单,我们就可以进行扩容,然后开放申请。
这是申请界面,多租户问题的核心是资源是不是多了,是不是不够,怎样加资源等等如何解决。搜狗在这方面比较清晰,每个人都知道产品下来有多少账号,我申请了多少,留了多少,哪个用得多,哪个用得少,比较便于我们的管理。不存在说不清我们到底要加多少台机器,这对机器和成本管理来说非常有意义。

image_1cegu41g11hl9mc0p41ondo1em.png-230.8kB

资源管理的后续是如何开放和使用的过程,我们大数据方向做了很多工作。
第一,每个产品线和每个业务单元使用的资源,每个月都有对账单,你在哪个集群、哪个资源上用了多少,峰值多少,花费多少钱。对我们来说,每一台机器如何使用有非常清晰的流程。
第二,除了对账单,我们还有后续的措施。每个资源和账号使用的过程,我们可以帮他分析和优化。有些产品线和业务资源使用不够均匀,空洞很多。每年做商业计划,这一块是有问题的,你不需要申请那么多,大家是有共识的。这是我们在资源管理方面的思路和想法。
整个运维平台涉及很多,对我们大数据团队来说更多面临的问题是日常资源管理、体系管理、成本管理,还有我们要排查解决日常性能、优化性能,对监控系统的依赖和对集群的管理。

搜狗大数据产品化实践

到了第三块的主题,搜狗大数据产品化实践,我们谈谈差异化的东西。近几年搜狗的发展不是特别快,我们把可靠和稳定问题解决得差不多,最近我们在纠结大数据平台价值问题,我们的运维团队和大数据团队如何创造更多的增值价值和提供服务的思考,希望给大家一些思考。主要为大家介绍我们的思路和实践。

image_1ceh01b6j1vvkpijqfh13j31q1913.png-362.2kB

最近一两年,我们遇到很多新的问题。AI产品驱动和商业化大数据时代,很多公司出现新问题。原来的数据是自己产的数据自己用,我们只要做好多租户隔离。到现在这个阶段,这时候数据附加值非常高,表现明显的问题是产品之间数据依赖非常高,以前自己用自己的,现在是混在一起大家都在用。这个时候,业务对数据的安全更敏感,跨产品数据共享门槛非常高,我们最近在解决的是如何让公司的数据安全有效的共享。

image_1ceh0ab2510a3d1rn4h15c4pmr1g.png-984.2kB

数据安全,我们有以下探索:

image_1ceh16f9lacr1m64s0m1nkqaf2d.png-244.1kB

解决安全问题后,更重要的是如何让不同的产品之间进行共享。搜狗大概有1万多种数据种类,每天涉及的数据文件有一二十亿,很多历史源产生的数据,有一定的管理难度。每个人生活在自己的世界里,只有自己知道自己有什么,你难以知道别人有什么。这是对我们现阶段的一个挑战。我们面对几个问题:

  1. 公司到底有哪些数据,每天会产生大量的数据、计算结果;
  2. 公司数据应该怎么申请,才能满足安全和审计规范;
  3. 如何使用这些数据。

image_1ceh1cf7i1ac1g9v7lg6qh9el2q.png-272.2kB

第一个方向,我们开始对公司数据做自动发现,我用旁路的模式对数据进行管理和支撑。数据全生命期的管理成本是极高的,刚起步做这件事是非常麻烦,要做大量的工作,本来是可以快速完成的方式,会变得非常慢。我们采用旁路的方式来关联和发现数据,我们是做搜索起家的,我们有很多数据,只要任何一个地方串联了数据,上了集群,通过发现机制都可以被发现。
我们根据数据的路径和归属发推荐,让他做认领。比较有意思的地方是我们参考了豆瓣看影评的方式,我们对每个数据贴了很多标签,标签对我们做检索、分类和查验数据非常方便。每天搜索关键词的指数可以做很多标签,只需要做简单的检索就可以看到。我们把旁路的系统称之为数据云,它更像一个搜索引擎,有输入框、分类和导航,让大家对公司全部数据一目了然,有直观的感受。

image_1ceh1u8kce41sma15u7d3dhdc37.png-248.9kB

第二个方向,发现了数据后,就是检索数据。我们对数据做了大量结构化和信息化的工作,我们可以通过关键词搜索各种各样的数据。我们会把很多数据设置数据大小、文件数量、更新时间,便于我们做排查,这对管理运维有帮助。我们想处理一块数据时,只需要在系统上花一分钟,便能查到哪些账号下,哪些数据已经半年没人用了,确认后可以删除。这算是完整的信息化的支持。
在数据上跑的任务,我们开始构建依赖的路径和版图。我们正在做的更进阶,数据和数据之间的任务有筛查关系,从管理中生产出多任务多路径的关系,我们尝试构建这个路径,更容易看到它的上下游及谁在依赖它。

【图数据共享-统一的数据仓库】

第三个方向,关于数据共享,简单介绍数据仓库。数据仓库的底层引擎很成熟,2010年开始,从Hive开始到后面的Spark、SQL特别多,这是分分钟可以搭起来用的。从搜狗的搜索来说,从这个东西出来之前,还只是专业数据人员在用。后来我们尝试做一些改进,源于谷歌的一个产品,我们把所有的数据通过产品化结构化的方式,让每个人很清晰的看到数据有什么含义,你们可以预览TOP10的数据,方便感知这个东西。

【图:数据共享-可以公开schema和demo数据】

第四个方向,在数据共享方面的尝试,除了数据仓库外,我们可以公开Schema和demo的数据,定义为数据字典。通过任务的推荐,每个用户知道哪些数据热门,大家都可以用,其价值是什么,可以看到如何定义这些内容。
第五个方向,移动审批。前面主要是数据的发现和数据的查找,我们有移动OA系统,任何数据的使用和申请有流程的。

image_1ceh74u841hcu33m1rp41ov41v2o3k.png-383.4kB

对于搜狗来说,我们觉得现在太麻烦了,即使开源软件或者我们有很多成熟的基础组件,但使用成本依然很高。从数据的产生到数据的使用流程非常长,在里面摸爬滚打很多年才能了解怎么运作起来,数据的使用门槛非常高,数据的清洗、协议处理成本非常高,我们为此采访过很多公司,70%的时间在清洗数据,我们后来花了很长时间想解决这件事。易用性问题,开源性平台有很多基础组件,但想用得好还是比较难的。我们带着新问题切入,如何让大数据平台使用逐步简单,这是我们的出发点。

image_1ceh7bmafgfd1r9m139314bsbov41.png-302.1kB

第一,我们做了类似SaaS产品的产品级数据解决方案。做数据时,如果小公司创建,做一个App的时候要用到统计,一定是用现在成熟的技术。我们会有这样的解决方案。搜狗公司在尝试很多新产品,他们只需要装SDK,让所有的数据一目了然。

image_1ceh7er4klqrei11s151a6d1j044e.png-339kB

第二,为了让流程变得简单,所有的数据清洗完后可以一键进入数据仓库,让准备工作变得足够少。

image_1ceh7llss1lbpum1m5g1slr18ur4r.png-407.4kB

第三,我们做了一个像google的BigQuery系统,大家写SQL搭一个引擎就可以用,但有这个和没有这个的用户量差好几倍。纯粹非技术人员也可以方便用这个系统,我们用户使用的规模和量差很多。

image_1ceh7m96egb93rm1gr114rf1rhr58.png-365.9kB

第四,在报表方面,由于搜狗大量工作和报表有关系,我们在此基础之上,配上时间、命名关系,每天都会形成报表,报表的生成工作变得非常简单。每个小客服人员、小业务人员做机器管理,都会大量定制这些报表,用数据化的方式看这些问题。

image_1ceh7s6v1157s96ovclsaa1li75l.png-407.6kB

我们做了很多业务线的改进,傻瓜式的应用,包括新手引导、运行过程中更友好的出错提示,我们做了大量的小细节工作。

image_1ceh7vr3j9vi1arjdcob9h1bet62.png-391.2kB

移动端,这是我们做了很长时间的工作。想让数据变得有价值,只解决传统方向的问题还不够,第一个板块是搜狗核心指标,搜狗所有的高管都会看,对搜狗核心产品的数据一目了然。有些数据没有变化,有些数据明显升高,我认为高管普及后,每个模块的负责人或者需要关注和使用数据的人会处理问题。

image_1ceh8290abjl1aoo1bik16cq2av6f.png-299.7kB

以上的一切,我们尝试做中等规模数据团队,应该从哪个方向切入。整个行业的大数据系统趋于成熟。搜狗的数据应用尝试探索新方向和新思路。大家有焦虑感,我们也有这样的问题,如何让大数据平台发挥更大的价值。

image_1ceh83fngj3t1cak1jc1u015tj7c.png-403.5kB

我们开始给各个目标用户做数据的推荐,告诉他哪个数据有用,哪个数据看得比较多。我们通过SDK的方式把各个产品线的数据打通,从设备、账号,我们可以容易的使用数据级的需求,应用在产品线上。
我们做了很多外部数据,如翻译等,我们会购买外部数据。我们也要发挥其价值,一个典型的例子,我们会把不同的数据抓下来,有些是付费的,我们通过一个账号抓下来,分享给大家。虽然这是很小的工具,但也是很有价值的,我们给每个人准备个性化的数据排行推荐,每个人每天养成习惯,早上8点钟会收到手机端的推送,告诉他你今天需要关注的数据是什么,有哪些变化,或者告诉他今天不用看。我们做了更多细节的东西,是我们让数据平台更有价值的探索。

image_1ceh8c1jrftj1nrarg51lqvofu7p.png-281.3kB

总结最近一两年的工作思路。从工具到产品,我们做得更彻底,让新任务变化和改进时,门槛更低。在两年前,我们服务的还是数据或算法工程师,我们今年的变化是希望服务全公司的人。任何一个人通过数据可视化去看,去使用大数据的平台。搜狗内部有强大的移动端OA系统,我们开始尝试做个性化推荐和提醒,作为我们大数据平台的思路和尝试。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注