06、SQL Server大数据群集进阶--理解大数据构架

06、SQL Server大数据群集进阶--理解大数据构架

 

之前创建了一个SQL BigData群集,也进行了HDFS连接查询的操作,一切看起来都挺简单的,也能运行起来。但是也没发现有什么特别之处,与普通的SQL实例相比也好像没有区别。因此我们要更加深入的学习和剖析大数据群集。

大数据构架目标是实现大数据的导入、存储、管理、查询、分析、预测。

数据导入

首先需要完成数据的导入工作。在任何大型数据系统中, 您都需要一种将数据引入的方法。在某些情况下, 您将使用名为 "提取、转换和加载" (ETL) 的过程在传入或暂存数据的过程中编辑数据, 或者使用称为 "提取、加载和转换" (ETL) 的过程

ETL 的过程来说有很多方法实现。在SQL Server中有比如:

  • SSIS 实现数据的加载传输

  • 使用应用程序

  • 使用BCP

  • 使用数据工厂

本文不重点讨论数据的传输的工作,因此不一一做介绍。简单来讲,数据的装载工作就是将不同的数据安装你想需要的结果进行相应的转换、处理、保存的工作。

数据存储

大数据存储是一个很麻烦的事情,在关系数据库中一般来说超过TB级别的数据库并不多见,在实际上DBA也不会建议业务数据库过大,都会采取分库机制,讲历史库存放起来。尽量减小在线库的大小。这样加快查询速度,也减轻运维的难度。

但是大数据由于数据来源多样性,有结构化和非结构化的。同时由于分析的诉求,也需要存放足够多的历史数据,才能进行分析和预测。因此在大数据环境中数以PB级别的数据也是常见的。在现有的硬件条件和云计算环境下,存放PB级别的数据并不是难事。但是如何进行管理并且提供查询,这样变得非常困难。因此在设计中就会采用分布式的方式进行存放数据,并且用分布式计算方式进行查询。目前在大多数的情况下数据存放就需要有HDFS这样的技术来实现存储池。

由于 HDFS 是一个文件系统, 数据传输和存储中在很大程度上是将其用作挂载点使用。尽管 HDFS 系统的平台和位置会影响可用的选择, 但通常使用以下方法:

  • 如果您的 HDFS 挂载点是本地的, 则可以使用多个工具将数据传输到HDFS,包括将其作为文件系统挂接到Linux

  • 使用网络文件系统 (NFS)网关可以访问 HDFS 装入点

  • Python 代码装载 HDFS, 允许您以编程方式访问装入点。

  • 如果 HDFS 位于云中, 则每个提供程序都有访问该数据的方法。Microsoft Azure 有多种承载 HDFS 的方法, 将数据传输到 Azure 内几乎任何位置,常用方法是使用Azure 数据工厂。

计算

大数据处理最后是需要进行分析和预测的,这些工作都需要大量的计算能力。构架上都会使用分布式计算的方式去实现。 Windows 和 Linux (在 x86 体系结构中) 都是对称多处理系统, 这意味着所有处理器都是作为一个单元处理的。一般情况下, 分布式处理系统应该在 "头" 节点上有更大、更多的处理器。 但对于某些用途如深度学习或人工智能, 在环境中使用特定内置的处理器GPU, 在某些情况下如边缘计算,ARM 芯片可以发挥特定的任务。

内存

分布式处理系统中的存储节点需要少量内存, SQL Server BDC 中包含的框架 (Spark) 中的处理节点需要更多内存。Linux 和 Windows 都支持大量内存 , 并且不需要对内存进行特殊配置。

容器技术

大数据技术里面重要的技术实现是容器技术。 在之前的技术手段里面使用虚拟机尽量的去抽象出操作系统和应用,虚拟机的好处是提供了完整的操作系统,也能使用模板去部署应用,但是对于应用来讲不够灵活。

而在新的技术里面诞生了容器技术。容器技术里面现在通用的是Docker,Docker 容器由 Docker 运行引擎提供, 该引擎位于操作系统 (Windows 或 Linux) 之上。在此抽象中, 您不控制硬件或操作系统。容器中的内核非常小, 并且可以包含二进制文件, 如 Python、R、SQL Server 或其他二进制文件。包含其所有二进制文件的容器称为"Image"。(注: 容器映像内核可以在 Windows 或 Linux 上运行)

 

image 为应用程序将其与其他正在运行的进程隔离开来。它也是完全可移植的。你可以在一个系统上创建一个映像, 另一个系统只要安装了 Docker 运行时就可以运行它。容器也启动非常快, 很容易创建, SQL Server 就是可以部署再容器上.根据硬件资源量, 您可以随时运行多个容器。对于横向扩展系统, 容器允许仅使用声明性命令分发和控制完整的应用程序。

大数据群集技术:K8S

对于大数据系统, 拥有大量的容器对于分割用途和性能配置文件非常有利。但是, 处理许多容器映像, 允许持久存储, 并将它们互连用于网络和网络间通信是一项复杂的任务。Kubernetes是一个开源容器协调器, 它可以根据需要扩展容器部署。下表定义了一些重要的 Kubernetes 术语

