人工智能的数据

成功从Hadoop迁移到Lakehouse架构的5个关键步骤

2021年8月6日 数据+ AI博客

分享这篇文章

从Hadoop迁移到现代基于云的架构的决定湖屋建筑是一个业务决策,而不是技术决策。在之前的博客中,我们深入探讨了每个组织必须这样做的原因重新评估它与Hadoop的关系.一旦来自技术、数据和业务的利益相关者决定将企业移出Hadoop,就会有几个注意事项在开始实际的过渡之前,需要考虑到这一点。在本博客中,我们将特别关注实际的迁移过程本身。您将了解成功迁移的关键步骤,以及湖屋建筑在激发下一波数据驱动创新中所起的作用。

迁移步骤

我们就这样说吧。迁移从来不是件容易的事。但是,可以对迁移进行结构化,以尽量减少不利影响,确保业务连续性并有效地管理成本。要做到这一点,我们建议中断迁移Hadoop以下五个关键步骤:

  • 政府
  • 数据迁移
  • 数据处理
  • 安全和治理
  • SQL和BI层

1 .管理

让我们从管理的角度回顾Hadoop中的一些基本概念,以及它们与Databricks的比较和对比。

Hadoop本质上是一个单片分布式存储和计算平台。bob体育客户端下载它由多个节点和服务器组成,每个节点和服务器都有自己的存储、CPU和内存。

Hadoop本质上是一个单片分布式存储和计算平台。bob体育客户端下载它由多个节点和服务器组成,每个节点和服务器都有自己的存储、CPU和内存。工作分布在所有这些节点上。资源管理是通过YARN完成的,它尽最大努力确保工作负载获得它们的计算份额。

Hadoop也由元数据信息组成。有一个Hive metastore,它包含关于存储在HDFS中的资产的结构化信息。您可以利用Sentry或Ranger来控制对数据的访问。从数据访问的角度来看,用户和应用程序可以直接通过HDFS(或相应的CLI/API)访问数据,也可以通过SQL类型的接口访问数据。反过来,SQL接口可以通过JDBC/ODBC连接,使用Hive进行通用SQL(或在某些情况下使用ETL脚本)或在Impala或Tez上使用Hive进行交互式查询。Hadoop还提供了HBase API和相关数据源服务。关于Hadoop生态系统的更多信息在这里

对象中如何映射这些服务或如何处理这些服务Databricks Lakehouse平bob体育客户端下载台.在Databricks中,首先要注意的区别之一是,您要在Databricks环境中查看多个集群。每个集群都可以用于特定的用例、特定的项目、业务单元、团队或开发组。更重要的是,这些集群注定是短暂的。对于作业集群,集群的生命周期意味着在工作流期间持续。它将执行工作流,一旦完成,环境将自动被拆除。同样地,如果您考虑一个交互式用例,其中您有一个跨开发人员共享的计算环境,这个环境可以在工作日开始时启动,开发人员在一天中运行他们的代码。在不活动期间,Databricks将通过平台内置的(可配置的)自动终止功能自动将其删除。bob体育客户端下载

与Hadoop不同,Databricks不提供HBase、SOLR等数据存储服务。数据驻留在对象存储的文件存储中。像HBase或SOLR这样的很多服务在云中都有替代方案或等价的技术产品。它可能是云原生或ISV解决方案。

Databricks中的每个集群节点彼此完全隔离,对应于一个Spark驱动程序或一个worker,允许为特定的项目和用例满足严格的sla。

如上图所示,Databricks中的每个集群节点都对应于Spark驱动程序或worker。这里的关键是不同的Databricks集群彼此完全隔离。这允许您确保严格的sla可以满足特定的项目和用例。您可以真正地将流或实时用例与其他面向批处理的工作负载隔离开来,并且不必担心手动隔离可能长时间占用集群资源的长时间运行的作业。您可以为不同的用例启动新的集群作为计算。Databricks还将存储与计算分离,并允许您利用现有的云存储,如AWS S3、Azure Blob存储和Azure数据湖存储(ADLS)。

