当您深入研究本章内容时,您首要的决议是在开源处理计划和云服务供给商供给的产品之间做出挑选。可是,还有更多需求考虑的要素。我将辅导您思考您的数据需求规模以及安排的灵敏性要求。

除此之外,咱们将探讨云服务模型的景象,从首要供给商到多云处理计划的杂乱性。本章最后将向您介绍三个重要的软件结构:Hadoop、Databricks 和 Snowflake。

您在本章中的问题答案将深刻地刻画您的数据架构。这不仅仅是开源与专有的挑选;它涉及到打造适宜您在数据架构世界中一起需求的完美技能组合。

挑选一个渠道

运用开源软件或云服务供给商(CSP)供给的软件的决议取决于各种要素,包含详细要求、预算、专业常识、数据敏感性和操控偏好。细心评价您安排的需求,并考虑云服务供给商软件的优势与开源软件供给的灵敏性和定制性之间的权衡。

开源处理计划

开源软件是指免费分发的软件,其源代码揭露可供任何人查看、修正和分发。一般,它是由一个程序员社区协作开发的,他们一起奉献自己的常识和专长来创立和改进软件。

开源软件有着丰厚的历史,跨过数十年。它起源于20世纪80年代的自由软件运动,由理查德斯托曼领导,该运动倡议软件自由。成立于1998年的敞开源代码倡议(OSI)创立了开源界说,并树立了开源软件答应证的规范,保证软件坚持免费和敞开供任何人运用。Linux 在推广开源软件方面发挥了重要效果。由于其灵敏性和低本钱,2010年代选用开源处理计划变得流行起来。像 GitHub 这样的协作渠道促进了开源软件的开展,而且这一运动现已扩展到了软件以外的范畴,包含敞开数据和硬件倡议。一些顶级开源软件项目包含 MySQL、PostgreSQL、MongoDB、Apache Hadoop、Apache Spark、Apache Kafka、Presto 和 Apache Airflow。

许多数据架构运用开源软件,但很少有架构是彻底由它构建的。大多数架构将开源软件与云服务供给商的产品结合运用。在数据架构中包含开源软件是值得考虑的。

您或许期望运用开源软件而不是云服务供给商的产品的一些首要原因包含:

  • 本钱节约

开源软件一般是免费运用的。这使其成为那些期望优化预算的安排的招引挑选。

  • 灵敏性和定制性

开源软件供给了修正和定制源代码以满意特定需求的自由。这使您可以依据安排的需求定制软件,依据需求增加或删去功用。

  • 透明度和信赖

开源软件的源代码是揭露的,任何人都可以查看以查找安全缝隙、过错和潜在后门。这种透明性促进了信赖,并为代码审查和改进营建了协作环境。

  • 快速立异和协作

开源软件获益于全球开发者社区的专业常识和改进。这种协作环境促进了快速立异,加快了软件开发周期,并发生了更牢靠和功用丰厚的处理计划。

  • 独立供货商

运用开源软件时,安排不会受限于特定的供货商或专有软件。他们可以自由挑选服务供给商或依据需求定制软件。

但也有一些潜在的劣势需求考虑:

  • 有限的支撑

与云服务供给商的软件不同,开源软件或许没有专门的客户支撑或服务等级协议。依靠社区支撑或许意味着不同的呼应时刻,因而处理要害问题或许需求更长的时刻。为了防止这个问题,公司一般会从供货商处购买支撑合同。此外,一些硬件和软件供货商更看重与云服务供给商处理计划的兼容性和支撑,而不是开源软件。这或许导致硬件驱动程序的可用性有限,或许某些软件运用程序得不到支撑。

  • 学习曲线和用户体会

运用开源处理计划一般需求有技能的开发人员或技能人员来有效地施行、定制和维护它们。这或许会导致额定的训练或招聘本钱。开源软件项目在文档质量、用户界面的友爱程度和安装的便利性方面也有所不同。有些项目或许缺少全面的文档或直观的用户界面,使初始设置和装备变得更具应战性。

  • 碎片化、规范化和兼容性

由于开源软件开发的散布式性质以及很多的开源项目和版别,编码风格、约好或办法的规范化很少。这或许导致碎片化,使得挑选适宜的处理计划或保证不同开源软件组件之间的兼容性变得困难。与现有体系集成或许需求额定的尽力。(了解更多,请参阅“Hadoop”)

  • 安全性和职责

