大数据二十年:从2003到2023的简史

发表时间: 2022-11-11 14:53

总结Hadoop20年的历史及相关的一切

每当我进入RPG视频游戏中的图书馆时 ,我都会忍不住去看每一个书架,以更好地掌握游戏的宇宙。有谁记得《上古卷轴》中的"帝国的简史上古卷轴"?

大数据,特别是Hadoop生态系统,诞生于15年多一点的时间里,其发展方式很少有人能够预料到。

自从Hadoop诞生和开放源代码以来,它已经成为存储和处理PB级数据的首选武器。围绕它已经形成了一个广泛而充满活力的生态系统,有数百个项目,而且它仍然在许多大公司中使用,即使其他几个基于云的专有解决方案现在正在与它竞争。通过这篇文章,我旨在快速回溯Hadoop生态系统这15年¹的发展历程,解释它在过去十年中是如何成长和成熟的,以及大数据生态系统在过去几年中是如何不断发展的。

因此,请系好安全带,进行为期20年的时间旅行,我们的故事开始于2003年,在旧金山南部的一个小镇。

免责声明:我最初的计划是用提到的公司和软件的标志来说明这篇文章,但由于TDS禁止广泛使用标志,我决定用随机的图片和无用的琐事来保持娱乐性。试着回忆一下我们当时在哪里,做了什么,这很有趣。

2003-2006:开始

(照片由 罗伯特-安德森于)

始于2003年: iTunes, Android, Steam, Skype, Tesla.

始于2004年:Thefacebook, Gmail, Ubuntu, World of Warcraft.

始于2005年:Youtube, Reddit.

始于2006年:推特, 蓝光.Waze, Oblivion.

这一切都开始于本世纪初,当时在山景城的一家已经不算小的创业公司,名为谷歌,正试图为整个已经不算小的互联网建立索引。他们不得不面对两个主要的挑战,但在这样的规模下还没有解决。

如何在成千上万的磁盘上存储数百兆字节的数据。
在一千多台机器上存储数百兆字节的数据,并且没有停机、数据丢失。
甚至是数据不可用?

如何以有效和有弹性的方式并行计算,以处理所有这些机器上的所有数据?
在所有这些机器上处理所有这些数据?

为了更好地理解为什么这是一个困难的问题,考虑一下,当你有一个有一千台机器的集群时,平均总是至少有一台机器停机²。

从2003年到2006年,谷歌发布了三篇研究论文,解释了他们的内部数据架构,这将永远改变大数据行业。第一篇论文是在2003年发表的,题目是"谷歌文件系统".第二篇论文是在2004年发表的,题目是"MapReduce。简化大型集群上的数据处理",根据谷歌学术的数据,从那时起已经被引用了超过21000次。第三篇论文于2006年发表,题目是"Bigtable结构化数据的分布式存储系统"。即使这些论文对Hadoop的诞生至关重要,但谷歌并没有参与其诞生本身,因为他们保留了源代码的所有权。然而,这个故事背后的故事是非常有趣的,如果你没有听说过Jeff DeanSanjay Ghemawat,那么你一定要阅读本文.

同时,Hadoop之父,一位名叫Doug Cutting的雅虎员工,他已经是Hadoop的创造者。 Apache Lucene(搜索引擎库的核心是 淘宝网和 弹性搜索)的创造者,当时他正在进行一个高度分布式的网络爬虫项目,名为 Apache Nutch.和谷歌一样,这个项目需要分布式存储和计算能力来实现大规模。

在阅读了谷歌关于谷歌文件系统和MapReduce的论文后,Doug Cutting意识到他目前的方法是错误的,并从谷歌的架构中得到启发,在2005年为Nutch创建了一个新的子项目。 他以他儿子’的玩具(一只黄色的大象)。 Hadoop.这个项目从两个关键部分开始:Hadoop分布式文件系统(HDFS),以及MapReduce框架的实现。与谷歌不同,雅虎决定将该项目作为Apache软件基金会的一部分进行开源,从而邀请所有其他主要的科技公司使用并为该项目做出贡献,并帮助他们缩小与邻居的技术差距(雅虎总部位于桑尼维尔,紧邻山景城)。正如我们将看到的,接下来的几年超过了预期。当然,谷歌也做得相当好。

