首页 » Big Data and AI » 正文

基于微软Azure云服务的大数据应用服务

大数据项目的解决方案选择过程非常复杂,有很多因素。本文将介绍基本基于微软Azure云服务的大数据应用解决方案及分析。此外,请仔细检查官方文档中相关Service的详细信息。

基本数据研究的特点,大数据分为“三个V”:速度,数量和种类。我们如何选择正确的解决方案取决于我们首先要解决的问题之一:

  • 容量:需要存储和查询数百TB或更多的数据,并且总容量在增长。处理系统必须具有可伸缩性,才能处理不断增长的数据量,通常是通过在多台计算机上进行扩展来实现的。
  • 速度:需要以越来越高的速度从许多新型设备,越来越多的用户以及每用户越来越多的设备和应用程序中收集数据。处理系统必须能够在可接受的时间范围内(通常几乎实时)返回结果。
  • 多样性:数据与任何现有数据模式都不匹配时的情况-半结构化或非结构化数据。

有三类解决方案可解决上述领域:

  • 复杂事件处理(CEP)是一种跟踪和处理来自多个事件源的数据流,识别有意义的事件,从中得出结论并尽可能快速地对其做出响应的方法。如果您需要每秒处理数十万个事件,请使用CEP。
  • 数据仓库(DWH)是来自一个或多个不同源的集成数据的中央关系存储库。它们存储当前和历史数据,并用于组织中的不同分析任务。使用DWH是您具有已定义方案的结构化关系数据。
  • NoSQL系统 提供了一种无需表格关系即可存储和检索数据的机制。NoSQL的特征:设计简单,更简单的“水平”扩展到机器集群。NoSQL数据库使用的数据结构(例如键值,宽列,图形或文档)更加灵活,因此更难以存储在关系数据库中。如果您有非关系,半结构或非结构化数据,请使用NoSQL系统。未定义架构。

下面的阅览图,它将三种类型的问题映射到特定的解决方案。

 

以下是有关每个大数据组件和相应决策点的一些评论。

复杂事件处理

Azure Event Hub

Azure事件中心是一种高度可扩展的数据流平台和事件提取服务,能够每秒接收和处理数百万个事件。事件中心可以处理和存储由分布式软件和设备产生的事件,数据或遥测。发送到事件中心的数据可以使用任何实时分析提供程序或批处理/存储适配器进行转换和存储。事件中心提供大规模的低延迟发布和订阅功能,使其适合大数据场景。

集成:支持AMQP和HTTPS协议

优点:易于使用。

缺点:通过发布者策略限制访问权限。

Azure IoT Hub

Azure IoT中心是一项托管服务,可在数百万个IoT设备和基于云的后端之间实现可靠,安全的双向通信。

IoT中心的功能包括:设备到云和云到设备通信的多个选项;邮件路由到其他Azure服务; 可查询的设备元数据和同步状态信息存储;使用每个设备的安全密钥或X.509证书进行安全的通信和访问控制;监视设备连接性和设备身份管理事件。

在消息接收方面,IoT中心类似于事件中心。但是,它是专门为管理IoT设备连接而设计的,而不仅仅是消息接收。

集成:支持MQTT,AMQP,HTTPS协议。

优点:支持使用设备twins进行云到设备的通信,设备启动的文件上传,设备状态信息;每个设备的身份;可撤销的访问控制。

Azure HDInsight Kafka

Apache Kafka是一个开放源代码的分布式流媒体平台,可用于构建实时流数据管道和应用程序。Kafka还提供类似于消息队列的消息代理功能,您可以在其中发布和订阅已命名的数据流。

可编程性和集成性: Kafka经常与Apache Storm或Spark一起使用以进行实时流处理;Kafka 0.10.0.0流API允许构建流解决方案,而无需Storm或Spark;支持卡夫卡协议

优点:简化配置过程;Kafka正常运行时间的99.9%SLA;使用更新域(UD)和故障域(FD)进行扩展(更改工作节点的数量)并重新平衡Kafka分区和副本;使用Azure Log Analytics监视Kafka; 与支持的外部身份验证服务集成。

缺点:复杂。

Azure Stream Anaoytics(ASA)