即使在全球社区的审查下,开源软件中依然存在缝隙和过错。假如运用它,您有必要警觉地运用安全补丁和更新。此外,假如您的安排修正了开源软件的代码,它就承担了维护定制版别的安全性和完整性的职责。

  • 项目维护的不确定性

并非一切开源软件项目都在积极开发或供给长时刻维护。有时,项目或许停滞不前,很少更新或供给安全补丁。在选用开源软件处理计划之前,评价活动水平和社区支撑水平。

  • 常识产权考虑

在运用或向开源软件奉献时,安排有必要应对常识产权和答应责任问题。了解开源软件答应证的条款和条件以保证合规性并防止法令问题是至关重要的。

On-Premises Solutions

假如您的公司有本地数据库房处理计划,您或许正在考虑将其迁移到云端,或许至少在云端树立新的绿洲项目。可是,依然有一些情况下您或许期望将您的数据库房处理计划放在本地: 假如您的互联网连接速度慢或不存在,比方在深矿井、潜水艇、海上油井渠道或游轮上。

假如您需求毫秒级的功用,比方高容量邮件处理设备中的服务器。 假如将您的运用程序迁移到云端会违反第三方支撑合同。 假如您与数据中心有长时刻确定的租借合同,或许刚刚进行了十分大的设备购买。

假如您有很多本地发生的数据需求迁移到云端,而您的向云端的管道遭到约束,无法满意用户的陈述需求。您的陈述或许无法反映最新的数据,或许会推迟决议计划。 假如您计划在不久的将来更换或淘汰您的运用程序和数据库。

假如您的数据十分敏感(尽管这不再阻止许多安排将数据放入云端——大多数云服务供给商现在都有最高秘要的云)。

假如您公司的数据库有以上任何情况,您或许期望将这些数据库保留在本地,但您依然可以将其他数据库迁移到云端。在过去的几年里,我现已与数百家公司进行了评论,简直每一家公司都至少部分运用了云端。大多数公司现已关闭了一切的本地数据中心。关于任何新公司来说,在云端是一个显而易见的挑选。

假如您的数据库房在本地,您应该意识到以下束缚:

  • 有限的可扩展性

您扩展根底设备的才能遭到您可以购买的硬件的约束。假如您有必要运用某些供货商,假如现有硬件存在兼容性问题,或许假如硬件供货商正在阅历生产推迟,您的硬件或许会成为约束要素。同样,数据中心只有那么多的物理空间。当您没有满意的空间增加更多的服务器时,您只能挑选两个十分昂贵的选项:扩展您的数据中心或树立另一个数据中心。这两种办法都或许需求数月时刻。

  • 前期本钱

为本地处理计划购买硬件会发生十分大的前期本钱支出。硬件包含服务器硬件、用于包容硬件的数据中心空间、额定的存储设备、防火墙、网络交换机、用于拜访数据的高速网络(具有冗余性)、坚持体系运转所需的电源和冗余电源供应,以及安全和数据备份的本钱。

假如您的库房至关重要,那么您还需求装备一个灾祸康复站点,然后有效地将本钱加倍。

我常常告诉公司,假如他们具有自己的本地数据中心,那他们就是在做空调业务,由于他们有必要使一切这些硬件坚持凉爽。您不想把一切精力都放在剖析数据上吗?大多数公司更喜爱与云服务供给商协作,以年度运营费用的方式。

  • 人员本钱

您需求付出具有专业技能的员工或顾问来设置、办理、办理和支撑硬件和软件,调整产品功用,以及将产品和处理计划布置到生产环境中。当问题出现时,这会导致潜在的瓶颈,并将体系的职责留给客户而不是供货商。

  • 软件本钱

安排常常付出数十万美元的软件答应费用,用于数据库房软件和附加包,以及向其他终端用户(例如客户和供货商)供给对数据的拜访的答应费用。此类软件的年度支撑合同往往可以达到原始答应费用的20%。

现在让咱们来看看云端。