2007-2008:Hadoop的早期采用者和贡献者

(照片由 莱昂纳多-拉莫斯于 )

始于2007年: iPhone, Fitbit, Portal, Mass Effect, Bioshock, The Witcher.

始于2008年:苹果应用商店、安卓市场、Dropbox、Airbnb、Spotify、谷歌浏览器。

很快,其他面临类似体积问题的公司开始使用Hadoop。在过去的日子里,这意味着一个巨大的承诺,因为他们必须自己安装和管理集群,而且写一个MapReduce作业不是在公园里散步(相信我)。雅虎试图在编写MapReduce作业时减少复杂性,其结果是 Apache Pig是一个ETL工具,能够将自己的语言(Pig Latin)翻译成MapReduce步骤。但很快其他人也开始为这个新的生态系统作出贡献。

2007年,由23岁的马克-扎克伯格领导的一家年轻但发展迅速的公司Facebook,在Apache许可下开源了两个新项目。 Apache Hive和 Apache Cassandra一年之后。Apache Hive是一个能够将SQL查询转换为Hadoop上的Map-Reduce作业的框架,而Cassandra是一个宽列存储,旨在以分布式方式大规模访问和更新内容。Cassandra不需要Hadoop来运作,但随着MapReduce的连接器被创建,它迅速成为Hadoop生态系统的一部分。

与此同时,一家不太知名的公司Powerset正在开发一个搜索引擎,他从谷歌的Bigtable论文中得到启发,开发了 Apache HBase这是另一个依靠HDFS进行存储的宽列存储。Powerset很快就被微软收购了,用来启动一个新的项目。

最后但并非最不重要的是,另一家公司在Hadoop的快速采用中起到了决定性作用。亚马逊。通过启动亚马逊网络服务,即第一个按需云,并迅速通过弹性MapReduce服务增加对MapReduce的支持,亚马逊允许初创企业轻松地将他们的数据存储在s3上,即亚马逊的分布式文件系统,并在上面部署和运行MapReduce作业,而无需管理Hadoop集群的麻烦。

2008-2012:Hadoop供应商的崛起

(照片由 Spencer Davis)

始于2009年:比特币, Whatsapp, Kickstarter, Uber, USB 3.0.

始于2010年: iPad, Kindle, Instagram.

始于2011年:Stripe, Twitch, Docker, Minecraft, Skyrim, Chromebook.

使用Hadoop的主要痛点是设置、监控和维护Hadoop集群所需的大量努力。很快,第一家Hadoop供应商Cloudera在2008年成立,Hadoop之父Doug Cutting很快加入。Cloudera提出了一个预先包装好的Hadoop发行版,称为CDH,以及一个集群监控界面Cloudera Manager,最终使得安装和维护Hadoop集群以及其配套软件如Hive和HBase变得容易。之后不久,HortonworksMapR也出于同样的目的成立。Datastax在2010年成立时,Cassandra也得到了它的供应商。

很快,大家都同意,尽管Hive是一个处理巨大ETL批次的伟大的SQL工具,但它并不适合交互式分析和BI。任何习惯于标准SQL数据库的人都希望它们能够在几毫秒内扫描一个有一千条记录的表,而Hive却需要几分钟(这就是你让大象做老鼠的工作的结果)。这时,一场新的SQL战争开始了,这场战争至今仍在激烈进行(尽管我们会看到,从那时起,其他人已经进入了这个领域)。谷歌再次间接地对大数据世界产生了巨大影响,它在2010年发布了第四篇研究论文,名为"Dremel:网络规模数据集的互动分析".这篇论文描述了两个主要的创新:一个是分布式交互查询架构,它将激发我们在下文中提到的大多数交互式SQL;另一个是面向列的存储格式,它将激发几个新的数据存储格式,比如说 Apache Parquet由Cloudera和Twitter联合开发的,和 Apache ORC由Hortonworks和Facebook联合开发的 ,。

