Facebook前主管谈大数据技术趋势和演变

简介:

本文讲的是Facebook前主管谈大数据技术趋势和演变,全球系统架构师大会于8月10-12日在深圳万科国际会议中心隆重举行。首先给大家带来分享的是前Facebook数据基础设施团队主管,Qubole创始人,CEO Ashish Thusoo,他主要介绍了大数据架构以及怎么样不断的演进,与其说演进,不如说革命。其中主要包括三个方面的主题:


全球系统架构师大会现场报道

  第一,大数据的需求。当今世界需要大数据,有哪些驱动因素促使我们不同方式考虑大数据?以不同方式处理数据。

  第二,技术给我们带来哪些架构上的调整或者权衡。比如说新的技术和传统上90年代的数据技术有哪些变革?架构上做了哪些调整?要哪些优化?不同纬度做权衡的标准。

  第三,未来。我们哪些技术问题需要解决的?

  他认为:智能移动终端充分发挥了他们的GPS、摄像头和重力感应功能,把人的感官做了延伸。其他的设备也在不断的进化,智能的读表器,身体健康的检测设备等等,这些会产生很多的数据,因此我们需要管理大量的数据,发挥数据的最大价值。

Facebook前主管谈大数据技术趋势和演变
▲前Facebook数据基础设施团队主管,Qubole创始人,CEO Ashish Thusoo

  大数据相关的问题正在变得越来越广泛。很多公司都在面对并试图解决海量数据相关的问题。它几乎充斥了我们的耳朵:传感器和移动设备的不断涌现,产生着越来越多的数据。

  从根本上说,大数据已经站住脚了,而且正在得到越来越广泛的使用。观察它的演化过程,从2007年开始到现在,应该说它颠覆了很多东西,越来越多的人开始尝试。它可以在以下5个领域产生巨大影响:创造透明度、通过实验来发现需求和增强绩效、细分人群并采取灵活行动、用自动算法代替或者帮助人工决策、创新商业模式产品和服务。

  以下是演讲的详细内容:

  变革的驱动因素是什么?

  我们生活在不断变革的世界中,有三个技术的参数,在大数据方面带来很大的变化:第一,设备。第二,基础设施。第三,应用程序。

  以上三点结合在一起,不但快速改变我们的生活,而且变革给我们带来很多的需求,这里讲了三个技术上的驱动因素。

  一、设备。手持设备发展过程中,上世纪90年代的手机非常大,不可能随手拿着,放到包里才能带出去,最新的是现在看到的iphone,获得了非常大的变化。比如说PDA或者其他的智能手机,现在有一些重要的能力,以前无法设想的,永远保持与网络联系,可以查询到它的位置。

  现在的终端设备拥有非常强劲的功能,可以用GPS、有摄像头,可以进行重力感应,调整现在的温度。手机从感官的角度来讲,把人的感官延伸,这些程序给我们带来很多数据,也让我们想想怎么好好管理这些大数据。

  互联性,现在看到的是国际电信联盟下载的材料,是关于全球移动用户的用户数量。2004年的情况,蓝色是密度非常低,在亚洲和非洲地区。黄色密度最高,用的最多是橙色的。在一些不是特别发达的国家,甚至世界各地,手机用户数量越来越多,不仅讲得是互联性,还有带宽,新的无线传输技术,使得手机设备方面的数据传输越来越快,最大的手机传输数据100兆已经不是问题,未来会越来越高,相互联系的能力会越来越强,带宽越来越宽,以及我们说的感应设备等。这种技术上的大融合趋势,能够让我们看到了最后一个应用。所有新的技术要通过应用才能实现。

  应用基于云计算

  现在看到很多基于云计算的程序,很多应用化计算都是基于“云”的,在90年代关注企业里面有10个人、100人、1000人,现在规模和容量扩大,不仅几千、几万,甚至上百万、上千万,现在设备做得越来越多,联系性越强,设备越强,有更大的带宽,基于云的集中式的数据。

  拿数据说话

  感应式的设备生产数据,更多的联系性把数据到云端,在云端做些什么呢?这么多的数据怎么运作快速生成的大量数据。大数据意味着很多人一起做很多的事情。要关注大数据的三个特点:大容量、高速度、种类繁多。不止有一些表格、数据,应对非常多的数据。

  举一个例子,在容量方面,2011年数字宇宙里面,我们所存储的数据是1.8个ZB,1个ZB相当于100万个GB,2009到2020年中间,数据总数量达到35个ZB。

  再来看一看速度,数字形成的速度也让人瞠目结舌。现在的数据来自于知名的互联网应用,推测的数量每天3.4亿,而且数据不是最新的,最近数据增加非常多,另外每分钟上传的视频72小时,每秒290万封邮件,数据生成的速度非常快。另外还有视频、图片、应用、记录等,不仅仅讲得传统意义上的图表,现在还包括各种各样的文件。

  现在讲得数据和过去讲得数据不一样,是大容量、高速度、种类繁多的数据。这对系统架构影响非常深远,直接关系到在过去这么多年以来,怎么样向数据不断严谨。回到上世纪90年代,我们关注的是结构性的数据,怎么样数据处理更快。现在的应用越来越繁杂,需要不同的规格以及不同的扩展,因此我们的关注在过去十年里也出现了变化。原来只是关注简单的性能,到现在可扩展性、可应用型。原来只是机械、刚性、结构性的数据,现在已经灵活半结构化的数据。我们讲得是数据结构、数据架构里面颠覆性的变化。

  平台成功的标准变化体现在技术上的变化

  首先从可扩展性方面,系统怎么样通过演变解决这两个要求,很重要的要求是有一个简单的解决方案来解决复杂的问题,或者简单的方法解决复杂的问题。怎么解决可扩展性呢?我们要有这样一套系统能够处理PD级的数据,每秒操作达到百万级,这也是我们所面临的问题,是可扩展性的要求。简单的方法可以采用分片方法,是很多架构所采用的分而治之的方法。可以把数据问题分成块,不放在同一个系统上,分成几个分片,这是一个很基本的理念,这种方法是所有系统当中所通用的构想,所以接到系统的时候,最核心的一点就是要用分片的设想。

  简单的概念,在深入思考的话,有一些其他的复杂问题解决。比如说,一个很基本的分片问题,怎么样把某一条记录导入到不同的分片当中。很多的功能,比如说应该放到某一个分片上,怎么样快速把这条记录放在合适的记录上,确保可用是安全存放的,有很多问题。我们有各种机制解决引导的问题,用的一致性的散列、映射表也来自于这些方法。

  其他也有一些应用,比如说一条记录一半放在一边分片,一半放在另外分片,怎么解决?是分布式的传送问题。很多系统以前是分别的传送,来储存不同部分,怎么确保到达不同的系统呢?

  今天的系统要有可伸缩性、可扩展性,要用非常高度的简化方法来处理问题。简单的问题就是把记录的两个部分单独的看作独立的两块。这部分记录独立的看作一个部分放入某一个分片,进入这样的分类,简化了数据的分类,存储就加以简化,分片的处理把数据分成不同的部分,分到不同的分片上单独作为一个独立的部分看待。

  另外一个复杂的问题,在分片当中,如果有一个分片坏了,这时有一条新的记录,记录往哪放?分片机坏了,不知道往哪放怎么办?如果一个分片坏了当然可以放到其他分片上,可用上减少,并不是减少到零,只是其中一部分坏了而已。如果整个架构坏了就完蛋了,是其中一块坏了。

  我们要用很好的方法,就算是一个分片失效了,也要用到该用的分片机上。我们做不同的副本,把分片进行不同副本的存放。有一套记录,两套副本,上帝保佑不要三片全坏就行了。通过复制来解决问题,但是需要有多少个副本呢?数据进来之后应该在副本当中复制多少次呢?要确保记录安全的话,什么时候要重建一个副本呢?或者一个副本失效了,要建立另外一套副本,怎么把记录传送到新的副本当中呢?这里有很多重点,用复制的方法解决问题。同时,这个过程带来新的问题。所以我们应该在系统构建过程中一体化进行考虑。

  以前系统往往是在事后考虑问题,现在在系统构建过程中就要设想到这些问题,在技术当中加以解决,这是内在的设计。这里看到很多不同种类的方法解决,有些用一致性的散列或者在一些零片上进行复制或者恢复,当然有不同方案解决的问题,可以用单一的映射表来解决。解决的方法是多种多样的,包括怎么样从一套副本恢复到另一个副本当中。这也是不同架构师的不同方法。但是最基本的一点是设想和思维是一样的,最基本的方法是要加以简化,按照这种思路来设计不同解决方法来解决不同问题。

  为什么我称是颠覆式的发展,因为关注点不同,90年代是单片的效能和绩效,比如说IO结构做得最好,怎么减少IO的传送,怎么样设计出一些更加对缓存敏感的算法,这是90年代在系统设计的时候关注的重点,2000年以后有了颠覆性的变化。最基本的角度是考虑可扩展性、可用性,涉及到分片和复制。这也是我们讲到为什么是一种颠覆性的变革。

  第二个层面的变化是柔性数据、灵活性以及半结构化

  我们解决柔性数据的问题具体体现在:其中一个是我们的数据库并不只是记录和表格,有些数据我们可能是优化专门存放表格、数据和记录的,但是实际上还要考虑这个应用程序到底怎么样构建的。可能大家听过短跑模式,不会坐下来整个架构、整个系统,想到所有的数据、所有的构思再写应用程序,今天写应用程序非常快,快速变化,得到反馈马上调整改变,这个应用程序是不断改变的过程,我们做一些短跑式的模式,使得整个架构、记录的结构不能固定下来,固定下来不能灵活的调整程序,我们希望应用程序变化的时候,不需要改变数据的结构。这也是我们现在要解决的问题。通过现在一些系统和架构解决根本性的问题。

  现在要构建这种记录有很多好处,比如说可以得到优化的计划,可以按照我们应用来优化存储的布局,包括阵列、分类、缩影、查找等。可以实现一些好处,这个系统可以带来最优的选择获取数据。可以优化数据存储,不需要把结构性的数据存放在一块,可以单独存放起来,但是有利有弊,取舍是我们优化的速度、优化了它的性能表现,但是有没有优化应用程序的更新呢?如果应用程序的应用发生了改变,数据库能不能跟的上呢?如果应用程序发生改变,数据表加了一列,结构发生调整,使到我们减速,这也是能够重建的缩影。

  我们系统要怎么样应对这些挑战,最主要的问题是我们在网上的世界当中,往往在网上操作是很简单的操作,可以设想我们的前提、观点,其实要用我的数据系统,要的很简单,简单的查找、更新,并不需要去过多的担心一些非常复杂的操作,但是大部分的操作是简单操作的话,其实并不需要关注用什么样的执行计划,为什么要去把整个的架构放到某个系统当中,如果有些并不用到这些系统,关注的是应用开发速度。解决这样的诉求,必须要有一种足够的结构性,来满足要求。有足够的结构性来满足快速读取的要求。

  简单的方法是把一切的数据分成键和值的关系,所有都围绕这个系统。如果应用程序发生改变,这个也随之对应。就像一个巨大的散列表。我们的操作只需要找到这个键,再看这个键对应的值是多少?再提取出来。只需要优化这一步。听起来很简单,但是要做很多的工作优化这种结构,使到这个结构运行起来很快。比如说有些经过分类的散列表、分类的文件,这样才能优化机制、快速存取、范围查找、快速更新。我过于简化了这个问题。

  应用程序希望获得的能力,在更新某一个键的时候,把关联的其他数字一起更新,这是另外一个结构。这个结构要增加一部分,数据系统当中增加标签的一列。不同的系统,有的叫标签,不同的组、不同的名字。在一个服务器当中,可以进行一种关联数据同步的更新。在某几个数字用同一个标签,属于同一类、同一组的更新。最根本的是键、标签和值,这个体系使到我们真正能够响应、优化我们最常用的三种操作:查找、范围查找、更新,这是专门为企业优化的,同时也可以优化应用程序的开发,应用程序开发的时候,也可以应用短跑模式。

  刚才讲得这么多对于在线的很需要,但是有没有一些分析性的应用呢?在座的各位知道,我们做分析过程非常复杂,有不同类、不同组、不同分析工具,另外,在数据上做不同数据的转换,才能了解到数据的情况。刚才讲了三类的分析是比较简化,怎么查询、存取等。在简化之余,过程非常复杂,这个方法在分析过程中能不能用得上呢?在分析的时候查询非常复杂,这些工具是否合适?有没有简单的结构解决分析查询的问题。

  其实很多应用比较关注这个问题,很多数据系统也关注有没有方法解决分析的问题,其实很简单用简单的技术就可以,就是分类。

  接下来看看映射和缩减,可以扩展、可以并行分类

  不仅仅把它作为一个处理,而是进行更好的分析,把信息分类出来。比如说拿出一个数据集,可以分成不同的分片和分成,分成三个数据集,有红色、绿色的。我们影射不同的数据集能进行化解。怎么把绿色和红色的剔出来,放在一起。我们可以分类,非常不错。我们的用户可以自己界定所谓的影射函数和化解函数。这样的话对于用户来讲更加灵活了,不仅仅是原来要赞助的特定数据,还可以用其他类型的数据,用影射工具很快影射出来。比如说有图像信息分出来,具体的目标去提取。而且在我们所做的这些工作核心就是我们讲得可以使用并行的分类。这样的话可以把原来复杂的架构变成简单的架构,这种灵活性也是我们现在所要关注的。

  除了这些好处之外,还有什么其他优势呢?在数据信息分类之后,出现故障什么问题。比如说分了几个小的数据集,如果出现问题了,怎么办?数据保留下来还是重新再做呢?在一个完全平衡有很多数据的系统里面,重新再做肯定要花很多时间才行。因此在我们的系统里面影射以及化简的过程中,可以随时重启。如果发现影射器里面有些出了问题怎么办?不需要重新启动,只要把有问题的影射器重启就行。

  在数据分析过程中,不同地方加入了检查点的功能。其实我们的关注在于首先要把结构变得更加简单、更加灵活,而且有更高的可用性。就像系统还原一样,找到有问题的点重新做一下就行了。原来是中间出现小问题就要重新做,现在不用重新做。原来查询系统没有任何检查点的概念。原来我们讲得系统只是去关注性能。更多关注结构才能优化速度。进入21世纪之后,我们使用短跑的模式,不像我们原来所说的看单纯的性能,在开发构造应用程序出现很多的变化。

  前面讲到设备的效率和数据的多样性,在演讲一开始就说过。

  接下来看看未来的前景怎么样?往哪些方向走?

  这个系统里面有一个非常关键的主题,和其他的基础一样,肯定会让我们和以前的技术分道扬镳。但是,在这里发现不能完全各走各的路,还是要把我们发展建立在这个系统之上。现在不仅是新老交替,在新老交替中,还要进一步融合。我们还需要一些旧的SQL,否则无法做影射,还需要一些相应的语言。刚才讲得这些方面已经做了很多工作,有些是用新的语言,很多用旧的语言。怎么将其他组件组合在一起呢?新的应用程序是独立的东西,自己来用非常好、非常不错,但是如何把新的东西和旧的东西加在一起,或者在新的系统上加入一些其他的组件。现在也在关注其他的情况,现在系统刚刚起步,很少一部分使用,慢慢形成主流之后看更多的结合在一起。

  一开始讲到了更多关注可用性、可扩展性,效率讲得不多。如果数据越来越大、规模越来越大,效率也非常重要,怎么样能够有更好的、更高效处理大量的数据。比如说银行交易,把钱存在一个账户转到另外一个账户里面。有些人说,他能够做,但是现在情况来讲,很难把你的钱转到另外一个账户。旧的系统里面关注怎么样优化资金传输的效用。旧的系统做得很不错,新的系统无法比肩旧的系统,无法解决。

  现在很多路径里面都有图形,像社交网络里面图形,有时候可以做一阶分析,二阶分析和三阶分析怎么传输出去,这是做得不足的,要解决。

  新的系统里面有很多需要解决问题,但是有些解决方案已经浮出水面了。比如新的范式、新的操作界面、新的应用。新的系统为大众所接受必须要跨过的桥梁。标准让更多的人所熟知,或者界面更加简单,让一些新的用户轻松的了解到可用之处。

  说到这里想再花点时间讲下面这一点。如果要高速人们了解这些信息的情况,把它部署在一键式全包的方法,通过云来做。现在具有很强的可用性,或者可以用虚拟机来操作,但是如果用虚拟机的话,不清楚到底什么时候突然有问题。现在可以通过云端来去做,通过云端来做可以有效减少采用这些部署系统的复杂程度。只要放到云端可以解决所有的问题。当然,说到这些,可以说是任重而道远,有很多的工作要做,尤其是在分析领域。

  Apache就在关注这些问题,怎么按需提供系统满足客户的需求。另外,我们该使用什么结构?原来的可以继承下来,通过改进做得更快,可以直接把系统部署在里面做得更快。现在已经做了一些工作,解决了一些小问题,比如说自动扩展、高速缓存等都可以实现改变。我们讲得大数据还有很多东西期待解决。我们要让系统进入主流系统让更多人所接受。比如说分析师、数据使用者了解,需要很多工作做。

  我们可以说刚刚起步,未来还有很长的路要走,非常激动人心的时代就是我们看到在整个应用、基础设施、设备方面有很多很大的变化,这些变化反过来也让我们这些系统架构师反思一下过去做得什么,该采用什么变化,改变我们所做得纬度、改变我们品牌与架构成功的标准,不仅看速度、看灵活性,看短跑模式更快部署、怎么应对更加广泛、大量的用户。