云服务供给商处理计划 云就像一个巨大的、无形的存储室,存在于乌有之中的某个当地。它答应咱们从任何当地存储、拜访和同享数据,同时防止了空间缺乏或丢失宝贵数据的危险。它的影响贯穿本书中描绘的一切架构,重新界说了咱们处理数据的方式。云核算供给了对同享核算资源(如服务器、存储和运用程序)的按需拜访,无需购买、具有和维护物理数据中心和服务器。这使得核算具有可扩展性、灵敏性和本钱效益。

具有一个云端数据库房处理计划有许多好处:

  • 可扩展性和弹性

云服务供给商的软件规划成可以无缝扩展的。您可以依据需求动态供给存储和核算资源,以满意高峰和稳定运用期间不断改变的作业负载的需求。容量是您需求的任何东西,无论您何时需求它。

  • 本钱

在云体系中,容量规划和办理(例如巨细、平衡和调整体系)的杂乱性和本钱已内置、主动化,并由您的云订阅费用掩盖。云服务供给商还供给灵敏的定价模型,因而您只需付出您实际运用的资源。您可以跟着需求削减硬件或运用无服务器选项。

这意味着您可以快速构建一个处理计划,假如不起效果,您可以简略地删去项目运用的一切云资源。失利本钱大大降低,这意味着您可以冒险测验新事物。

还需求考虑间接本钱节约:您不需求付出硬件、电力、构建和维护数据中心的员工,或许自己开发晋级。

  • 易于布置和办理

云服务供给商的软件一般带有集成的布置和办理东西,简化了设置和装备进程。这些东西简化了资源的装备和扩展、监督和维护使命,然后削减了运营开支。您可以在几小时乃至几分钟内创立一切云资源(如核算、存储和网络),而在本地启动处理计划或许需求几周乃至几个月的时刻。

  • 供货商支撑和服务等级协议(SLA)

云服务供给商供给专门的支撑和SLA,供给帮忙、毛病扫除和牢靠的服务可用性。

  • 集成生态体系

一般,云服务供给商的软件与该供给商的其他服务无缝集成。这可以更容易地集成和互操作不同的服务,并协助您运用供给商的更广泛的功用。

  • 保管服务

云服务供给商常常处理软件根底架构的特定方面,例如保管数据库、机器学习服务或无服务器核算。这些保管服务可以卸载操作杂乱性,使安排可以专心于其间心业务而不是办理根底架构。这也使您无需找到并付出第三方供货商的服务。

  • 继续立异和功用更新

云服务供给商定时推出新功用、服务和更新其软件产品。您可以从他们的立异中获益,而无需出资于晋级或集成新功用。

  • 更容易的招聘

很多的人运用云服务供给商的产品;开源软件可以有一个规模较小的用户群。因而,找到了解您安排运用的云产品的求职者或许会更容易。

  • 全球可用性和高可用性

云服务供给商的数据中心遍及全球,这使您可以将软件布置到更挨近您的方针受众的当地,或运用多区域冗余以完结高可用性。云服务供给商运用负载均衡将流量均匀散布到多台服务器上,保证没有单个服务器过载并导致停机。

这种全球根底设备保证了低推迟服务,且具有容错性。在硬件或软件毛病的情况下,服务将主动切换到辅佐实例,保证不间断和牢靠的拜访。此外,您可以在几分钟内为存储设置灾祸康复。

  • 安全性和合规性

云服务供给商很多出资于安全措施,例如加密、拜访操控和定时审计,以维护数据并保证符合行业规范和法规。

云服务模型

在云核算中,有三种基本的服务模型用于交付和办理IT资源:

根底设备即服务(IaaS)

云服务供给商(CSP)保管和办理硬件根底设备。它供给了虚拟化的核算资源,如服务器、存储和网络,可以依据需求轻松地进行扩展或缩减;客户办理操作体系、运用程序和数据。大多数服务都保管在用户长途拜访的虚拟机(VM)中。这种模型比本地布置更灵敏和可扩展,但办理操作体系、运用程序和数据架构仍需求一定程度的IT专业常识。

渠道即服务(PaaS)

云服务供给商为开发人员供给一个渠道,用于构建、测试和布置运用程序和数据库,以及底层根底设备(相似于IaaS)。它还包含开发东西、数据库办理体系和业务智能服务。云服务供给商操控运转时、中间件和操作体系环境,没有虚拟机。这使开发人员可以专心于编码和办理运用程序,而无需忧虑办理渠道和底层根底设备。这种模型比IaaS更抽象和易于运用,但在灵敏性和定制性方面遭到约束。