受Dremel的启发,Cloudera为了解决Hive的高延迟问题,并使自己在竞争对手中脱颖而出,于2012年决定启动一个新的开源SQL引擎,用于交互式查询,名为 阿帕奇小恶魔.同样,MapR也启动了自己的开源交互式SQL引擎,名为 Apache Drill而Hortonworks决定,他们宁愿努力使Hive更快,也不愿从头开始创建一个新的引擎,并开始了 Apache TezHive是MapReduce的第二版,并将Hive改编为Tez,而不是MapReduce。有两个原因促使他们做出这个决定:第一,他们的规模比Cloudera小,没有足够的人力来采取与他们相同的方法;第二,他们的大多数客户已经在使用Hive,他们宁愿让它工作得更快,也不愿意切换到另一个SQL引擎。正如我们将看到的,很快就出现了许多其他的分布式SQL引擎,而 "人人都比Hive快 "成为了新的座右铭。

2010-2014年:Hadoop 2.0和Spark革命

(图片由 Lisa Yount)

始于2012年:UHDTV,Pinterest,Facebook达到10亿活跃用户,Gagnam Style视频在Youtube上达到10亿次浏览。

始于2013年:爱德华-斯诺登泄露NSA文件, React, Chromecast, 谷歌眼镜, Telegram, Slack.

当Hadoop正在整合并增加一个新的关键组件时。 YARN(Yet Another Resource Manager)作为其官方的资源管理器,这个角色之前是由MapReduce笨拙地完成的,当这个开源项目 Apache Spark开始以前所未有的速度获得牵引力。

很快就可以看出,Spark将成为MapReduce的一个很好的替代品,因为它有更好的功能,更简单的语法,而且在许多情况下比MapReduce快得多,特别是由于它能够在RAM中缓存数据。与MapReduce相比,唯一的缺点是一开始不稳定,随着项目的成熟,这个问题逐渐消失。它与Hive也有很好的互操作性,因为SparkSQL是基于Hive的语法的(实际上,他们一开始就借用了Hive的词法/解析器),这使得从Hive迁移到SparkSQL相当容易。它在机器学习领域也获得了巨大的吸引力,因为之前在MapReduce上编写机器学习算法的尝试,如 Apache Mahout(现在已经退役了)很快就被Spark的实现所超越了。

为了支持Spark的快速发展并使其盈利,其创建者在2013年成立了Databricks。从那时起,它的目标是使每个人都能进行大规模的数据操作,通过提供许多语言(Java、Scala、Python、R、SQL甚至.NET)的简单而丰富的API以及与许多数据源和格式(csv、json、parquet、jdbc、avro等)的本地连接器。值得注意的是,Databricks采取了与他们的前辈不同的市场策略:Databricks没有提出Spark的内部部署(Cloudera和Hortonworks很快将其添加到自己的平台上),而是选择了纯云平台的报价,从AWS(这是当时最流行的云)开始,其次是Azure和GCP。九年后,我们可以肯定地说,这是一个明智之举。

同时,其他正在崛起的科技公司也开源了处理实时事件的新项目,如 Apache Kafka LinkedIn制作的分布式消息队列,以及Apache Storm Twitter制作的分布式实时计算引擎³。这两个项目都是在2011年开源的。另外,在这一时期,亚马逊网络服务正变得像以前一样流行和成功。Netflix在2010年的惊人增长,主要是由亚马逊的云计算实现的,这一点就可以说明问题。云计算的竞争者终于开始出现,微软Azure在2010年开始普遍使用,谷歌云平台(GCP)在2011年开始使用。

2014-2016年达到顶峰⁴。

(照片由 Wilfried Santer)

始于2014年:Terraform, Gitlab, Hearthstone.

始于2015年。Alphabet, Discord, Visual Studio Code.

从那时起,作为Hadoop生态系统一部分的项目数量继续成倍增长。它们中的大多数在2014年之前就开始开发,其中一些也在那之前成为开源项目。项目的数量开始变得混乱,因为我们达到了这样的程度:对于每一个需求,都有多个软件解决方案存在。更多的高级项目也开始出现,比如。 Apache Apex(现在已经退役)或 Apache Beam(主要由Google推动),旨在提供一个统一的接口来处理各种分布式后端上的批处理和流处理,如Apache Spark、Apache Flink或Google的DataFlow。