Databricks还拥有一个默认的托管Hive metastore,用于存储关于驻留在云存储中的数据资产的结构化信息。它还支持使用外部亚存储,如AWS Glue, Azure SQL Server或Azure Purview。您还可以指定安全控制,例如Databricks中的表acl,以及对象存储权限。

在数据访问方面,Databricks在用户如何与数据交互方面提供了与Hadoop类似的功能。数据存储在云存储中,在Databricks环境中可以通过多条路径访问。用户可以使用SQL Endpoints和Databricks SQL进行交互式查询和分析。他们还可以使用Databricks笔记本对存储在云存储中的数据进行数据工程和机器学习功能。Hadoop中的HBase映射到Azure CosmosDB或AWS DynamoDB/Keyspaces,可以作为下游应用程序的服务层。

步骤2:数据迁移

由于有Hadoop背景,我假设大多数观众已经熟悉了HDFS.HDFS是Hadoop部署使用的存储文件系统,它利用Hadoop集群节点上的磁盘。因此,当你扩展HDFS时,你需要向整个集群添加容量(即你需要一起扩展计算和存储)。如果这涉及到采购和安装额外的硬件,可能会涉及大量的时间和精力。

在云中,您可以以云存储的形式(如AWS S3、Azure Data Lake storage或Blob storage或谷歌storage)拥有几乎无限的存储容量。不需要维护或运行状况检查,并且从部署之日起就提供内置冗余和高水平的持久性和可用性。我们建议使用原生云服务来迁移您的数据,为了简化迁移,有几个合作伙伴/ isv。bob体育外网下载

那么,如何开始呢?最常推荐的方法是从双重摄取策略开始(即添加一个feed,将数据上传到云存储以及本地环境中)。这允许您在不影响现有设置的情况下开始使用云中新的用例(利用新数据)。如果您正在寻求组织内其他团队的支持,您可以将此定位为一种备份策略。HDFS传统上一直是备份的一个挑战,因为它涉及到巨大的规模和工作量,所以无论如何,将数据备份到云中都是一个富有成效的举措。

在大多数情况下,您可以利用现有的数据交付工具来派生提要,并不仅将其写入Hadoop,还将其写入云存储。例如,如果您正在使用Informatica和Talend等工具/框架来处理数据并将数据写入Hadoop,那么添加额外的步骤并将数据写入云存储是非常容易的。一旦数据在云中,就有许多方法来处理这些数据。

就数据方向而言,数据要么从内部部署拉到云端,要么从内部部署推到云端。一些可以用来将数据推入云中的工具是云原生解决方案(Azure data Box、AWS Snow Family等)、DistCP(一种Hadoop工具)、其他第三方工具以及任何内部框架。推送选项通常更容易从安全团队获得所需的批准。

为了将数据拉到云端,您可以使用Spark/Kafka Streaming或Batch摄取管道,这些管道从云端触发。对于批处理,您可以直接摄取文件,也可以使用JDBC连接器连接到相关的上游技术平台并提取数据。bob体育客户端下载当然,也有第三方工具可以做到这一点。在这两种方法中,推方法被更广泛地接受和理解,所以让我们更深入地研究一下拉方法。

您需要做的第一件事是在本地环境和云之间建立连接。这可以通过互联网连接和网关来实现。您还可以利用专用连接选项,如AWS Direct Connect、Azure ExpressRoute等。在某些情况下,如果您的组织对云并不陌生,那么可能已经设置好了,以便您可以在Hadoop迁移项目中重用它。

另一个需要考虑的问题是Hadoop环境中的安全性。如果它是kerberos化的环境,则可以从Databricks端容纳它。您可以配置在集群启动时运行的Databricks初始化脚本,安装和配置必要的kerberos客户机,访问存储在云存储位置的krb5.conf和keytab文件,并最终执行kinit()函数,这将允许Databricks集群直接与Hadoop环境交互。