软件即服务(SaaS)

云服务供给商保管和彻底办理软件和根底设备;客户经过互联网拜访软件,而无需自行办理任何硬件或软件。这是最简略、最易于运用的模型,但在定制和操控方面或许遭到约束。一些云服务供给商供给的数据架构东西相似于“SaaS”:即它们不像Salesforce等真实的SaaS东西那样彻底遭到办理,只需求一些轻微的运用程序办理。

运用任何一种云服务模型,您都可以取得您运用的数据库产品的最新版别。例如,Azure的云数据库SQL Database是一个名为SQL Server 2022的本地数据库产品的较新版别。把SQL Database视为SQL Server 2022+。每隔几周会增加新功用,您可以挑选运用或不运用。每隔几年,这些新功用会被收集起来,并增加到SQL Server的盒装版别中,可是您可以立即经过SQL Database取得它们。当进行晋级时,您的代码不会出现毛病。

一切的云服务供给商都供给内置的高档要挟检测,运用监控来检测或许标明未常惯例的拜访或运用数据库的异常活动;评价可协助您发现、盯梢和纠正潜在的数据库缝隙;以及用于发现、分类、标记和陈述数据库中敏感数据的高档功用。

总的来说,正如图16-1所示,这四种模型代表了对IT根底设备和软件库房的不同抽象等级和操控程度。本地布置供给了彻底的操控,但需求很多的出资和专业常识,而IaaS、PaaS和SaaS供给了不同程度的抽象化和易用性,但献身了操控和定制性。

解读数据架构——现代化技能栈

您挑选的服务模型将取决于您安排的需求和方针。可是,就我个人而言,我倾向于在或许的情况下挑选PaaS作为数据库房的服务模型,原因有几个。首先,您无需处理虚拟机(VM)。它存在于某个当地并保管数据库,但您无需长途登录服务器或以任何方式办理它——您可以经过CSP门户或第三方东西完结一切操作。您也不需求担任打补丁或晋级:大多数CSP数据库可以无需停机即可打补丁。您可以立即取得数据库备份,无需再进行设置和监控。

最后,PaaS使灾祸康复(DR)变得简略得多。大多数IaaS DR处理计划设置和监控起来很费事,可是关于PaaS,您基本上只需点击您期望DR数据库驻留在的国家/区域。CSP会担任设置并坚持其正常运转。

首要云服务供给商

三大首要的云服务供给商,微软Azure、亚马逊网络服务(AWS)和谷歌云渠道(GCP),占有了大部分商场份额(据估计在2023年第二季度为65%)。要获取有关每个供给商的最新详细信息,请拜访它们各自的网站。表16-1比较了它们的首要特点,为您供给了全面的概述。

解读数据架构——现代化技能栈

这三大首要云服务供给商各有其一起优势,挑选其间之一往往取决于您的详细需求和现有根底设备。一个深度融入微软生态体系的企业或许会倾向于挑选Azure,一个专心于高档数据处理的企业或许会挑选GCP,而一个需求广泛服务范围的企业或许会倾向于AWS。最终,决议计划涉及平衡技能需求、本钱以及业务的战略方向。

多云处理计划

许多安排发现自己在考虑选用三大首要云服务供给商之一或同时运用多家服务之间权衡取舍,后者一般被称为多云办法。一些公司觉得依靠单一云服务供给商就像是“把鸡蛋都放在一个篮子里”,或许忧虑云服务供给商或许会成为他们业务的竞争对手。(例如,当亚马逊收购全食超市时,成为其他超市企业的竞争对手。)

这种办法确实有一些严重优势,首要是由于它充分运用了每个云服务供给商的优势和劣势。假如一个云服务供给商的推迟较低,另一个的可用性或灾祸康复才能较好,同时运用两者或许进步安排满意其SLA的才能。您还可以对本钱、容量以及各种功用和产品进行相似的比较;假如一个云服务供给商没有您想要的一切功用,您可以凭借另一个来弥补缺乏。可是,这与过去比较已不那么相关;现在,三大云服务供给商的服务供给简直相似,简直没有一起的功用或产品。

数据主权也是一个要素。并非一切云服务供给商都具有相同的云区域,这在监管合规方面十分重要。例如,假如您在Azure中运用MongoDB,但Azure在台湾没有区域,您的台湾业务就可以在AWS中运用MongoDB。

