体系课-大数据工程师2022版2.0升级版无密

download:体系课-大数据工程师2022版2.0升级版无密 大数据的历史
2018年9月30日,中国互联网巨头腾讯公司总裁刘炽平向全体员工发出一封信,正式启动公司历史上第三次重大组`
织架构调整。被外界解读为腾讯此举是为了将人工智能、大数据、云计算提升到更核心的战略地位。事实上,不仅是腾讯,谷歌、亚马逊、阿里巴巴、百度、小米等互联网巨头近年来都在调整组织架构,都是为了适应ABC时代的必然到来。ABC是指以A(AI)、B(大数据)、C(云)为代表的产业趋势和技术变革。业界普遍认为,这将是继PC时代、移动互联网时代之后的又一次产业变革,预示着一个全新的时代已经到来。其中,云计算(C)将像我们日常生
`活中的水和电一样,作为整个互联网的底层基础设施,为企业的数据资产提供保管和访问的场所和渠道。有了基础设施,只有数据才是企业真正有价值的资产。这里所说的数据包括企业内部的经营信息、互联网上的商品信息、聊天软件中的人际交往信息、位置信息等。这些数据的量将远远超过企业现有IT架构和基础设施的承载能力,企业应用的实时性要求也将大大超过现有的计算能力。如何利用这些宝贵的数据资产,使其服务于国家治理、企业决策和个人生活,是大数据处理的核心,也是云计算的内在灵魂和必然升级方向。
在这种趋势下,大数据这个词在近几年的很多技术会议上越来越多地被提及。人们用它来描述和定义信息时代产生的海量数据,命名相关的技术发展和创新。全球知名咨询公司麦肯锡率先提出大数据时代的到来。事实上,大数据在物理、生物、环境生态、军事、金融、通信等行业领域已经存在了一段时间,只是因为近年来互联网和it行业的发展才引起人们的关注。根据中国信息通信研究院结合大数据相关企业的研究测算,2017年中国大数据产业规模为4700亿元,同比增长30%。预计到2020年产业规模将达到万亿元。(资料来源:中国信息通信研究院《大数据白皮书(2018)》
大数据到底是什么?根据研究机构Gartner给出的定义,大数据需要新的处理模式,以具备更强的决策、洞察和流程优化能力,适应海量、高增长率、多元化的信息资产。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些有意义的数据进行专业的处理。换句话说,如果把大数据比作一个行业,这个行业盈利的关键在于提高数据的“处理能力”,通过“处理”实现数据的“增值”。(来源:搜狗百科)而麦肯锡全球研究院给出的定义是:规模大到在获取、存储、管理、分析等方面大大超过传统数据库软件工具能力的数据集合。具有数据规模海量、数据流转迅速、数据类型多样、价值密度低四大特点。在众多定义中,搜狗百科中的大数据词条更吸引我:大数据是指在一定时间范围内无法被常规软件工具捕捉、管理和处理的数据集合,是一种海量、高增长、多元化的信息资产,需要新的处理模式来拥有更强的决策力、洞察力和发现力以及流程优化能力。
被誉为“大数据商业应用第一人”的维克托·迈尔·舍恩伯格认为,大数据是指对所有数据进行分析处理的方式,而不是随机分析(如抽样调查)的捷径。大数据的核心是预测,它将为人类生活创造前所未有的可量化维度。他认为大数据时代最大的变化是放弃对因果关系的渴求,转而关注相关性。也就是说,我们只需要知道它是什么,而不需要知道为什么。这颠覆了人类几千年的思维常规,对人类的认知和与世界沟通的方式提出了全新的挑战(来源:大数据时代作者访华与田溯宁大数据对话_网易科技)。这些IBM的总结就是5V的特征:量(大数量)、速(高速)、变(多样)、值(低值密度)和准(真实性)。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些有意义的数据进行专业的处理。换句话说,如果把大数据比作一个行业,这个行业盈利的关键在于提高数据的“处理能力”,通过“处理”实现数据的“增值”。
从技术发展的历史来看,大数据处理可以分为前身、生成和应用三个阶段。从90年代到本世纪初,可以说是大数据处理的前身。当时数据存储和处理的主流还是在数据库上。随着数据库技术和数据挖掘理论的成熟,数据仓库和数据挖掘技术开始逐步发展,各种商业智能工具开始应用,如数据仓库、专家系统、知识管理系统等。
随着互联网上各种新服务的出现,大量的非结构化数据涌现出来,这使得传统的数据库技术越来越难以应对。例如,脸书的流行使得社交应用产生大量的非结构化数据,而众所周知的谷歌公司的搜索引擎业务自然也要面对不断膨胀的海量数据的存储和处理,这使得大数据技术的发展进入了快车道。一般以Google 2003-2006年发表的三篇论文作为大数据处理技术的起点,分别是GFS、MapReduce和Bigtable。GFS(2003)是一个可扩展的分布式文件系统,用于访问大量的分布式数据。它运行在廉价的普通硬件上,并提供容错功能。MapReduce(2004)是一种处理海量数据的并行编程模式,用于大规模数据集的并行操作。可以充分利用GFS集群中所有低成本服务器提供的大量CPU,在架构上可以看作是对GFS的补充。它与GFS一起构成了海量数据处理的核心。GFS适合存储少量非常大的文件,但不适合存储成千上万的小文件。为了处理大量的格式化和半格式化数据,管理非关系数据的分布式数据存储系统BigTable(2006)诞生了。它的设计目标是快速可靠地处理PB级数据,可以部署到数千台机器上。以这三篇论文为标志,可以看出大数据处理技术的起源。
大数据处理技术的发展不得不提Hadoop。2005年,阿帕奇软件基金会主席Doug Cutting在雅虎创立了这个项目。它是一个用于大数据分析的开源分布式计算平台,可以安全地扩展应用程序,以处理数千个节点和数Pb的数据。通过搭建一个关于MapReduce的开源平台,Hadoop在不经意间创造了一个欣欣向荣的生态系统,其影响力远远超出了其最初Hadoop的范畴。在Hadoop社区中,工程师可以从早期的GFS和MapReduce论文,以及Pig、Hive、HBase、Crunch等许多有用的工具中改进和扩展这些思想。都是在这个基础上产生的。这种开放性是整个行业现有思想多样性的关键,Hadoop的开放生态直接推动了流计算系统的发展。随着互联网行业的快速发展,数据生产、使用、处理和分析的速度也在以不可思议的速度增长。社交媒体、物联网、广告和游戏等垂直领域开始处理越来越大的数据集。从业务角度来说,这些行业需要一种接近实时的数据处理和分析,所以像Hadoop这种批量处理大数据的传统框架并不适合这些场合。自2007年以来,许多开源项目相继推出,以新的思路处理来自多个数据源的连续数据记录,其中Apache的许多项目最为著名。目前,这些项目处于不同的发展阶段。
如今,随着智能移动设备、物联网等技术的广泛应用,数据碎片化、分布式、流媒体的特征更加明显。大数据技术开始与移动、云技术结合,开始向复杂事件处理、图形数据库、内存计算方向发展。大数据的概念越来越被垂直行业和大众所接受。通过催化新的商业模式,大数据和传统行业之间的界限变得越来越模糊。人们开始更加关注商业创新而不是技术本身。大数据行业的主题也转向了应用对行业的变革性影响,已经到了真正的应用阶段。
大数据的发展方向
大数据技术是一种新的技术和架构,致力于以更低的成本和更快的速度收集、处理和分析各种超大规模的数据,并从中提取有价值的信息。随着这项技术的蓬勃发展,它让我们处理海量数据变得更容易、更便宜、更快捷,成为使用数据的好助手,甚至改变了很多行业的商业模式。在人工智能、云计算和物联网的帮助下,即使是复杂的大数据,普通的数据从业者也可以使用相应的数据分析工具进行处理。大数据分析已经脱离了炙手可热的IT趋势标签,现在已经成为公司业务的必要组成部分。它将很快取代黄金成为人类最有价值的资产之一。《未来简史》中说:“谁拥有数据,谁拥有数据的解读权,谁就可能在未来的竞争中占得先机”。为了让读者快速了解大数据的最新信息,以下是一些最热门的大数据趋势,以促进行业的未来发展。以下是阿里云社区翻译整理的大数据值得了解的十大数据发展趋势。
快速增长的物联网网络
由于物联网(IoT)技术,智能手机用于控制家用电器变得越来越普遍。随着小米和阿里等智能设备在家庭中自动化特定任务的普及,物联网热潮正在吸引许多公司投资这项技术的研发。
更多的组织将抓住机会提供更好的物联网解决方案,这必然会导致更多收集大量数据的方法,以及管理和分析数据的方法。行业内的研究趋势是推广更多可以收集、分析和处理数据的新设备,如手环、智能音箱和眼镜。
流行的人工智能技术
人工智能现在更常用于帮助大型和小型公司改善业务流程。人工智能现在可以比人类更快、更准确地执行任务,从而减少人类引入的错误,改善整体流程,使人们能够更好地专注于更关键的任务,并进一步提高服务质量。
人工智能的快速发展和更高的薪酬吸引了很多开发者进入这一领域。好在市面上有成熟的人工智能开发工具箱可用,大家可以根据实际任务构建相应的算法,满足日益增长的需求。如果单个组织能够找到最有效的方法将其集成到业务流程中,他们可能会获得更大的优势。
预测的兴起
大数据分析一直是企业获取竞争优势、实现目标的关键策略之一。研究人员使用必要的分析工具来处理大数据,并确定某些事件的原因。现在,通过大数据的预测分析可以帮助更好地预测未来可能发生的事情。
毫无疑问,这种策略在帮助分析收集到的信息以预测消费者行为方面非常有效,这使得公司可以了解客户的下一步行动,以确定他们在进行相关开发之前必须采取的措施。数据分析还可以提供更多的数据脉络,帮助理解背后的真正原因。
黑暗数据迁移到了云中
没有转换成数字格式的信息称为暗数据,这是一个尚未开发的庞大数据库。预计这些仿真数据库将被数字化并迁移到云上,然后用于有利于企业的预测和分析。
首席数据官将发挥更大的作用。
现在,大数据越来越成为实施商业战略的重要组成部分,首席数据官也在其组织中扮演着更加重要的角色。首席数据经理应该引导公司朝着正确的方向发展,并采取更加积极的措施。这一趋势为寻求职业发展的数据营销人员打开了大门。
量子计算
目前,使用我们现有的技术来分析和解释大量数据可能需要很多时间。如果我们能够在短短几分钟内同时处理数十亿条数据,我们就可以大大缩短处理时间,让公司有机会及时做出决策,以达到更好的效果。
这个艰巨的任务只能通过量子计算来实现。虽然目前量子计算机的研究还处于起步阶段,但是已经有一些公司在使用量子计算机进行相关实验,帮助不同行业的实践和理论研究。很快,谷歌、IBM和微软等大型科技公司将开始测试量子计算机,并将其整合到业务流程中。
开源解决方案
目前,有许多公共数据解决方案可用,如开源软件,在加速数据处理方面取得了长足的进步,同时具有实时访问和响应数据的功能。由于这个原因,预计它们将在未来迅速发展,需求量很大。虽然,开源软件很便宜,但是你可以用它来降低企业的运营成本。然而,使用开源软件也有一些缺点。这里有一些你需要知道的缺点。
边缘计算
由于物联网的发展趋势,许多公司正在转向研究互联设备,以收集更多的数据或处理客户的数据,这产生了技术创新的需求。这项新技术旨在减少从数据收集到云、其分析和采取行动的需要的滞后时间。
要解决这个问题,边缘计算可以提供更好的性能,因为进出网络的数据更少,云计算的成本更低。如果公司选择删除以前从物联网收集的不必要的数据,公司也可以从降低存储和基础设施的成本中受益。此外,边缘计算可以加快数据分析,为公司做出正确的反应提供充足的时间。
更智能的聊天机器人
由于人工智能的快速发展,许多公司现在都在部署聊天机器人来处理客户查询和其他应用场景,以提供更个性化的交互模式,并消除对人工的需求。
大数据与提供更愉快的客户体验有很大关系,因为机器人处理大量数据,然后根据客户在查询中输入的关键词提供相关答案。在互动的过程中,他们还可以从交谈中收集和分析关于客户的信息,进而帮助营销人员制定更简化的策略,以实现更好的用户转化率。
摘要
所有这些跨行业的技术飞跃,都是建立在大数据发展所奠定的坚实基础之上的。技术进步将继续帮助我们通过更智能的流程创造更美好的社会。我们必须充分理解如何使用这项技术,以及如何实现特定的业务目标。只有将两者结合起来,我们才能最终受益于这些趋势。这些只是开始,大数据将继续成为我们在业务和技术领域所经历的变革的催化剂。我们能做的就是思考如何有效地适应这些变化,并利用这种技术使我们的业务蓬勃发展。
别人网和去年发布的《2018全球大数据产业》将呈现七大发展趋势。
大数据处理框架介绍
从技术角度来看,一般认为Google在2003-2006年发表的三篇经典文章是GFS、BigTable和MapReduce,这三者并称为Google的分布式计算三驾马车。由此,第一个在开源社区获得巨大关注的大数据处理框架Hadoop诞生了。这个由HDFS、HBase和MapReduce主导的技术栈,影响至今。
大数据处理一开始大多采用离线处理,其核心处理逻辑是MapReduce。所谓Mapreduce就是把所有的操作分为两类:map和reduce。Map用于将数据分成多个部分,并分别进行处理。Reduce合并处理后的结果得到最终结果。MapReduce的概念是好的,但在实际应用中性能较差。然后Spark framework通过其强大的高性能批处理技术逐渐取代MapReduce成为大数据处理的主流。
随着时代的发展,很多商家已经不满足于线下批量处理,越来越多的场景需要实时处理。为了满足这种需求,Spark引入了Spark Streaming以微批量模拟准实时效果,但处理效果并不理想。Twitter在2011年推出的Storm stream计算系统就是标志,开启了更低延迟的流处理方案。之后,流处理的模式被Flink发扬光大。Flink并不局限于简单的流计算引擎,而是提供了更通用的流处理框架,可以处理批处理任务,从而开始正面挑战Spark的地位。
在大数据处理技术的讨论中,我们经常会听到两个词:处理框架和处理引擎。按照我个人的理解,引擎和框架其实没什么区别,都是指系统中数据的计算。但是,大多数时候,实际负责处理数据操作的组件称为引擎,而一系列功能相似的组件称为框架。比如Hadoop可以看作是一个以MapReduce为默认处理引擎的处理框架,而另一个处理框架Spark可以并入Hadoop来替代MapReduce。组件之间的互操作性也是大数据系统如此灵活的原因之一。所以在谈大数据的时候,引擎和框架一般可以替换,也可以同时使用。
如果按照处理数据的状态来划分大数据的处理框架,有的系统以批处理方式处理数据,有的系统以流方式处理不断流入系统的数据,有的系统两种方式都支持。所以我们可以把大数据处理框架分为三种:批处理、流处理和混合处理。
成批处理
所谓批处理,就是先将一个数据处理任务分解成更小粒度的任务,这些任务分布在集群中的每个实例上进行计算,然后重新计算每个实例的计算结果,组合成最终的结果。批处理系统通常操作大量的静态数据,直到这些数据都被处理后才能得到返回的结果。这种模式适用于需要访问全部记录才能完成的工作。例如,在计算总数和平均数时,必须将数据集作为一个整体对待,而不是将其视为多个记录的集合。批处理因其在处理海量持久数据方面的优异性能,通常用于处理历史数据。许多联机分析处理系统的底层计算框架是批处理。批处理中使用的数据集通常具有以下特征:
【体系课-大数据工程师2022版2.0升级版无密】有界:一个批处理数据集代表一个有限的数据集。
持久性:数据通常总是存储在某种类型的持久性存储位置。
批量:批处理通常是处理非常大的数据集的唯一方法。
Hadoop,批处理框架的代表,是第一个在开源社区获得巨大关注的大数据处理框架,在很长一段时间里,它几乎是大数据技术的代名词。Hadoop是一种分布式计算基础设施。到目前为止,Hadoop已经形成了一个庞大的生态系统,内部实现了大量的算法和组件,其核心是HDFS和MapReduce。HDFS (Hadoop分布式文件系统)是一个分布式文件系统,可以构建在低成本的集群上。MapReduce是分布式任务处理架构,是Hadoop的基石。Hadoop的核心机制是通过HDFS和MapReduce对数据存储、内存和程序进行有效的利用和管理。Hadoop将许多常见且廉价的服务器组合成一个分布式计算-存储集群,从而提供大数据的存储和处理能力。
Hadoop实际上是一个大项目的统称,其中包含许多子项目:
HDFS:Hadoop分布式文件系统。它是GFS的开源实现,用于在Hadoop集群中的所有存储节点上存储文件。它可以在普通PC集群上提供可靠的文件存储,通过备份数据块的多个副本来解决服务器宕机或硬盘损坏的问题。
MapReduce:基于Java的并行分布式计算框架,是Hadoop的原生批处理引擎,也是Google的MapReduce paper的开源实现。
HBase:开源分布式NoSQL数据库,参考了Google的BigTable建模。
Hive:一个数据仓库工具。
猪:大数据分析平台。
Mahout:机器学习Java类库的集合,用来完成各种任务,比如分类、评估聚类和模式挖掘。它提供了一些经典的机器学习算法。
Zookeeper:开源分布式协调服务,由雅虎创建,是Google Chubby的开源实现。在Hadoop中,主要用于控制集群中的数据,比如管理Hadoop集群中的NameNode,Hbase中的Master选举,服务器之间的状态同步等。
Sqoop:用于在Hadoop和传统数据库之间传输数据。
Ambari:Hadoop管理工具,可以快速监控、部署和管理集群。
Hadoop MapReduce及其处理引擎提供了一套经过时间考验的批处理模型,可靠、高效、可扩展,方便人们处理海量数据。用户可以通过低成本的组件构建功能完备的Hadoop集群,因此这种廉价高效的处理技术可以在很多情况下灵活应用。与其他框架和引擎的兼容性和集成使Hadoop成为使用不同技术的各种工作负载处理平台的底层基础。但这种处理模式依赖于持久存储,计算任务需要在集群的节点上多次读写,所以速度会略逊一筹,但其吞吐量也是其他框架无法比拟的,这也是批处理模式的特点。
流程处理
流处理模式可以随时实时计算进入系统的数据。这种模式不需要对整个数据集进行操作,而是对通过系统传输的每个数据项进行操作。流程中的数据集是无边界的,这有几个重要影响:
完整的数据集只能代表到目前为止进入系统的数据总量。
工作数据集可能更相关,在特定时间只能表示单个数据项。
处理是基于事件的,除非显式停止,否则没有“结束”。处理结果立即可用,并将随着新数据的到来而更新。
我们小学的时候都做过这道数学题:一个水池有进水管和出水管。进水管开X个小时,出水管开Y个小时,水池会灌满水多久?流量处理系统就相当于这个水池,对来水(数据)进行处理,然后将处理后的水(数据)从出水管排出。这样数据就像水一样永不停息,在池子里处理。这种不间断地处理输入数据的系统称为流处理系统。流处理系统不操作现有的数据集,而是处理从外部系统访问的数据。流处理系统可以分为两种类型:
逐项处理:一次处理一条数据是真正的流处理。
微批:这种处理方式将短时间内的数据作为一个微批,在这个微批中处理数据。
由于海量数据的处理需要大量的时间,批处理不适合对处理结果要求较高的场景。无论是逐项处理还是微批量处理,其实时性能都远远优于批量处理模式,因此流处理适用于接近实时处理要求的任务场景,如日志分析、设备监控、网站实时流量变化等。因为及时反馈数据变化是这些领域的普遍要求,所以流处理适用于必须对变化或峰值做出响应并关注一段时间内变化趋势的数据。
流媒体系统领域的知名框架有Twitter的Storm、LinkedIn的Samza、阿里巴巴的JStrom、Spark的Spark Streaming等。它们都具有低延迟、可扩展性和容错性的优点,并允许你在运行数据流代码时将任务分配给一系列容错计算机并行执行。它们还提供简单的API来简化底层实现。这些框架中使用的术语可能不相同,但它们包含的概念实际上是相似的。这里以暴风为例介绍一下。
在Storm中,有一种用于实时计算的图结构,叫做拓扑。这个拓扑将被提交到集群中,集群中的主节点将分发代码,然后将任务分配给工作节点执行。拓扑中有两个角色:spout和bolt,其中spout发送消息,并负责以元组形式发送数据流。Bolt负责转换这些数据流。在bolt中可以完成计算、过滤等操作,bolt本身可以随机发送数据给其他bolt。spout发出的Tuple是一个不可变的数组,对应一个固定的键值对。

    推荐阅读