最后,您还需要一个外部共享亚metastore。虽然Databricks有一个默认部署的metastore服务,但它也支持使用外部服务。外部metastore将由Hadoop和Databricks共享,可以部署在本地(在您的Hadoop环境中),也可以部署在云中。例如,如果您有在Hadoop中运行的现有ETL进程,并且还不能将它们迁移到Databricks,那么您可以利用现有的本地metastore来利用这个设置,让Databricks从Hadoop中使用最终的管理数据集。

步骤3:数据处理

要记住的主要事情是,从数据处理的角度来看,Databricks中的所有东西都利用了Apache Spark。所有Hadoop编程语言,如MapReduce, Pig, Hive QL和Java,都可以转换为在Spark上运行,无论是通过Pyspark, Scala, Spark SQL,甚至r。至于代码和IDE, Apache Zeppelin和Jupyter笔记本都可以转换为Databricks笔记本,但导入Jupyter笔记本更容易一些。齐柏林笔记本在进口之前需要转换为Jupyter或Ipython。如果你的数据科学团队想继续在Zeppelin或Jupyter中编码,他们可以使用Databricks Connect,它允许你利用本地IDE (Jupyter、Zeppelin甚至IntelliJ、VScode、RStudio等)在Databricks上运行代码。

在迁移Apache Spark™作业时,最大的考虑因素是Spark版本。您的本地Hadoop集群可能正在运行较旧版本的Spark,您可以使用Spark迁移指南识别所做的更改,以查看对代码的任何影响。另一个需要考虑的领域是将rdd转换为数据框架。rdd通常用于Spark 2以下版本。虽然它们仍然可以与Spark 3一起使用。x,这样做会阻止你充分利用Spark优化器的全部功能。我们建议您尽可能将rdd更改为数据框架。

最后但并非最不重要的,一个常见的陷阱我们在迁移过程中遇到的客户对本地Hadoop环境的硬编码引用。当然,这些需要更新,否则代码将在新的设置中中断。

接下来,让我们讨论一下转换非spark工作负载,这在很大程度上涉及到重写代码。对于MapReduce,在某些情况下,如果您使用Java库形式的共享逻辑,则可以通过Spark利用代码。但是,您可能仍然需要重新编写部分代码,以便在Spark环境中运行,而不是在MapReduce环境中运行。Sqoop相对容易迁移,因为在新环境中,您将使用JDBC源运行一组Spark命令(与MapReduce命令相反)。您可以在Spark代码中指定参数,方法与在Sqoop中指定参数相同。对于Flume,我们看到的大多数用例都是关于从Kafka中消费数据并写入HDFS。这是一个可以使用Spark流轻松完成的任务。迁移Flume的主要任务是必须将基于配置文件的方法转换为Spark中的更程序化的方法。最后,我们有Nifi,它主要在Hadoop之外使用,主要作为拖放、自助摄取工具。Nifi也可以在云中发挥作用,但我们看到许多客户利用这个机会迁移到云中,用云中可用的其他更新的工具取代Nifi。

迁移HiveQL可能是所有任务中最简单的。Hive和Spark SQL之间有高度的兼容性,大多数查询应该能够在Spark SQL上运行。HiveQL和Spark SQL之间的DDL有一些小的变化,比如Spark SQL使用了" USING "子句而不是HiveQL的" FORMAT "子句。我们建议修改代码以使用Spark SQL格式,因为它允许优化器为Databricks中的代码准备最佳的执行计划。你仍然可以利用Hive Serdes和udf,这使得将HiveQL迁移到Databricks变得更加容易。

关于工作流编制,您必须考虑作业提交方式的潜在变化。您可以继续利用Spark提交语义,但也有其他更快、更无缝集成的选项可用。您可以利用Databricks作业和Delta Live Tables进行无代码ETL以取代Oozie作业,并在Databricks中定义端到端数据管道。对于涉及外部处理依赖关系的工作流,您必须在Apache气流、Azure数据工厂等技术中创建等效的工作流/管道,以实现自动化/调度。使用Databricks的REST api,几乎任何调度平台都可以集成和配置为与Databricksbob体育客户端下载一起工作。