假定一个名为TechTreasures Inc.的虚拟全球电子商务巨头。TechTreasures总部坐落美国,详细坐落佛罗里达州庞特维德拉,但在北美、欧洲和亚洲等区域都有业务。

为了保证最佳功用、牢靠性和符合区域数据法规的要求,TechTreasures选用了多云办法。它运用微软Azure的北美业务,由于Azure在该区域具有强大的低推迟网络和数据中心。在欧洲,它运用了GCP的高档数据剖析功用和在欧洲云区域的强大影响力。关于其亚洲业务,TechTreasures依靠于AWS,在亚洲要害商场(包含台湾)供给云区域。

这种多云战略使得TechTreasures可以为全球客户供给快速牢靠的服务,同时保证符合数据主权法规的要求。这是一种战略挑选,使企业可以充分运用每个首要云服务供给商的一起优势,优化业务运营。

可是,多云也存在许多缺陷。由于这些云并非规划用于相互协作,因而来回移动数据和核算或许会很慢且笨拙。互操作性也是一个问题;来自一个云服务供给商的产品不总是与来自不同云服务供给商的产品兼容。将数据和运用程序从一个云服务供给商迁移到另一个云服务供给商并启动另一个产品或许会十分昂贵,特别是假如您有必要重新规划运用程序以支撑多个云。假如您将数据从其云转移到竞争对手的云,云服务供给商还会收取出站费用,而且他们不会让您轻松迁移到另一个云。假如您出资了较大的互联网管道,如Azure的ExpressRoute,那么您将需求在任何其他运用的云服务供给商中进行相似的出资。此外,将数据存储在多个云中会增加其面对安全要挟的危险。

假如您期望轻松从一个云迁移到另一个云,您将不得不运用IaaS服务模型而不是PaaS,这会耗费掉每个云供给商供给的许多高价值服务——这是一个巨大的时机本钱。

就人员而言,您将需求聘请和/或训练您的人员了解两个或更多云,这将大大增加本钱。办理额定的云服务;处理安全问题;制定政策、规范和程序也需求更多的人力和技能。您还有必要取得不同类型的安全才能让它们一起作业,而且您将有两个当地可以增加、删去或更新用户;两个当地可以监督;和两套账单,这增加了明显的行政杂乱性(和本钱)。

最后,具有两个云服务供给商不太或许使您免受毛病的影响。云服务供给商专门规划了他们的网络,以保证一个区域的毛病不会影响其他区域。您的灾祸康复处理计划应该是将其毛病转移到同一CSP内的另一个区域,而不是转移到另一个CSP。

许多人认为选用多云办法会使云服务供给商处于竞争状态,然后可以商洽取得更好的买卖。可是,这首要是一个谬论。关于企业答应协议(ELAs),云服务供给商依据您在其云上的耗费量供给更高的扣头——您运用的越多,扣头越大。1当您参加根据层次的定价和继续运用扣头时,您或许会经过仅挑选一个CSP来节约更多。可是,一些公司会要挟要跳到另一个CSP以操控其定价。假如您的公司是一家大型企业,挑选一个CSP还可以取得协作伙伴联系的好处。例如,微软与安永协作,在跨行业的150亿美元增长时机和技能立异方面推进协作。

我不认为多云办法会得到更广泛的选用。我认为,跟着时刻的推移,大多数公司将挑选一个CSP并坚持下去,以深入了解并充分运用其服务、PaaS和SaaS以及生态体系。假如CSPs供给的不同服务对作业负载有益,一些十分大型的公司将挑选几个云。假如公司满意大,可以投入时刻和人员来深入研究两者,并运用每个供给商的PaaS服务。咱们现在从云服务模型评论转向软件结构,从树立数据架构的根底转向探究运用此根底的东西。在接下来的部分中,咱们将深入探讨运用云根底架构开释数据的全部潜力的要害软件结构。

软件结构

在数据架构的世界中,你挑选的软件结构可以决议你处理、剖析和从数据中获取洞察力的效果。这些结构是驱动数据操作的引擎,让你可以提取有价值的信息并推进根据数据的决议计划。在本节中,咱们将踏入软件结构的范畴,探究三个重要的参与者:Hadoop、Databricks和Snowflake。每个结构都带来了一起的优势,了解它们的才能关于构建满意你特定需求和方针的数据架构至关重要。

