小米数据工场的技术架构和小团队如何玩转大数据

本文是WOT2016互联网运维与开发者大会的现场干货, 新一届主题为WOT2016企业安全技术峰会将在2016年6月24日-25日于北京珠三角JW万豪酒店隆重召开!

卢学裕的演讲分为小米数据工场的技术架构和小团队如何玩转大数据两部分,从中开发者可以知道小米数据工场的技术架构是怎样的? 面对大数据的技术纷繁复杂,小团队要如何面临缺技术/缺分析师/缺数据等问题?在这种现状下如何做好技术选型,如何权衡面临的使用成本和数据隐私担忧?卢学裕主张一半自建一半用云,然而这又要面临哪些运维挑战?

小米数据工场的技术架构

卢学裕表示, 小米数据工厂跟各家的大数据平台、数据系统有很多类似之处也有自己独特的点。工厂整个底层基础平台建立在Hadoop体系,除此小米跟Cloudera合作也非常紧密。小米整个底层平台会有专门平台组去开发,最底用的HDFS,上面用的Hive、Spark和Mapreduce这些是混合到一个亚运集群上。Impala小米很早就在用,是一个很重的计算角色。

小米数据工场总体结构

如上图, 上半部分是自研的数据工厂,是为最顶业务层提供服务的。数据工厂主要是提供数据可视化、计算任务管理、数据管理、权限管理、任务调度、数据共享等服务。卢学裕表示,公司越大就更希望数据能够开放给公司的各个部门,数据可相互利用。但不能没有任何限制的去使用,所以需要对数据权限做管理。任务调度是整个工厂里面最重的部分。数据共享就是类似非常火的用户画像类数据,还有其他公共数据如IP库,这些数据具有公共特点,就不用重复计算,就可以通过数据共享的方式在各个团队之间使用这些数据。

数据管理,分为数据预览、元数据、数据源三部分。数据预览是每个团队用来互相了解数据的。

元数据,就是数据使用过程中要把非结构化的数据转换结构化的数据。元数据管理就是去了解每个字段的含义和机器解析。机器解析包括Mapreduce程序可直接读文件可解析,如用Impala、Spark和Hive同样也能解析,而不需要每个使用者再去格式化,再去解析这个数据。但面临的问题是数据一旦出现格式的转变或者某些字段的调整,以前任务可能都会出现问题,故一定要统一管理的地方。数据源,数据管理非常核心的是数据集成,能够把各个地方的数据集成到平台上来。

HDFS目录管理。有公共数据空间、业务数据空间、团队数据空间、个人数据空间、Yarn计算空间五部分。

  • 公共数据空间,是用来把公共数据放到上面,把维护权限和读的权限分开。这样大部分都是读这个空间,空间数据安全性等级相对来讲比较低,可以付给更多人。
  • 业务数据空间,因为每个业务数据的增长量是不一样的,甚至有些业务会出现如刚上来一个新功能,数据量迅速的增大,有的甚至会出现某个团队的数据增加,导致把整个集群空间全吃掉,又没有事先招呼。这种情况下做好业务间的限额配额是非常重要,防止某一个团队的增长导致整个集群出现一些问题。
  • 团队数据空间,就是把权限控制到个人,用来帮助做团队之间的数据协作。如把线上任务会放到团队账号中去,团队账号的权限要做好控制,权限不随便开放。团队人员发生变动后,整个团队任务不用再去切换账户而导致交接的复杂性。
  • 个人数据空间,数据工程师、开发工程师等是需要做一些调试或做自己的计算这就要给这些人一定空间的同时对其数据做配额。这是为了防止这些人过多的使用资源和为了空间不够需要清理数据时,哪些数据要清理,哪些数据不能清理一目了然。这样限制空间的情况下,这种废文件或者垃圾文件的积累会相对较少。
  • Yarn计算空间,做配额限制呢是为了杜绝空间滥用的问题。卢学裕举例道,“之前发生过一件事,某人在Reduce里面写了一个死循环,不停的输出数据,导致整个集群很快就去报警。后来才发现这个计算造成的一些问题,最后差点导致那些日志上传、数据的写入都出问题,幸亏处理的比较及时。”所以,Yarn计算空间是需要做一个配额限制,防止对整个集群造成过大的影响。

卢学裕表示,小米数据存储格式统一采用的Parquet,优点在于其使用的是列式存储,支持Mapreduce、Hive、Impala、Spark和读取快占用空间少。

客户端数据接入两种模式优劣势

客户端数据接入。客户端指的是如说Wap、App等数据,存在方式有SDK和服务端Log两种模式。上图为两种模式的优劣势。

服务器端数据源。除前端数据源外,整个处理数据时还会有大量服务器端数据源需要处理。业务数据库类,用ETL工具做导入。服务器端日志,用Scribe将数据写入HDFS。

元数据管理。当公司业务变多后,每一个数据的处理方式都有可能不一样,这时候就凸显出元数据管理的重要性。如视频播放日志,分析师希望用Hive,用Impala直接写SQL去计算,但数据挖掘工程师就要去写Mapreduce,写Spark的方式去读,去解析。元数据管理就是要做数据统一,既能够满足Hive、Spark、Impala,还能满足Mapreduce。这样一来节省大家对数据理解、执行的时间。

元数据管理

如上图,小米数据工厂是每一份数据的描述都需要在数据工厂上提交,之后数据工厂会在MetaStore中做建表的同时带上元数据的行为,供Hive、Spark、Impala使用。数据管理还会生成Jave Class,给Mapreduce使用。当去解析用某个数据时候,可以直接用这样的方式把它解析成Jave类。