组件用途
集群Kubernetes 群集是一组称为节点的计算机。控制群集节点称为主节点;其余节点是工作节点。 Kubernetes 主节点负责在节点之间分配工作, 并负责监测集群的运行状况。
节点节点运行容器化的应用程序。它可以是物理计算机, 也可以是虚拟机。 Kubernetes 群集可以包含物理计算机和虚拟机节点的混合。
PodPod是部署的最小单位。Pod是一个由一个或多个容器和相关资源组成的逻辑组, 这些资源是运行应用程序所需的。每个Pod在节点上运行; 一个节点可以运行一个或多个Pod。Kubernetes 主机会自动将Pod分配给群集中的节点。

 

大数据群集分布式存储技术

正如您前面了解到的那样, 传统存储使用从操作系统到底层 I/O 系统的调用。这些文件系统要么直接连接到操作系统, 要么看起来是直接使用存储区域网络连接的。数据块由操作系统存储和管理。

对于大型横向扩展数据系统, I/O的安装点是另一个抽象。对于 SQL Server BDC, 最常用的横向扩展文件系统是Hadoop 数据文件系统 (Hdfs). HDFS 是一组 Java 代码, 它将不同的磁盘子系统收集到一个群集中, 该群集由各种节点组成-一个用于管理群集元数据的Namenode物理存储数据的 datanode 。文件和目录在 NameNode 上由一个称为inodes 的结构表示。Inode 记录权限、修改和访问时间以及命名空间和磁盘空间配额等属性。

 

对于容器等抽象, 存储成为一个问题, 原因有二:第一: 当删除容器时, 存储可能会消失, 其二""其他容器和技术则无法轻松地访问容器中的存储。

为了解决这个问题, Docker 实现了卷的概念, kubernetes 扩展了这一概念使用特定的协议和命令, Kubernetes (以及在特定的 Sql SERVER BDC) 将存储装载为持久卷, 并使用称为持久卷声明的构造来访问它。Kubernetes 卷是一个已装入的目录, 可供节点内的Pod中的容器访问。

 

大数据技术: 使用与控制

有三个主要工具和实用程序将用于控制 SQL Server 大数据群集:

  • kubectl

  • mssqlctl

  • Azure Data Studio

具体如何使用,在其他的文章中已有介绍。

SQL BigData构架理解

以上了解了关键的大数据的技术。现在来回顾SQL BigData的构架。回到之前的那张图:

从图上可以看到,从底层Kubernetes 管理的多个节点来承载整个平台,每个Node 可以看做一个虚拟机。总体构架上实现计算池、存储池、数据池。这些都由容器来承载。而每个池可以看做多个Pod的组成。

SQL BigData 大数据群集组件

上面的构架中可以看到的大概的组成,下面这张图能够更能理解大数据群集的组成和各组件之间的关系。大数据群集实现数据虚拟化功能, 可以在独立实例中使用 SQL Server 的大数据功能。为了执行横向扩展大数据, SQL Server 通过利用 Kubernetes 和其他几个组件来实现大数据群集。组件的目标主要实现对数据存储管理、计算、控制的能力。

因此主要的组件就是控制平面、计算平面、数据平面

 

控制平面: Kubernetes 组件

大数据环境模块中看到的, Kubernetes 中有多个组件可与 Sql server 大数据群集配合使用。这些组件用于管理和监视解决方案:

 

Kubernetes Master Node在 K8S集群中的一个专用节点, 用于管理和控制 Kubernetes 群集。除了主节点之外, 控制安装在每个节点上的服务还包括*kublet, kube-proxy 和 Docker* runtime engine.
Apache KnoxApache Knox 网关是用于与群集的 REST Api 和 Ui 交互的应用程序网关。Apache Knox网关为 BDC 中的所有 REST 交互提供了一个单一的接入点。
Apache LivyApache Livy 提交 Jobs to Apache Spark
Apache HIVE分布式存储数据库存放 Spark 元数据
GrafanaSQL 群集管理门户使用的可视化和仪表板系统。
*KibanaKibana 是 SQL 群集管理门户使用的开源日志可视化和搜索插件。

 

控制平面: 控制器服务

SQL Server BDC 中的控制器是使用mssqlctl实用程序部署的服务。它将与 SQL Server、Kubernetes、Spark 和 HDFS 的交互联系起来。

控制器服务提供以下核心功能:

  • 管理群集生命周期: 群集引导 & 删除、更新配置

  • 管理主 SQL Server 实例

  • 管理计算、数据和存储池

  • 公开监视工具以观察群集的状态

  • 公开故障排除工具以检测和修复意外问题

  • 管理群集安全: 确保群集终结点的安全, 管理用户和角色, 为群集内通信配置凭据

  • 管理升级的工作流程, 使其安全实施

  • 管理群集中状态服务的高可用性和灾难恢复