作者: 景保玉 

来源: IT168

原文标题:Facebook前主管谈大数据技术趋势和演变

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
26天前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
6天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
15天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
20天前
|
机器学习/深度学习 人工智能 数据可视化
基于Python的数据可视化技术在大数据分析中的应用
传统的大数据分析往往注重数据处理和计算,然而数据可视化作为一种重要的技术手段,在大数据分析中扮演着至关重要的角色。本文将介绍如何利用Python语言中丰富的数据可视化工具,结合大数据分析,实现更直观、高效的数据展示与分析。
|
27天前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
28天前
|
存储 分布式计算 大数据
现代化数据库技术——面向大数据的分布式存储系统
传统的关系型数据库在面对大规模数据处理时遇到了诸多挑战,而面向大数据的分布式存储系统应运而生。本文将深入探讨现代化数据库技术中的分布式存储系统,包括其优势、工作原理以及在大数据领域的应用。
|
1月前
|
大数据 Java Go
Go语言在大数据处理中的核心技术与工具
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理领域的核心技术与工具。通过分析Go语言的并发编程模型、内存管理、标准库以及第三方工具库等方面,展现了其在大数据处理中的优势和实际应用。同时,本文也讨论了如何使用这些技术与工具构建高效、稳定的大数据处理系统,为开发者提供了有价值的参考。
|
1月前
|
分布式计算 大数据 Apache
大数据技术变革正当时,Apache Hudi了解下?
大数据技术变革正当时,Apache Hudi了解下?
24 0
|
1月前
|
分布式计算 NoSQL 大数据
探索数据宇宙:深入解析大数据分析与管理技术
探索数据宇宙:深入解析大数据分析与管理技术
55 1
|
2月前
|
SQL 分布式计算 数据库
离线数仓--大数据技术之DolphinScheduler
离线数仓--大数据技术之DolphinScheduler
132 2