《你问我答》第一期 | 你想要的答案在这里

2020-06-01 15:10:43 浏览数 (1)

各位小伙伴们大家好,咱们又见面啦~

《你问我答》栏目上线以后,受到了大伙的热烈欢迎

小编每天在后台收到的提问数不胜数

对于各位小伙伴的踊跃参与,小编深表感谢

就冲大家的热情

小编一定会兢兢业业地把栏目做好

帮助大伙解决各种疑难问题

但是……

你们的方向是不是有点跑偏啊喂!!!

再次隆重介绍一下

站在你们面前的是

汇聚腾讯Apache及Linux开源社区

国内一流大数据技术专家

超40位社区committer的专家天团

每一位都在各自领域拥有顶尖的技术水平

以及丰富的实践经验

问小哥哥们的年龄也就罢了

为什么还有“大神们如何做头发护理”这种问题?!!

emmmm......

关于这个,小编特意请教了技术团队里几位

头发颇为茂盛的大佬

答案是:

天赋异禀

最后,竟然还有小伙伴问“欧洲所有国家的名称?”

我——

作为腾讯大数据平台的小编

这几十条数据不在话下

好了,吐槽结束 

废话不多说

下面我们来看一看上周小编精选出来的几个提问吧!

01

@BIGBING:

请问腾讯大数据中心有什么开源项目?

陈鹏

腾讯大数据团队负责人。

回答

腾讯大数据最早从2014年,就将腾讯内部稳定运营的TDW平台对外开源。