Hadoop

Hadoop是一个由Apache基金会于2005年创立的开源软件结构,旨在运用散布式核算的强大才能。各种东西和库扩展了Hadoop的功用,使其成为处理海量数据并寻求本钱效益可扩展性的安排的抢手挑选。

在其间心,Hadoop由两个首要组件组成。首先,Hadoop散布式文件体系(HDFS)可以经过将数据分割成较小的块并将其散布在多个节点和核算机集群上有效地存储和处理大数据作业负载,如图16-2所示。这使得高容错性和诸如批处理、数据集成和剖析等使命成为或许。HDFS完结了对数据的高吞吐拜访,并在硬件毛病时供给牢靠性。

解读数据架构——现代化技能栈

其次,MapReduce结构是用于在集群中并行处理和剖析大型数据集的编程模型,再次经过将作业负载分解为较小的使命并将其散布在集群中的多个节点上来完结。它将大型杂乱核算分解为多个使命,并将这些使命分配给各个作业节点,这些节点调和并整合成果。MapReduce结构主动处理并行化、容错性和数据散布。一个MapReduce程序由一个Map()进程组成,用于过滤和排序(例如,按姓名将学生排序到行列中,每个姓名一个行列),以及一个Reduce()进程,用于汇总数据(例如,核算每个行列中学生的数量,发生姓名频率)。MapReduce库现已用多种编程言语(一般是Java)编写,具有不同程度的优化。

Hadoop供给了几个优点,使其成为处理大数据的抢手挑选:

可扩展性

Hadoop供给了一个可扩展的架构,可以处理很多数据。经过向集群增加更多的通用硬件,可以轻松扩展存储和处理才能,使其具有本钱效益和灵敏性。

散布式核算

Hadoop将数据和处理使命散布在机器集群中,完结并行处理。将作业分配给多个节点可以加快对大型数据集的处理速度。

容错性

Hadoop在集群中的多个节点之间复制数据,保证数据在硬件毛病时依然继续可用。假如一个节点失利,Hadoop会主动将使命重定向到其他可用节点,保证处理不间断。

本钱效益的存储

HDFS答应你在规范、价格实惠的硬件上存储很多数据,而不是昂贵、专门的存储体系。

数据就近性

Hadoop经过将核算移动到数据存储的当地,而不是经过网络传输数据,优化了数据处理,削减了网络开支,进步了整体功率。

灵敏性和兼容性

Hadoop与各种数据格式兼容,而且可以处理结构化、半结构化和非结构化数据。它支撑多种编程言语和东西,答应开发人员运用他们喜爱的言语,并将不同的组件集成到他们的数据流程中。

东西生态体系

Hadoop具有丰厚的东西和结构生态体系,扩展了其功用,并供给了更高档别的抽象、数据处理言语和剖析。其间包含:

  • YARN,用于资源办理和作业调度

  • Hive,用于数据库房

  • Pig,用于数据剖析

  • HBase,一个NoSQL数据库

  • Spark,用于内存处理

  • Presto,用于散布式SQL

Hadoop供货商出售的渠道将多个开源软件产品集成在一起,省去了你自己集成和测试各种组件的时刻和精力。

社区支撑

Hadoop具有巨大而活跃的开源社区,为其开发、改进和支撑做出了奉献,并为用户供给了丰厚的资源、文档和专业常识。

Hadoop的潜在缺陷包含:

杂乱性

Hadoop具有陡峭的学习曲线,设置和办理或许很杂乱。它需求散布式体系方面的专业常识和专业技能,这关于没有从前经历或专门资源的安排或许构成应战。

推迟 MapReduce是Hadoop的中心处理结构,根据批处理,会引进推迟,因而或许不适宜实时或交互式数据处理场景。Hadoop最适宜大规模数据处理使命,例如批量剖析和处理海量数据集。假如你需求即时或准实时的见地,或许更适宜运用代替计划或结构,如Apache Kafka或Apache Flink。

硬件需求

Hadoop的散布式架构需求一组机器集群才能有效运转。设置和维护这样一个集群,包含硬件和网络根底设备,或许涉及明显的本钱和杂乱性。

数据办理开支