我们还可以提到,由于AirbnbSpotify的出现,我们终于开始看到好的开源调度器进入市场。调度器的使用通常与使用它的企业的业务逻辑相联系,而且它也是一个相当自然和直接的软件编写,至少在开始时是这样。然后你就会意识到,要保持它的简单和易于他人使用是一项非常困难的任务。这就是为什么几乎每家大的科技公司都编写并(有时)开源了自己的软件。然而,从来没有一个广泛的共识,认为其中一个是非常好的选择,大多数公司坚持自己的。幸运的是,2015年左右,Airbnb开源了 Apache Airflow,而Spotify则开源了Liuge⁵,这两个调度器在其他公司中迅速达到了很高的采用率。特别是,Airflow现在可以在SaaS模式下的 谷歌云平台和 亚马逊网络服务.

在SQL方面,出现了其他几个分布式数据仓库,旨在提供比Apache Hive更快的互动查询能力。我们已经谈到了Spark-SQL和Impala,但我们还应该提到Presto在2013年由Facebook开源的 "数据仓库",在2016年被亚马逊重新命名为雅典娜在2016年被亚马逊重塑为他们的SaaS产品,并在其原始开发者离开Facebook后被Fork,它的原始开发者在离开Facebook后被Fork为在专有方面,也发布了几个分布式SQL分析仓库,如谷歌的BigTable在2011年首次发布,亚马逊的Redshift在2012年和Snowflake创立于2012年。

要获得作为Hadoop生态系统的一部分被引用的所有项目的列表,其中引用了150多个项目.

2016-2020年 容器化和深度学习的崛起,以及Hadoop的衰落

Photo by 杨-坎蒂于 Unsplash

始于2016年:Occulus Rift, Airpods, Tiktok.

始于2017年:Microsoft Teams, Fortnite.

始于2018年:GDPR, 剑桥分析公司的丑闻,。

2019年开始:迪斯尼+, 三星Galaxy Fold, Google Stadia

在接下来的几年里,一切都在不断加速和相互联系。要跟上大数据市场中新技术和新公司的名单变得越来越困难,因此,为了简短起见,我将谈谈在我看来对大数据生态系统影响最大的四个趋势。

第一个趋势是数据基础设施向云端的大规模迁移,HDFS被亚马逊S3谷歌存储Azure Blob存储等云存储所取代。

第二个趋势是容器化。你可能已经听说过Docker和Kubernetes了。 码头是一个容器化框架,于2011年推出,从2013年开始迅速流行。在2014年6月,谷歌开源了它的内部容器编排系统 Kubernetes(a.k.a. K8s),该系统立即被许多公司采用,以建立其新的分布式/可扩展架构的基础。Docker和Kubernetes使公司能够部署新型的分布式架构,更加稳定和可扩展,适用于许多用例,包括基于事件的实时转换。Hadoop花了一些时间来追赶docker,因为在Hadoop中启动Docker容器的支持是在2018年的3.0版本到来。

第三个趋势,如前所述,是用于分析的完全管理的大规模并行SQL数据仓库的崛起。现代数据栈 "和2016年首次开源的dbt的崛起很好地说明了这一点。

最后,影响Hadoop的第四个趋势是深度学习的出现。在2010年下半年,每个人都听说过深度学习和人工智能:AlphaGo在围棋比赛中击败了世界冠军柯洁,这是一个里程碑,就像20年前IBM的深蓝在国际象棋中击败卡斯帕罗夫那样。这一技术飞跃已经完成了奇迹,并承诺会有更多的奇迹,如自动驾驶汽车,通常与大数据有关,因为它需要压缩大量的信息,以便能够训练自己。然而,Hadoop和机器学习是两个完全不同的世界,它们很难在一起工作。事实上,深度学习推动了对大数据新方法的需求,并证明了Hadoop并不是适用于一切的工具。

长话短说:从事深度学习的数据科学家需要两样东西,而Hadoop当时还不能提供。他们需要GPU,而Hadoop集群节点通常没有GPU,而且他们需要安装最新版本的深度学习库,如TensorflowKeras,这在整个集群中很难做到,尤其是当多个用户要求同一库的不同版本时。Docker很好地解决了这个问题,但Docker对Hadoop的整合花了不少时间,而数据科学家们现在就需要它。因此,他们通常更愿意用8个GPU生成一个虚拟机,而不是使用一个集群。

