1. 前言
随着云计算技术的高速发展以及相关云服务的产品化完善,Cloud 已经从互联网应用上云的 1.0 时代逐渐衍变成了 Cloud + AI + 5G 的 2.0 时代,伴随着的是企业的云化加深、核心业务上云,同时对于云计算 1.0 时代遗留的问题的改造也都提上了日程,其中比较典型的就是各行各业都开始数字化转型,那数据对企业的价值更是不言而喻了。可如果数据只保存不分析,那再多的数据也是徒劳,除了增加成本外毫无价值可言。由此可见,数据要想有价值,那就需要找到合适的好的工具,把收集的数据有机地结合起来做分析,从数据源头跟踪到最后有价值的输出。
目前,在数据分析领域已经很多成熟的方案和技术,比如数据仓库 Azure Synapse / Impala / Presto,大数据的计算框架 Spark / Flink 等,每一项技术都有自己所擅长解决的问题和场景以便供用户选择,本文不会对这些技术方案做详解和说明,不熟悉的读者请自行搜索科普。本文主要介绍微软 Azure 云上新发布的产品 Azure Databricks —— “一款基于纯 Spark 技术栈的大数据解决方案”。通过本文的介绍,希望可以帮助选择该技术方案解决业务需求的用户提供一些意见和参考。Azure Databricks 很早就已经在 Global Azure GA,最近刚刚在国内 Mooncake Azure Preview,如果要在国内 Azure 上使用需要申请。好,话不多说,下面就来揭开它的神秘面纱。
2. 什么是 Azure Databricks
Azure Databricks 是基于 Apache Spark 的分析平台,已针对 Microsoft Azure 云服务平台进行优化。 Databricks 是由 Spark 原作者团队创办的一家做 Spark 商业化产品的公司。微软与其合作,将 Databricks 与 Azure 集成以提供一键式部署等简化工作,从而能够帮助用户更专注地做基于业务的数据分析或者科学计算。Azure Databricks 和原生云服务产品的集成的缩略图如下所示:
由此可见,Azure Databricks 可以和很多 Azure 云上服务做集成,支持例如 Azure Blob,DataLake,CosmosDB,Synapse,Eventhub 等作为其上下游服务进行对接,通过 Spark 计算框架提供的流批计算技术进行大数据计算,同时也可以集成机器学习来提取并探索数据中所包含的 insights。Azure Databricks 按照层次结构划分由底而上大致分为:
Databricks IO:Databricks I/O 模块,又称 DBIO,利用垂直集成堆栈显著提高 Spark 在云上的性能。
Databricks Runtime: 除原生 Spark 外,还提供其他组件来提高大数据分析的可用性、性能和安全性。
Databricks Workspace:工作区是可以提供访问所有 Azure Databricks 资源的一组环境,包括 Notebook / Libraries / Experiments 等对象组织到文件夹中,并提供其对数据对象和计算资源的访问权限。
Databricks Enterprise Security:Databricks 企业安全(DBES)模块添加了诸如静态和动态数据加密、细粒度数据访问控制和审核等功能,以满足标准合规性(例如 HIPAA、SOC2)和最严格的安全要求。
同时,Azure Databricks 也是 100% 兼容 Apache Spark 提供的集群技术和功能的,具体所包含的 Spark 组件如下图所示:
Spark SQL:SparkSQL 是用于处理结构化数据的 Spark 模块,基于 Spark DataFrames 分布式数据集合,可以把它在概念上理解为关系型数据库中的表。
Streaming:实时数据处理和分析,适用于实时分析与交互式应用程序以及构建实时数仓,可以与 HDFS、Flume 和 Kafka 等集成。
MLlib:由常见机器学习算法和工具(包括分类、回归、筛选、维数约简以及底层优化基元等)组成的机器学习库。
GraphX:图形和图形计算,适用于从认知分析到数据探索的广泛用例。
Spark Core API:包含对 R、SQL、Python、Scala 和 Java 的支持。
3. Azure Databricks 架构及特性介绍
Azure Databricks 是基于 Apache Spark 的快速、简单、协作型分析服务,具体的 Architecture 如图所示:
Azure Databricks 整体分为 Control Plane 和 Data Plane。Control Plane 由 Azure 托管,负责管理集群主节点、提交的任务调度、账号权限等。Data Plane 交由用户管理,可以通过 Databricks 提供的接口来对集群进行操作,常见的一般有 UI / API / CLI。具体地说,当启动 Azure Databricks Cluster 时,需要指定要使用的 VM 类型和数量,同时部署出来集成 VNet / NSG / Storage Account 的托管资源组。部署完毕后,用户就可以通过 Azure Databricks UI 来管理集群。所有元数据(如计划作业)都存储在具有异地复制功能的 Azure 数据库中。值得一提的是,Azure Databricks 和容器的集成也逐渐深度了起来,在创建集群的时候也可以指定容器镜像,方便用户打包自己的定制化镜像从而进行集成以及 CI/CD 的可能性。总体上说,目前 Databricks 和 Azure 的集成基本上有以下几个方面:
VM 类型的多样性:可集成所有现有的 VM 类型,例如 CPU 优化的 F 系列、内存优化的 E 系列、通用的 D 系列等等。
网络拓扑的灵活性:提供 Azure Databricks 与 VNET 集成来满足多样化的基础架构网络的访问需求。
Azure 存储和数据湖集成:通过 DBFS 向 Databricks 公开,以提供对现有数据的缓存和优化分析。
Azure Power BI:可以使用 JDBC 将 Power BI 直接连接到 Azure Databricks 来进行大规模交互方式查询数据。
Azure AD:通过 Azure AD 来做集群的访问控制和权限认证。
Azure SQL 数据仓库、Azure SQL DB 和 Azure CosmosDB:可以与 Azure 上其余的 Data Services 进行快速便捷地集成,方便用户快速建立端到端的云上数据架构。
除此之外,还有很多特性,文本不再赘述,大家可以通过官方文档自行查看。
4. 后续篇幅计划及总结
介绍完开箱,想必都体会到 Azure Databricks 的优秀了吧?是不是都想动手实战下?那心动不如行动~后续会在此基础上分享一系列关于 Azure Databricks 在真实场景下落地的最佳实践,具体包括:
Azure Databricks 系列 Blog(二)之 流计算 Structure Streaming
Azure Databricks 系列 Blog(三)之 批处理 Spark SQL
Azure Databricks 系列 Blog(四)之 安全访问控制
Azure Databricks 系列 Blog(五)之 机器学习 Machine Learning
拭目以待吧!