还有一个叫做MLens的自动化工具(由knowledgeelens创建),它可以帮助您将工作负载从Hadoop迁移到Databricks。MLens可以帮助迁移PySpark代码和HiveQL,包括将一些Hive细节转换到Spark SQL,这样你就可以充分利用Spark SQL优化器的全部功能和性能优势。他们还计划很快支持将Oozie工作流迁移到气流、Azure数据工厂等。

步骤4:安全和治理

让我们看一下安全性和治理。在Hadoop世界中,我们有LDAP集成来连接到管理控制台,如Ambari或Cloudera Manager,甚至是Impala或Solr。Hadoop还有Kerberos,用于与其他服务进行身份验证。从授权的角度来看,Ranger和Sentry是最常用的工具。

使用Databricks,可以与任何支持SAML 2.0的身份提供程序进行单点登录(SSO)集成。这包括Azure活动目录,谷歌工作区单点登录,AWS单点登录和微软活动目录。对于授权,Databricks为Databricks对象提供了acl(访问控制列表),允许您设置实体的权限,如笔记本、作业、集群。对于数据权限和访问控制,您可以定义表acl和视图来限制列和行访问,以及利用凭据传递之类的功能,Databricks将您的工作区登录凭据传递到存储层(S3、ADLS、Blob storage .),以确定您是否被授权访问数据。如果你需要基于属性的控件或数据屏蔽等功能,你可以利用像Immuta和Privacera这样的合作伙伴工具。从企业治理的角度来看,可以将Databricks连接到企业数据目录,如AWS Glue、Informatica data catalog、Alation和Collibra。

步骤5:SQL和BI层

在Hadoop中,如前所述,您有Hive和Impala作为接口来执行ETL以及临时查询和分析。在Databricks中,您可以通过砖的SQL.Databricks SQL还通过Delta引擎提供了极高的性能,以及对自动伸缩集群的高并发用例的支持。Delta引擎还包括Photon,这是一个新的MPP引擎,在c++中从头构建,并被向量化以利用数据级和指令级并行性。

Databricks提供了与BI工具(如Tableau、PowerBI、Qlik和lookker)的本地集成,以及可以被这些工具利用的高度优化的JDBC/ODBC连接器。新的JDBC/ODBC驱动程序的开销非常小(1 / 4秒),使用Apache Arrow的传输速率提高了50%,并且支持显著加快元数据检索操作的若干元数据操作。Databricks还支持PowerBI的单点登录,其他BI/仪表板工具也将支持单点登录。

Databricks除了上面提到的笔记本体验之外,还有一个内置的SQL UX,它为SQL用户提供了自己的SQL工作台镜头,以及轻型仪表板和警报功能。这允许对数据湖中的数据进行基于sql的数据转换和探索性分析,而不需要将数据向下移动到数据仓库或其他平台。bob体育客户端下载

下一个步骤

当您考虑迁移到现代云架构(如湖屋架构)时,请记住以下两件事:

  1. 记得在这个过程中带上关键的业务涉众。这既是一个技术决策,也是一个业务决策,您需要您的业务涉众参与到过程及其最终状态中。
  2. 此外,请记住,你并不孤单,在Databricks和我们的合作伙伴中,有足够的技术资源来构建可重复的最佳实践,节省组织、时间、金钱、资源,并减少整体压力。bob体育外网下载
  3. 下载Hadoop到Databricks技术迁移指南获取开始迁移所需的分步指导、笔记本和代码。

要了解BOB低频彩更多关于Databricks如何提高业务价值并开始计划从Hadoop迁移的信息,请访问www.neidfyre.com/migration

迁移指南:Hadoop到Databricks
用这本自我指导的剧本来解锁你的数据的全部潜力。

免费试用Databricks

相关的帖子

看到所有数据+ AI博客的帖子