计算管理

计算管理。卢学裕表示,计算是很重要的事情,数据管理相对来讲是一次性的活,计算就是很复杂的事情。计算任务数一天达到几千或过万时,就会变得非常复杂。对于计算管理这快优化,小米做了如上图的一些工作。

Docker。为了管理好这些纷繁的计算框架和模型,在计算的执行方面,小米使用Docker来解决对环境的不同需求和异构问题,并且与Hive、Impala、Spark这些不同的计算模型都进行了对接,去适配不同应用场景计算不同数据的模型。另外,在不同业务场景下,同一个计算逻辑也可以选用不同的计算模型,Docker 的使用也避免了资源的浪费。比如一个计算任务每天凌晨运行,为了追求吞吐量,可以放到Hive里跑;还是同样一个计算模型,现在就要跑,可以不用更改,就放到Impala里运行。Docker不仅解决了环境的异构,也解决了资源问题。另外,Docker的环境适应性很强,做横向扩展会比较容易。对于数据隐私方面,小米考虑得非常重。采用Docker与自身安全策略的综合,小米用户数据的隐私和安全性也得到了极其严格的控制。

小团队如何玩转大数据

小团队玩大数据会面临哪些问题?小团队会面临人力资源不足,技术储备不足,时间有限等问题。面对这些问题,卢学裕在技术选型上给出如下三个建议。

  1. 选择热门技术。因为人才比较多,相对获取这样人才会比较容易。技术成熟,因为小团队没有时间去踩坑。还有帮助多,这如说网上文档帮助、社群帮助,朋友帮助等。
  2. 够用。针对一些小团队或者初创公司的特点,业务变化特别快,也不稳定,这种情况下做到够用就好,不需要过分的设计和采用过重的系统。尽量根据业务驱动,业务需要什么数据就抓什么数据。
  3. 演进。随着需求的变化需要不断的演进,包括系统演进、使用方式演进。

一定要做好数据积累。卢学裕表示,无论你用什么样的技术,用Hadoop也好,不用Hadoop也好,一定要做好数据的积累,这是对一家数据公司非常重要的部分。这就需要提前规划好数据,还要避免逻辑孤岛。还需要注意ID问题,也就是关联的问题。当采集了数据,却发现没有采用户ID,没有提前做好这个规划,当算到用户级别时候那就尴尬了。

演讲最后,卢学裕强调:“现在越来越多业务都回到了用户时代,以前讲的是流量时代,讲的是PV如何。回到用户时代,核心问题就是我们要做好用户的数据积累,尤其是用户模型建立。模型包括的画像、用户点点滴滴行为等。这些行为在业务发展之后,尤其是要做数据挖掘,做推荐系统时,会非常非常的有帮助。建议大家做好这样的数据积累,在数据技术上随着变化可以不停的再做一些改变,甚至做一些混合,在不同的地方用不同的方式。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祝威廉

如何让开源项目成为你的良师益友

现在大部分公司产品的基石都是开源项目,从开发包到产品本身。我甚至在想,没有开源项目的世界将会是一个什么样的世界。互联网的共享精神让互联网得以如此的快速的发展。

7920
来自专栏微信公众号:Java团长

Java程序员涨薪必备技能(1-5年必看!)

工作1-5年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗?

9610
来自专栏ytkah

小程序内嵌网页的开放是一场创业公司的及时雨吗

  11.2晚小程序突然开放两个重磅能力:1.小程序内可直接打开网页,2.小程序可关联500个公众号。通过研究,我们发现这次新能力的开放,促使小程序推动微信的春...

39350
来自专栏人工智能LeadAI

流式数据 | 天天在做大数据,你的时间都花在哪了

大数据做了这许多年,有没有问过自己,大数据中,工作量最大和技术难度最高的,分别是什么呢? 01 大数据时代 我每天都在思考,思考很重要,是一个消化和不断深入的过...

45260
来自专栏大数据和云计算技术

计算机系统结构变革在即?

15年6月,intel正式宣布167亿美元收购FPGA生产商Altera。此交易为该公司有史以来涉及金额最大的一次收购案例。167亿美金不是小数目,intel ...

33370
来自专栏程序员互动联盟

为什么很多老程序员不屑用IDE?

随着软件的发展进步开发工具会越来越人性化,集成度也会越来越高,很多的旁枝末节都会隐藏起来,程序员在使用的时候只需要关心主体的逻辑,只需要调用对应的模块,直接看调...

38350
来自专栏大数据文摘

MESA:谷歌揭开跨中心超速数据仓库的神秘面纱

196100
来自专栏Java架构

Java程序员涨薪必备技能(1-5年必看!)

工作1-5年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗?

10140
来自专栏CSDN技术头条

冉起新秀:Apache六大尚未广为人知的大数据项目

世界各地无数的组织,他们使用的数据现在日益庞大而复杂,使用传统的数据处理程序已无法再进行优化分析及获得洞察。而这正是的新一代的大数据应用程序要解决的问题。近期A...

21750
来自专栏精讲JAVA

理解程序员并不是一项简单的任务, 即使你当过程序员

最近在读一本软件团队管理方面的书 :books: ,是两位在软件行业的资深从业者写的,其中有一个章节在讲如何理解程序员这件事。 理解程序员并不是一件简单的任务...

35850

扫码关注云+社区

领取腾讯云代金券