Azure流分析(ASA)可以用于从设备,传感器,基础结构和应用程序获得实时洞察。方案:实时远程管理和监视。ASA经过优化,可以从Azure事件中心和Azure Blob存储获取流数据。类似ASA SQL的查询针对传入事件流连续运行。结果可以存储在Blob存储,事件中心,Azure表和Azure SQL数据库中。因此,如果输出存储在事件中心中,则它可以成为另一个ASA作业的输入,以将多个实时查询链接在一起。

可编程性:流分析查询语言,JavaScript;声明式编程范例

优点:类似SQL的查询语言,基于云:接近全球分布的数据;支持的最大数据接收器数量;

缺点:仅支持Avro,JSON或CSV,UTF-8编码的输入数据格式。

注:按流媒体单位定价;按查询分区扩展

Azure HDInsight Storm

Apache Storm是主要使用Clojure编程语言编写的分布式流处理计算框架。Storm应用程序被设计为有向无环图(DAG)形式的“拓扑”。图上的边被命名为流,并将数据从一个节点引导到另一个节点。拓扑一起充当数据转换管道。风暴拓扑无限期运行直到被“杀死”。Storm使用Zookeeper来管理其流程。Storm可以读写文件到HDFS。

体系结构:Storm一次处理一个事件。

性能:毫秒级延迟。

可编程性:Java,C#,Python; 命令式范式;用于Visual Studio的HDInsight工具 ; 与Azure事件中心,Azure SQL DB,Azure存储和Azure Data Lake存储集成

优点:完整的流处理引擎,支持微批处理;关于风暴正常运行时间的99%服务水平协议(SLA);动态缩放

缺点:仅支持流数据,不与Azure平台集成。

注意:按群集小时计价。

Azure HDInsight Spark Streaming

Spark Streaming用于构建交互式和分析应用程序。用于创建低延迟仪表板和安全警报系统,以优化操作或防止特定结果。包括高级操作员,可从Apache Flume,Apache Kafka和Twitter 读取数据;历史数据–来自HDFS。

体系结构:Spark分批处理事件,这些事件在处理事件之前会在很短的时间内显示。

可编程性:Scala,Python,Java;Dstreams;陈述式和命令式范式的混合体

性能:100s MB / s,低延迟(几秒钟)。

缺点:未与Azure平台集成。

注意:每集群小时的价格

Azure App Service WebJobs

WebJobs是Azure App Service的一项功能,使您可以在与Web应用程序,API应用程序或移动应用程序相同的上下文中运行程序或脚本。

可编程性:C#,Node.js,PHP,Java,Python; 命令式范式。

优点:可以更好地控制host.json文件中JobHost的行为(例如,为Azure存储配置自定义重试策略)。

缺点:没有内置的时间/窗口支持;没有延迟到达和故障事件处理支持。

注意:按应用服务计划小时计价。

Azure Functions

Azure Functions是一种解决方案,用于在云中轻松运行一小段代码或“函数”。Azure Functions使您可以响应传递到Azure Event Hub的事件。在应用程序检测,用户体验或工作流处理以及物联网(IoT)场景中很有用。

可编程性:C#,F#,Node.js; 命令式范式。

优点:只为代码运行时间付费,并信任Azure根据需要进行扩展。

缺点:没有内置的时间/窗口支持;最多可并行处理200个功能应用实例;没有迟到和故障事件处理支持。

注意:按功能执行和资源消耗计价。

大数据仓库

Azure SQL DW Gen1

Azure SQL数据仓库(DW)是Azure中用于数据仓库工作负载的SQL Server的MPP版本。它允许跨PB级数据快速运行复杂的查询,允许在一分钟内调整计算节点的大小,并与Azure平台集成。

优势:高度可扩展,MPP架构,比Blob更低的关系存储成本,可提供暂停计算功能,关系存储,T-SQL,灵活索引,安全性。

缺点:功能比Azure SQL DW Gen2低4-5倍;无法从外部关系存储查询;没有行级安全性;没有动态数据屏蔽。

Azure SQL DW Gen2

Azure SQL DW Gen2的计算能力是Gen1产品的五倍,并发查询的能力是Gen1产品的四倍。Gen2上增强的存储体系结构引入了无限的列式存储容量,同时保持了独立扩展计算和存储能力。