尽管Hadoop的HDFS供给了容错和复制功用,但在节点之间复制数据会耗费存储空间。这增加了额定的数据存储开支。

杂乱的生态体系

尽管Hadoop的生态体系丰厚而广泛,但也很杂乱,因而办理和集成其组件或许具有应战性。它需求了解每个东西的功用和兼容性,并维护东西的装备和依靠联系。

数据安全和办理

Hadoop的散布式特性和数据复制或许会带来数据安全、隐私和办理方面的一起应战。与传统的数据存储体系不同,Hadoop的散布式特性要求安排采纳超出规范安全实践的专门安全措施和拜访操控,以满意其杂乱性。这些措施关于保证数据维护并坚持符合Hadoop特定要求和最佳实践至关重要。

在2010年代初期,Hadoop取得了广泛的运用,但跟着大数据范畴和云核算的开展,引进了诸如无服务器核算、云数据库房和数据流渠道等技能,Hadoop的运用逐步削减。现在,云根底设备可以替代Hadoop集群,云对象存储可以替代HDFS。其间心原则,如散布式存储和处理,依然具有重要意义,但其详细的组件和东西现已得到了不同程度的运用。例如,像Apache Spark这样的技能作为MapReduce的代替计划或补充计划而遭到欢迎。

Databricks

Databricks是一个根据云的渠道,用于在Apache Spark中运转作业负载,后者是一个开源的数据剖析处理引擎。Spark最初是在2009年由加州大学伯克利分校的AMPLab开发出来的,旨在处理MapReduce的局限性。它被规划为更快、更易于运用,而且可以处理批处理和实时数据流。

Spark的一些原始创作者于2013年景立了Databricks。Databricks一直致力于商业化Spark,供给一致的数据剖析渠道,这是一个彻底保管的服务,为大数据剖析供给了一个综合、简化的渠道,集成了数据科学、工程和业务。它旨在使企业更容易地运用Spark,而无需忧虑设置和维护自己的根底设备,然后使高档剖析和机器学习可以被更广泛的用户所运用。

自成立以来,Databricks一直是Apache Spark的重要奉献者,经过Project Tungsten来进步其处理速度,这是一系列旨在运用现代CPU架构进步功率的优化措施。它还开发了一个优化的主动缩放体系,依据核算需求动态调整分配给作业的机器数量,进步了本钱功率和功用。

Databricks推出了各种库来扩展Spark的功用,例如MLlib(用于机器学习)、GraphX(用于图核算)和Spark Streaming(用于实时数据)。它还在训练和支撑Spark社区方面发挥了至关重要的效果,这加快了其选用,并运用户更好地运用了Spark的功用。

Databricks还专心于使Spark更易于运用,引进了Python、Java和Scala的高档API,使编写Spark运用程序变得愈加简略。它还开发了Databricks笔记本,这是交互式环境,数据科学家和工程师可以在其间编写Spark代码、可视化成果和构建模型。该渠道使数据科学家和数据工程师经过一致数据科学、数据工程和业务剖析更有效地一起作业。

为了处理数据湖的局限性并进步牢靠性和数据质量,Databricks还推出了Delta Lake(请参见第12章),这是一个运转在现有数据湖之上的开源存储层。它经过ACID业务、可扩展的元数据处理和一致的流和批处理数据处理,增强了Spark的大数据才能。Delta Lake处理了传统数据湖在数据质量、牢靠性和功用方面的应战。Databricks于2019年将Data Lake开源,将该项目奉献给Linux基金会,以答应更广泛的社区进行奉献。现在,Delta Lake已被广泛选用。

在2020年,Databricks推出了一种新颖的数据架构,即数据湖库房(也涉及到第12章)。这一立异代表了数据办理范式的严重改变。安排不再被迫在数据湖和数据库房之间挑选,而是可以挑选混合架构,将数据湖的可扩展性和本钱效益与数据库房的结构稳固性、牢靠性和功用相结合。

在Databricks看来,现代数据架构应该是敞开的、协作的,而且可以处理一切类型的数据和高档剖析用例。因而,该公司支撑答应企业跟着时刻的推移而扩展的架构。