这就是为什么当Cloudera在2017年进行IPO时,他们已经将开发和营销重点放在了他们最新的软件上,即 数据科学工作台,这不是基于Hadoop或YARN,而是基于Docker和Kubernetes的容器化,并允许数据科学家将他们的模型与自己的环境作为一个容器化的应用程序进行部署,而不会有安全或稳定性问题的风险。

这还不足以阻止他们的衰退。2018年10月,Hortonworks和Cloudera合并,只剩下Cloudera这个品牌。2019年,MapR被惠普企业(HPE)收购。2021年10月,一家名为CD&R的私人投资公司以低于初始价格的股票价格收购了Cloudera。

不过,Hadoop的衰落并不意味着它的死亡,因为许多大公司仍然在使用它,特别是在内部部署方面,而且所有围绕它建立的技术都在使用它,或者至少是它的一部分。创新也仍在进行中。例如,新的存储格式被开源了,如 Apache Hudi最初于2016年在Uber开发。 Apache Iceberg2017年在Netflix开始,以及 Databricks的Delat Lake在2019年将其开源。有趣的是,这些新文件格式背后的主要目标之一是为了规避我提到的第一个趋势的后果。Hive和Spark最初是为HDFS构建的,而 HDFS所保证的一些性能特性在向S3等云存储的迁移中丢失了,这导致了效率的降低。但我不会在这里讨论细节,因为这个特定的主题需要另一篇完整的文章。

2020-2023年的现代

(照片由 乔纳森-罗杰于 Unsplash)

于2020年开始:COVID-19大流行。

2021年开始:Log4Shell漏洞,Meta,Dall-E。

2022年开始:乌克兰战争, Midjourney, 稳定的扩散。

如今,云中的Hadoop部署大多被Apache Spark或Apache Beam⁶应用所取代(大多在GCP上),而Databricks亚马逊的Elastic Map Reduce(EMR)Google Dataproc/DataflowAzure Synapse则从中获利我还看到许多年轻的公司直接瞄准了 "现代数据栈 "的方法,围绕SQL分析仓库,如BigQuery、Databricks-SQL、Athena或Snowflake,由无代码(或低代码)的数据摄取工具提供,并以dbt.com组织。 其中’似乎根本不需要Spark这样的分布式计算工具.当然,那些仍然喜欢内部部署的公司仍然在使用Hadoop和其他开源项目,如Spark和Presto,但被转移到云端的数据比例每年都在增加,我认为目前没有理由改变这种情况。

随着数据产业的不断成熟,我们也看到更多的元数据管理和目录工具被建立和采用。在这个范围内,我们可以提到 Apache Atlas,由Hortonworks在2015年开始。Amunson,由Lyft在2019年开源的,以及Datahub,在2020年由Linkedin开源。许多私营技术初创公司也出现在这一领域。

我们也看到了围绕新的调度器技术建立的初创公司,如 Prefect, Dagster Flyte,它们的开源资源库分别于2017年、2018年和2019年启动,并且正在挑战Airflow目前的霸权地位。

最后,Lakehouse的概念已经开始出现了。Lakehouse是一个平台,结合了数据湖和数据仓库的优势⁷。这使得数据科学家和商业智能用户可以在同一个数据平台内工作,从而使治理、安全和知识共享更加容易。由于Spark在SQL和DataFrames之间的多功能性,Databricks很快就在这个产品报价上定位了自己,他们在Snowflake之后以 SnowparkAzure Synapse 以及最近的谷歌公司的BigLake在开源方面。 Apache Dremio自2017年以来提供了一个Lakehouse架构。

2023年 - 谁能告诉我们未来会是什么样子?

2023年开始:谁知道?(照片由 安妮-斯普拉特于 潇湘晨报)