与第1代相比,Azure SQL数据仓库计算优化的Gen2层的查询性能提高了5倍,并发性提高了4倍,计算能力提高了5倍。它可以为单个群集中的128个并发查询提供服务。

支持这些性能提升的是自适应缓存技术,该技术可以了解数据需要放置在何处以及何时需要存放在何处以获得最佳性能。Azure SQL数据仓库采用了一种混合方法,即结合使用远程存储和快速SSD缓存层(使用NVMe),该层根据用户访问模式和频率将数据放置在计算旁边。

Azure门户提供了从Gen1自动升级到Gen2的功能。

可编程性: T-SQL。

优势:与第一代相比,性能,并发性和更高的计算能力高4-5倍;支持使用客户管理的密钥暂停计算,透明数据加密。

缺点:没有行级安全性;没有动态数据屏蔽

Microsoft APS / PDW

Microsoft Analytics Platform System(APS)是Microsoft并行数据仓库(PDW)中的大规模并行处理(MPP)引擎与基于Hadoop的大数据技术的结合。它使用HDP提供一个本地解决方案,其中包含一个用于基于Hadoop的处理区域以及PolyBase(一种将MPP引擎与HDP,Cloudera和基于HDInsight的远程Hadoop服务集成在一起的连接机制)。它允许查询Hadoop中的数据并将其与本地关系数据组合,并将数据移入和移出Hadoop。

优点:如果持续不断地充分使用它,将是非常经济高效的快速MPP架构。

缺点:对于大多数查询,请确保您不会在节点之间启动数据移动,这会增加操作成本;尺寸的增加需要购买额外的机架并手动重新配置。

NoSQL on-premises or IaaS in the Cloud

SQL Server Big Data Cluster

从SQL Server 2019预览版开始,SQL Server大数据群集允许您部署在Kubernetes上运行的SQL Server,Spark和HDFS容器的可伸缩群集。这些组件并排运行,使您能够从Transact-SQL或Spark读取,写入和处理大数据,从而使您可以轻松地将高价值的关系数据与大容量的大数据组合和分析。

在SQL Server大数据集群中,Kubernetes负责SQL Server大数据集群的状态。Kubernetes构建和配置集群节点,将Pod分配给节点,并监视集群的运行状况。这意味着SQL Server大数据群集可以轻松地部署在任何支持Kubernetes群集的云中。

优点:on-pSQremises / IaaS允许自定义;SQL Server支持动态数据屏蔽,行级安全性;使用PolyBase可以查询和连接外部数据源,而无需移动或复制数据;可扩展的HDFS存储池;横向扩展数据集市;集成的AI和机器学习 可以部署在支持Kubernetes集群的非Microsoft云中。

缺点:目前处于公开预览中。

Hadoop

Apache Hadoop是原始的开源框架,用于分布式处理和分析集群中的大数据集。Hadoop技术堆栈包括相关的软件和实用程序,包括Apache Hive,Apache HBase,Spark,Kafka等。

在Azure市场中,可以使用Hadoop的Hortonworks,Cloudera和MapR实施。

优点:灵活性:可以在本地或IaaS云环境中使用(易于迁移);完全控制部署。

缺点:部署复杂;需要管理更新。

注意:可以使用自定义Docker映像和分布式数据工程工具包(AZTK)将其部署在Azure IaaS中

Azure Enabled NoSQL Processing

Azure Databricks

Azure Databricks是针对Microsoft Azure云服务平台优化的基于Apache Spark的分析平台。Databricks由Apache Spark的创始人设计,与Azure集成在一起,可提供一键式设置,简化的工作流以及一个交互式工作区,该工作区使数据科学家,数据工程师和业务分析师之间能够进行协作。

可编程性: Python,Scala,Java,R,SQL。

优点:友好的用户界面,用于协作和实验(笔记本,集群创建等);集群启动时间快,自动终止,自动扩展;支持暂停计算;支持快速扩展(少于1分钟);支持启用GPU的集群;通过本机AD集成实现安全性。

缺点:不能充当关系数据存储;没有行级安全性。

注意:按Databricks单位(DBU)和群集小时定价;不支持防火墙。

Azure Data Lake Analytics