凭借其一致的数据剖析渠道和Delta Lake等东西,Databricks可以为数据网格中的每个数据产品或范畴供给根底设备(请参见第13和第14章)。其渠道可以处理各种数据类型,并支撑批处理和实时数据处理,使其足以满意不同数据范畴的需求。Delta Lake的要害特性,如ACID业务、架构强制执行和版别操控,可以保证每个数据范畴内的数据质量和一致性。

此外,它供给了“时刻游览”的才能(拜访曾经的数据版别)。在数据网格中,这或许特别有用,由于团队或许需求审阅或回滚其各自范畴的更改。Databricks的协作环境还可以使数据网格内的跨功用团队更有效地协作,符合促进面向范畴的、涣散式团队的原则。

Snowflake

Snowflake是一个彻底保管的根据云的数据库房处理计划,用于存储、安排和剖析很多数据,而且一起之处在于除了供给传统的数据库房功用外,还可以充当数据湖。

该公司成立于2012年,旨在处理传统数据库房处理计划的局限性。其创始人开发了一种一起的架构,将核算和存储别离,可以依据需求独立和主动地扩展数据剖析和作业负载。该渠道于2014年推出,在处理各种数据类型和存储和处理CSV、JSON、Parquet和Avro等各种数据格式方面取得了认可。其根据云的办法和架构招引了各行各业的广泛客户。它供给按运用量付费的定价、强大的安全性、灵敏性和牢靠性。

您可以将各种格式的数据直接加载到Snowflake中,就像运用数据湖相同,无需在吸取之前转换或预处理数据。Snowflake经过主动揣度吸取数据的形式进一步简化了这一进程。一旦数据加载完结,Snowflake供给了一个结构化和可扩展的环境,用于安排和编目数据,答运用户创立表、界说形式并运用元数据标签。这保证了数据的有效安排和易于拜访。

运用Snowflake作为数据湖供给了一致数据渠道的好处,消除了需求独自的数据湖根底设备并降低了杂乱性。它供给了一个可扩展且高功用的环境,用于存储、办理和剖析各种数据类型,使其成为那些期望在一致生态体系中运用数据湖功用的安排的抱负挑选。

Snowflake的优势在于其高度优化的数据库房功用以及其渠道内高效的查询和剖析。可是,假如您需求特定的核算或专门的处理,其他核算引擎或许更适宜,此时从Snowflake导出数据并运用这些引擎是常见的做法。尽管Snowflake供给了无缝的数据导出功用,但它不直接支撑在其渠道内运转外部核算引擎或东西。

Snowflake与数据网格原则(见第13章)很好地符合。该公司认识到赋予范畴专家和团队对其数据的一切权的重要性。经过Snowflake,不同的业务部门或范畴可以具有独自的账户或虚拟库房,使它们可以办理和操控自己的数据财物。这种涣散化的办法促进了敏捷性和自治性,答应范畴团队做出数据驱动的决议计划,并对其数据的质量和可用性担任。

Snowflake强大的数据办理功用,包含形式办理、元数据标记和编目,让您将数据视为可供安排内其他团队拜访和运用的有价值财物,促进了数据产品思维。Snowflake还与数据网格概念的可扩展性和弹性方面相符合:其根据云的架构答应核算资源的独立扩展,协助团队适应不断改变的需求,并有效地处理数据处理和剖析。总之,Snowflake使安排可以选用数据网格办法,促进其数据生态体系中的协作、自治和敏捷性。

总结

你对数据架构技能的决议计划将对你的数据计划的成功起到要害效果。本章引导您了解了为数据根底架构奠定根底的基本挑选。

咱们探讨了三种基本的软件结构:Hadoop、Databricks 和 Snowflake,每种结构都供给了一起的数据处理和剖析办法。无论您挑选开源处理计划,还是选用云服务供给商的产品,或许两者兼而有之,都要考虑到您的数据需求规模和安排的敏捷性需求。

此外,请记住,数据技能的世界并不是二元的。它延伸到云服务模型的范畴,在那里首要供给商供给各种各样的服务,多云处理计划为您的决议计划增加了一层杂乱性。

跟着您在数据架构之旅中的不断前行,请记住本章中所做的挑选并不是孤立的;它们是相互关联的,将刻画您数据环境的格式。这不仅仅是挑选开源或专有处理计划;而是要打造一种与您安排的方针和应战相符合的技能调和融合。有了这些考虑,您就可以很好地驾御不断开展的数据架构技能世界。

祝您愉快地进行解读!