您有两种使用控制器服务的方法: mssqlctl 实用程序和*Cluster Adminnstration Portal。与控制器服务的所有通信都是通过 HTTPS 上的 REST API 进行的。自签名证书将在引导时自动生成。对控制器服务端点的身份验证基于用户名和密码。这些凭据是在群集引导时使用环境变量输入进行配置的。

这些组件在 SQL Server 大数据群集的控制器中使用:

SQL Server 2019 控制器服务为大型数据群集提供横向扩展计算资源。
  

 

控制平面: SQL 服务器主实例

SQL Server 主实例是在 Kubernetes 群集中的节点上的一个Pod中安装 SQL Server 2019。可以使用与任何 SQL Server 实例相同的方式访问它, 并将其用于OLTP、OLAP 或其他类型的工作负载。它已经配置了机器学习服务, 因此您可以使用全部 R、Python 和 Java 来处理群集环境中的数据。

主实例存储的元数据超出了 HIVE 存储的元数据的范围。它还包含 PolyBase 定义表, 除了标准的 SQL Server 系统数据库外, SQL 主实例还包含以下内容:

  • 包含 hdfs 表元数据的元数据数据库

  • 数据平面分片地图

  • 提供对群集数据平面的访问的外部表的详细信息。

  • 在用户数据库中定义的多边形基外部数据源和外部表。

这些组件在 SQL Server 主实例的控制器中使用:

SQL Server 2019 主实例SQL Server 主实例为群集提供了一个外部可访问的 TDS 终结点。
SQL Server 可扩展性框架用于在 SQL Server 中执行 Java、R 和 Python 代码中的机器学习和其他功能。

 

计算平面: 计算池

计算池包含一个或多个 SQL Server Pod, 用于在 SQL Server 主实例的指导下进行分布式处理。它为 BDC 的分布式计算层对 polybase 连接器进行调用。

这些组件在 SQL Server 大数据群集的计算池中使用:

SQL Server 2019为大型数据群集提供横向扩展计算资源。
  

 

计算平面: 应用池

应用程序池是节点内的一组 Pod, 它将多种类型的端点保存到系统中。SQL Server 集成服务位于应用池中, 其他作业系统也是可能的。您可以将长时间运行的作业 (如物联网流) 或机器学习 (ml) 终结点安装为实例, 用于为预测打分或返回分类。

这些组件在 SQL Server 大数据群集的计算池中使用:

Kubernetes Node为操作大数据群集提供计算资源。
  

 

数据平面: 数据池

SQL Server 大数据群集中的数据池由一个或多个 SQL Server 数据池实例组成。SQL 数据池实例为群集提供持久的 SQL Server 存储。数据池用于从 SQL 查询或 Spark 作业中获取数据。为了在大型数据集中提供更好的性能, 数据池中的数据被分布到成员 SQL 数据池实例中的分片中。

 

 

这些组件在 SQL Server 大数据群集的数据池中使用:

Sqlserver为大数据群集提供缩放的数据存储。
Polybase Feature用于处理外部表。

 

数据平面: 存储池

存储池由 Linux 上的 SQL Server、Spark 和 HDFS 组成的存储节点组成。SQL 大数据群集中的所有存储节点都是 HDFS 群集中的成员。您可以将其用作 "数据湖" 构造, 以处理存储在不同数据源上的大量数据集。

在存储池内, 存储节点负责通过 Spark (Hdfs (Parquet 格式) 的数据存储) 接收数据。HDFS 还提供了数据持久性, 因为 HDFS 数据分布在 SQL 大数据群集中的所有存储节点上。存储节点还通过 HDFS 和 SQL Server 终结点提供数据访问。

 

 

这些组件在 SQL Server 大数据集集中的存储池中使用:

**HDFSSQL Server 和 Apache Spark 使用的分布式数据存储系统。
Apache SparkApache Spark 是用于处理大规模数据的分析引擎。它可以与存储在 HDFS 中的数据一起使用, 并且还具有用于处理 SQL Server 中的数据的连接器。

 

总结

SQL Bigdata 使用K8s技术实现快速的部署,创建,也实现存储的管理。SQL Server 大数据群集允许你部署的 Kubernetes 上运行的 SQL Server、 Spark 和 HDFS 容器的可缩放群集。 并行运行这些组件,以使您能够读取、 写入,并处理从 TRANSACT-SQL 或 Spark 的大数据、 使您轻松合并和分析大数据大容量高价值关系数据。SQL Server 大数据群集提供在如何与你的大数据进行交互的灵活性。 您可以查询外部数据源,将大数据存储在 HDFS 由 SQL Server 或通过群集的多个外部数据源查询数据。 然后,您可以使用数据的 AI、 机器学习和其他分析任务。


作者简介: Max Shen(阿特),为了成为数据专家而努力,万一实现了呢!有多年的系统运维,数据库运维经验。近20年的IT从业经验,在微软有超过10年的工作经验。对数据库运维调优,排错,有独到能力。电话微信18628037379,maxcloud@outlook.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值