自从这一切开始以来,大数据领域的开源项目和初创公司的数量一直在逐年增加(只要看一下 2021年景观就可以看到它已经变得多么庞大)。我记得在2012年左右,有些人预测新的SQL战争会结束,真正的胜利者最终会出现。这还没有发生。所有这一切在未来将如何发展是很难预测的。还需要几年的时间才能尘埃落定。但是,如果我不得不做一些胡乱的猜测,我将做出以下预测。

  • 正如其他人已经指出的正如其他人已经指出的那样,现有的主要数据平台(Databricks、Snowflake、BigQuery、Azure Synapse)将继续改进并增加新的功能,以缩小彼此之间的差距。我希望看到每个组件之间有越来越多的连接,还有像SQL和Python这样的数据语言。
  • 在未来几年,我们可能会看到新项目和新公司的数量放缓,尽管这更多地是由于新的网络泡沫破裂后缺乏资金(如果这曾经发生),而不是由于缺乏意愿或想法。
  • 从一开始,主要缺乏的资源就是熟练的劳动力。这意味着对大多数公司来说⁸,在性能问题上投入更多的钱,或迁移到更有成本效益的解决方案,而不是花更多的时间去优化它们。特别是现在主要分布式仓库的存储成本已经变得非常便宜。但也许在某些时候,供应商之间的价格竞争对他们来说会变得更加难以维持,价格也会上升。即使价格不涨,企业存储的数据量也在逐年增加。 以及与之相关的低效率成本。也许在某个时候,我们会看到一个新的趋势,人们开始寻找新的、更便宜的开源替代品,一个新的类似Hadoop的周期将再次开始。
  • 从长远来看,我相信真正的赢家将是云计算供应商,谷歌、亚马逊和微软。他们所要做的就是等待和观察风向的变化,等待时机,然后收购(或简单地复制)最有效的技术。每一个被整合到他们的云中的工具都会使用户的事情变得更加容易和无缝,特别是在涉及到安全、管理、访问控制和成本管理时。只要他们不犯重大的组织性错误,我不认为现在有谁能追上他们。

总结

我希望你喜欢和我一起进行的这次记忆之旅,并希望它能帮助你更好地理解(或简单地记住)这一切是如何开始的。我试图使这篇文章对每个人来说都很容易理解,包括非技术人员,所以不要犹豫,与那些有兴趣了解大数据来源的同事分享它。

最后,我想强调的是,如果没有开源和知识共享的神奇力量,人类在人工智能和大数据方面的知识和技术永远不会发展得这么快。我们应该感谢谷歌,他们最初通过学术研究论文分享了他们的知识,我们也应该感谢所有将其项目开源的公司。在过去的20年里,开源和免费(或至少是廉价)获取技术一直是互联网经济创新的最大动力。20世纪80年代,一旦人们能够买得起家用电脑,软件创新就真正起飞了。3D打印也是如此。 它已经存在了几十年,并在2000年随着自我复制机器的到来而诸如,树莓派的到来推动了DYI运动的发展。

开源和轻松获取知识应该永远被鼓励和争取,甚至比现在更多。这是一场永无止境的战斗。一场这样的战斗,也许是最重要的一场。 这些天在人工智能方面正在发生的事情.大公司确实为开源做出了贡献(例如谷歌的TensorFlow),但他们还学会了如何使用开源软件作为金星捕蝇器吸引用户进入他们的专有生态系统,同时将最关键的(和最难复制的)功能放在专利后面。

对人类和世界经济来说,我们继续尽可能地支持开源和知识共享工作(如维基百科)是至关重要的。政府、公民、公司以及最重要的投资者必须明白这一点:增长可能是由创新驱动的,但创新是由与大众分享知识和技术驱动的。

"做你必须做的事。"做你必须做的事,做你可能做的事"(这句话写在巴黎人道教堂的墙壁上)。

脚注

¹ : 如果算上谷歌的前传,甚至是20年,所以才有这个标题。

²:也许在2022年,我们在硬件可靠性方面取得了足够的进展,使这一点不那么真实,但这绝对是20年前的情况。

³ : 在2016年。 Twitter开源了Apache Heron (似乎仍处于Apache的孵化阶段)来取代Apache Storm。

⁴: 双关语意。

⁵ : 在2022年。 Spotify决定停止使用Luigi,转而使用Flyte

⁶:我认为Apache Beam主要用于GCP和DataFlow。

⁷: 正如Databricks所说Lakehouse将数据湖的灵活性、成本效益和规模与数据仓库的数据管理和ACID交易相结合。

⁸:当然,我在这里说的不是像Netflix和Uber那样规模的公司。

本文由闻数起舞翻译自《2003–2023: A Brief History of Big Data》

原文链接
https://towardsdatascience.com/2003-2023-a-brief-history-of-big-data-25712351a6bc