Azure数据湖分析(ADLA)是基于Apache YARN构建的分布式分析服务。通过设置所需的计算能力,它可以立即处理任何规模的作业。它允许对EB级数据进行分析,而客户仍然只为查询费用付费。ADLA支持Azure Active Directory进行访问控制,角色以及与本地身份系统的集成。它还包括U-SQL,这是一种将SQL的好处与C#的强大表达能力结合在一起的语言。运行时跨多个Azure数据源处理数据。ADLA允许您在任何位置进行数据计算,以及来自多个云源(例如Azure SQL DW,Azure SQL DB,ADLS,Azure存储Blob,Azure VM中的SQL Server)的联接数据。

可编程性:U-SQL。

优点:利用SQL和C#技能轻松开始大数据;AAD;安全; 与Azure平台和Visual Studio集成;可以按工作定价;支持快速横向扩展(少于1分钟)。

缺点:当前仅支持批处理模式-您可以将HDInsight用于其他类型的工作负载;没有明确的路线图;与ADLS Gen2不兼容;没有内存中的数据缓存;没有行级安全性;没有动态数据屏蔽。

Azure HDInsight

HDInsight是Azure订户可使用的云托管服务,该服务使用Azure群集运行HDP(Hortonworks的Hadoop发行版),并与Azure存储集成。

支持各种开源分析引擎,例如Hive LLAP,Storm,Kafka,HBase,Apache Storm,Spark。

优点:基于云,这意味着可以在大约15分钟内创建集群;按需扩展节点;由Microsoft完全管理(升级,修补);一些Visual Studio和IntelliJ集成;SLA为99.9%。

关注点:Ranger(基于Kerberos)的安全性;需要手动配置和缩放;不能充当关系数据存储

Azure HDInsight Spark

Apache Spark是一个开放源代码群集计算框架。它提供基于弹性分布式数据集(RDD)的API,RDD是分布在计算机集群上的数据项的只读多集。RDD充当分布式程序的工作集,该程序提供了一种形式的分布式共享内存。在Spark之上构建的组件:Spark SQL,Spark Streaming,MLlib,GraphX。

可编程性: Python,Scala,Java,R,SQL。

优点:内存中的速度快(比MapReduce快5-7倍)。

缺点:与基于MapReduce的组件相比,组件较少;没有行级安全性。

Azure HDInsight Hadoop

Apache Hadoop包括两个核心组件:提供存储的Apache Hadoop分布式文件系统(HDFS)和提供处理的Apache Hadoop另一个资源协商器(YARN)。借助存储和处理功能,集群可以运行MapReduce程序以执行所需的数据处理。

优点:在MapReduce之上有很多开源组件。

缺点:Spark慢得多;不在内存中。

Azure HDInsight Hive LLAP

交互式查询(也称为Apache Hive LLAP或低延迟分析处理)是一种Azure HDInsight 群集类型。交互式查询支持内存中缓存,这使Apache Hive查询更快,更具交互性。交互式查询群集仅包含Hive服务。

可编程性: HiveQL(可以从Power BI,Apache Zeppelin,Visual Studio,Visual Studio Code,Apache Ambari Hive View,Beeline,Hive ODBC执行)。

优点:具有智能缓存的快速性能(低延迟);支持ACID交易;可扩展查询并发;针对速度服务层进行了优化。

缺点:无法查询外部关系存储(例如Azure SQL DB,VM中的SQL Server,Azure SQL DW);手动配置和缩放;没有冗余的区域服务器以实现高可用性。

Azure HDInsight ML Services

带有ML Services的Azure HDInsight(HDInsight上的AKA R服务器群集)为数据科学家,统计人员和R程序员提供了按需访问HDInsight上可伸缩的分布式分析方法的权限。该服务为加载到Azure Blob或Data Lake存储上的几乎任何大小的数据集提供了基于R的分析的最新功能。由于ML Services集群是基于开源R构建的,因此您构建的基于R的应用程序可以利用任何8000+开源R软件包。微软大数据分析软件包ScaleR中的例程也可用。ML Services将所有来自开放源代码社区(R,Python和AI工具包)的Microsoft创新和贡献都架在了一个企业级平台之上。