2017年6月,腾讯大数据开源第三代高性能计算平台Angel(https://github.com/Angel-ML/angel)。2017年8月,Angel 正式宣布加入 LF 基金会;2019年8月正式发布一个里程碑式的版本Angel 3.0;2019年12月20日,腾讯开源项目Angel从LF AI基金会毕业,也是中国首个从LF AI基金会毕业的开源项目

2019年,在ApacheCon上,我们面向全球开发者正式宣布开源自身核心平台——实时数据采集平台TubeMQ(https://tubemq.apache.org/en-us/),并捐献给Apache社区,目前正在孵化中。

同年11月份,腾讯大数据正式开源了基于最主流的OpenJDK8开发的Tencent Kona JDK、资源管理平台核心TKEStack(https://github.com/tkestack/tke),以及分布式HTAP数据库TBase(https://github.com/Tencent/TBase)。

随着在大数据开源领域的开源逐步加速,腾讯正在成为中国大数据领域开源最全面的厂商。除了我们开源的项目外,腾讯大数据团队几十个PMC、committer和更多的贡献者也在持续不断回馈社区,参与社区建设。

02

@陶:

腾讯对Angel机器学习框架针对大规模场景做了哪些专门的优化呢?

Bruce

腾讯大数据智能学习团队负责人,负责腾讯Angel、联邦学习PowerIFL、图数据库等研发工作。

回答

Angel机器学习框架就是从服务于广告业务开始的,广告业务的一大特点就是模型非常高维,特征又非常稀疏,同时训练样本非常多,经常上千万、亿级别

针对这种大规模的场景,Angel主要从以下几个方面进行优化:

1、针对超大规模模型,Angel机器学习框架采用了PS(ParameterServer)参数服务器做模型并行的训练,大模型经过partitioner切分后分片存放在不同的PSServer节点上,如图1所示。Partitioner会考虑数据的稀疏程度以及不同算法的数据访问特点,对数据模型进行分区,尽量使得每个分区的负载均衡。

2、支持psFunc,在PS端可以执行用户自定义的操作函数,完成对模型的一些全局性操作,避免在worker端执行的代价,也减少了网络通信量。

3、其次,Angel在数据模型上,专门针对大规模稀疏数据进行设计,定义了稀疏存储的vecotor/matrix/graph等数据结构,压缩存储空间,同时提供高效的数据访问能力。

4、Worker端采用单executor多task的方式,可以在进程共享worker级别参数配置,减少网络通信开销。

图1.Angel参数服务器架构图

有了上面几个优化大招,Angel可以轻松搞定百亿甚至千亿级别的大模型。Angel本身以大数据框架Spark作为底层分布式框架,可以很容易与其他大数据业务系统对接起来。

Angel还在不断演进发展中,以便提供更多更好用的算法给大家,最近我们发布了release 3.1.0版本,包括大量图计算相关的功能,欢迎小伙伴去下载试用,提issue,提PR:

https://github.com/Angel-ML/angel/releases/tag/v3.1.0

03

@Richie:

Super SQL 两个不同数据源的大表join,是怎么实现的呢?

张韶全

腾讯大数据SuperSQL和Hive项目负责人,香港中文大学博士,《SparkSQL内核剖析》作者。

回答

两个大表的Join的实现是采用SortMergeJoin的方式。SortMergeJoin这种实现方式的前提条件是需要在Join前首先将数据排序

如下图所示,为了让两条记录能Join到一起,需要将具有相同key的记录在同一个分区,因此一般会进行一次Shuffle操作,根据Join条件确定每条记录的key,并且基于该key进行分区,将可能Join到一起的记录分到同一个分区中,这样在后续的Shuffle读阶段就可以将两个表中具有相同key的记录拉到同一个分区处理。在Shuffle读阶段,会对两个表中每个分区获取到的数据进行merge sort操作。

SortMergeJoin将参与Join的两张表抽象为流式遍历表和查找表。会基于流表来遍历,每次取出流表中的一条记录,根据Join条件计算,去查找表中查找所有满足Join条件的记录,并将满足条件的每条记录分别与流表记录Join得到Join后的记录。

在遍历流式表时,对于每条记录,都采用顺序查找的方式从构建查找表中查找对应的记录。由于排序的特性,每次处理完一条记录后只需要从上一次结束位置开始继续查找。

番外:

如果两张表中有至少一张有数据倾斜,会引起“长尾Task”问题(含有倾斜数据的分区的Join速度明显落后与其他分区,导致其他分区执行完成后长时间等待此分区完成)。这个问题常见的解决方式是数据分离和数据打散。

数据分离:

例如进行Join的两个表分别为t1和t2,有数据倾斜的表为t1。可以将t1的数据分为两部分t11和t12,t11中不包含数据倾斜的数据,t12中只包含数据倾斜的数据。t11和t12分别与t2进行Join,然后将结果Union。

SQL如下所示。

t11与t2的Join没有数据倾斜的问题。由于t12通常不会很大,t12与t2的Join采用BroadcastJoin。这样t1与t2的Join避免了数据倾斜的出现。

select * from ( select * from t11, t2 where t11.key = t2.key union all select /* BROADCAST (t12) */ * from t12, t2 where t12.key = t2.key )

数据打散:

数据打散的处理方法就是将大表(A)中的id加上后缀(即“id_0”-“id_2”),起到“打散”的作用。为了结果正确,小表B中的id需要将每条数据都“复制”多份。此时再执行join操作,将会产生三个task,每个task只需要关联一条数据即可,起到了分散的作用。具体到SQL写法,每个数据表可以如下操作:

经过处理之后再使用new_id来作为聚合条件。需要注意的是,这里的rand效果不一定非常均匀,后缀数量可以根据实际业务的数据分步来权衡。处理数据倾斜时,有必要先用count(*)来查看数据的分步情况。此外,可以专门实现一个UDF函数用于专门生成0到n的数组,便于添加后缀。

04

@唐: 

kona预计啥时候开源呢?

杨晓峰

腾讯大数据JVM团队负责人,中国计算机协会(CCF)系统软件专委委员,OpenJDK Author & Committer。

回答

目前,Kona JDK 8已经对外开源,具体请关注:

https://github.com/Tencent/TencentKona-8

我们也在积极准备对外开源Kona 11,暂时预计会在今年下半年的某个时间进行。

Kona JDK为社区提供了一个经过大规模生产验证的、可靠、高性能的OpenJDK选项,其沉淀了我们在大数据/机器学习、云计算领域的经验心得。

与此同时,Kona JDK团队也致力于尽可能地贡献到OpenJDK社区,让更广泛的生态受益,您可以从下面列表了解相关贡献情况:

https://bugs.openjdk.java.net/issues/?jql=labels = tencent-interest

部分工作已经体现在刚刚发布不久的JDK 14等产品中,请看Oracle官方发布的Java 14公告 :

https://blogs.oracle.com/java-platform-group/the-arrival-of-java-14

腾讯是有限被明确列举的国内贡献公司之一:

05

@悟道:

TBase是否适合业务一致性要求高的金融系统?

李巍

腾讯大数据TBase团队高级工程师。2011年加入公司,先后从事腾讯TDW分布式数据仓库、tPG数据库、TBase分布式数据库等系统的研发工作。

回答

先从大背景来看,一直以来金融行业数据库市场被Oracle等国外传统集中式商业数据库占领,但是随着贸易战的不断深入,金融行业数据库的国产化、安全自主可控也是大势所趋。

作为在腾讯公司培育十余年,支撑起公司内外部的微信支付、人保财险(PICC)等核心系统的TBase数据库,是有能力扛起这个重任的。

从技术特点上来看:

首先,TBase采用MVCC 全局时钟 2PC SSI的方式来实现全局一致性分布式事务,保证事务的ACID,同时引入大量性能优化的设计来减少全局事务带来的开销,保证了高性能可扩展的分布式事务能力,这一技术可以很好的满足金融场景对事务一致性的高要求;

其次,TBase构建了以三权分立、强制安全规则,透明加密与脱敏为基础的全面的数据安全体系,满足企业安全合规的要求;

再次,TBase支持存储过程、窗口函数等诸多企业级特性的同时,能够高度兼容Oracle语法,能大幅降低业务的迁移成本。

从系统成本上来看:

TBase只需运行在普通的x86服务器上,相比较于传统数据库使用的大型机小型机,硬件成本的压缩也是很可观的。

恭喜以上5位小伙伴

你们将获得“腾讯视频VIP月卡”一张

请在后台私信小编

小编会将礼物发给你们~

以上就是《你问我答》第一期的全部内容了

欢迎大家就自己关心的技术问题

在文章下方以“#你问我答# 提问内容”的形式留言

专家和小编在这里静候你的提问喔!

0 人点赞