可编程性: ML Services包括高度可扩展的分布式算法集,例如RevoscaleR,revoscalepy和microsoftML,它们可以处理大于物理内存大小的数据,并且可以在各种平台上以分布式方式运行。包括Microsoft的自定义R软件包和Python软件包。

优势:可以运行来自Microsoft和开源的AI程序包;RevoscaleR允许在无法容纳群集内存的数据之上应用ML算法。

Azure Enabled NoSQL Database

Azure Cosmos DB

Azure Cosmos DB是一项全球分布式数据库服务,旨在通过全面的SLA弹性独立地扩展任意数量地理区域的吞吐量和存储。它利用流行的API和编程模型(DocumentDB API,MongoDB API,Graph API和Table API)支持文档,键/值或图形数据库。

开发:通过JSON文档,REST进行SQL查询和事务处理;SDK:.NET,Node.js,Java,JavaScript,Python,Xamarin,Gremlin。

优势:不同的存储格式,全局分布,弹性向外扩展,低延迟,5种一致性模型,自动索引,与模式无关,原生JSON,存储过程。

缺点:不支持内存中数据缓存;没有动态数据屏蔽。

Azure HDInsight HBase

Apache HBase是NoSQL宽列存储,用于编写大量非结构化或半结构化的应用程序数据,以使用Hadoop运行分析过程。它为按列族组织的无模式数据库中的大量非结构化和半结构化数据提供了随机访问和强大的一致性。数据存储在表的行和列中,并且行中的数据按列族分组。

可编程性和集成性: Phoenix,OpenTSDB,Kiji和Titan等可以通过将其用作数据存储而在HBase之上运行;Apache Hive,Apache Pig,Solr,Apache Storm,Apache Flume,Apache Impala,Apache Spark,Ganglia和Apache Drill也可以与HBase集成。

优点:NoSQL宽列存储;可以用作键值存储,传感器数据,实时查询;针对速度服务层进行了优化。

缺点:手动配置和扩展;不支持内存中数据缓存。

注意:使用Phoenix JDBC驱动程序支持SQL语言。

NoSQL Storage

Azure Data Lake Storage Gen1

Azure数据湖存储(ADLS)是云中的分布式并行文件系统,其性能已针对基于不同数据类型的分析进行了性能优化和优化。它受到领先的Hadoop发行商的支持:Hortonworks,Cloudera,MapR,HDInsight和Azure数据湖分析(ADLA)。

开发:WebHDFS协议(行为类似于HDFS);通过HTTPS的REST API。

优点:分层文件系统;针对并行分析工作负载的优化性能;高吞吐量和IOP;帐户大小,文件大小或文件数量没有限制。

缺点:仅局部冗余;在某些地区不可用。

Azure Blob Storage

Azure Blob存储是用于各种存储方案的通用对象存储。它具有高可用性,安全性,耐用性,可伸缩性和冗余性。它为不同的用例提供了热,凉和归档存储层。

管理工具:PowerShell,AzCopy。

开发:.NET,Java,Android,C ++,Node.js,PHP,Ruby和Python;带有HTTP / HTTPS请求的REST API。

优点:最兼容;全球冗余;最低的存储成本;更适合于简单的非分层存储;客户端加密。

缺点:平面命名空间;没有针对分析工作量进行优化;每个帐户最大500 TB,每个文件最大4.75 TB。

Azure Table Storage

Azure表存储允许您存储PB级的半结构化数据,同时降低成本,而无需手动分片。使用地理冗余存储,可以在一个区域内将存储的数据复制3次,而在另一个区域则可以复制3次。

开发:基于OData的查询。

Azure Data Lake Storage Gen2

Azure Data Lake Storage Gen2是基于Azure Blob存储构建的一组专用于大数据分析的功能。在Data Lake Storage Gen2中,Azure Data Lake Storage Gen1中的功能(例如文件系统语义,目录以及文件级安全性和规模)与Azure Blob存储中的低成本分层存储,高可用性/灾难恢复功能结合在一起。

优势:能够以每秒千兆位(Gbps)的速率在每秒高水平的输入/输出操作(IOPS)下存储和处理许多EB数据;几乎恒定的每请求延迟;分层名称空间显着提高了许多分析作业的整体性能。

缺点:与Gen1相比,交易成本稍高。