大数据技术训练舱,手把手从零教你大数据技术开发:

大数据技术训练舱:从零开始部署Hadoop3高可用集群(基于CentOS7)

大数据技术训练舱——从零开始安装、配置CentOS 7


Spark架构

作为大数据处理计算的大一统软件栈Spark,或将是大数据处理领域里面的Spring framework。我们从下图中可以看到Spark core之上具有了四种面向不同计算领域或方式的Spark模块,Spark streaming模块面向实时流计算,具体方式采用微批处理;MLlib模块面向Spark的机器学习库,尤其是Spark默认对Python的支持,成为Python开发者接入Hadoop生态平台的绝佳入口;GraphX面向图处理,有了GraphX,对于社交网络、知识库、超文本关联度分析、传染病传播预测等应用领域,都可以使用Spark来处理。

我们本次主要分析了解到是Spark SQL,一个将不同来源数据进行关系结构化再进行计算处理的模块。

DataFrame

示例

Spark SQL可以支持从很多种数据源的结构化抽象,Spark SQL从数据源中抽取数据集后抽象成一种具有schema结构的rdd对象:DataFrame,有点类似拿到了一个Hibernate的Session与实体对象的合体(类似,可能不太恰当),可以执行类似下面例子中DataFrame(df)的查询操作。

大家可以看到DataFrame实际上就是将数据源结构化为SQL表列。因为DataFreame也需要进行schema定义。类似下图:

数据源

Spark SQL可以从哪些数据源建立DataFrame结构化模型呢?

  • json:Spark自动推断数据结构和类型

  • Parquet    Spark的默认数据源,自动保存schema

  • Hive table  Spark支持直接读取Hive数据

  • JDBC  Spark通过Jdbc驱动拉取Rdbms数据表数据

  • CSV    可根据CSV行头定义列

  • 等等......

架构

如下图所示:

  1. 客户端根据自己的目标语言,Java、Python、Scala进行Spark SQL操作。

  2. Spark SQL访问上述的各种数据源,创建DataFrame对象。

  3. 通过对DataFrame API的调用,实现SQL方式操作数据(查询、聚合、分组等、连接等)。

  4. Spark SQL将SQL操作语句调入Catalyst Optimizer引擎形成执行计划。

  5. 执行计划进入Spark处理引擎,由分布在不同节点的Spark集群任务并行处理SchemaRDD(DataFrame)。

Catalyst优化器

Spark SQL执行的SQL语句在Catalyst优化器中经历了逻辑计划、物理计划两个过程,逻辑计划过程主要依赖Antlr。首先SQL语句在unresolved logical plan阶段由antlr转换成抽象语法树,这时候会根据Catalog中(存储了所有的表信息、DataFrame信息)的元数据,对unresolved logical plan进行表达式解析,确定表、列都存在后,才会形成真正的resolved logical plan,最后交付Catalyst优化器进行优化逻辑计划(Optimized logical plan)。如下图所示:

转换成功的逻辑计划将进入物理计划阶段,Optimized logical plan会分解为多个物理计划(Physical Plans),最终进入代价模型(Cost Model),根据资源开销成本,去选择最佳的物理计划(Best Physical Plan),最终进入到集群中运行。如下图所示:

Dataset

在Dataframe之后Spark推出了一个新的数据抽象:DataSet,DataSet可以理解为DataFrame的扩展,对象类型更为显性,这种优势就是在开发起来具有更友好的API风格,更适合工程化管理。

例如:我们定义了一个叫Flight的Dataset实体类

我们可以将DataFrame转换成Flight class类型的Dataset,这时候的变量flights就是Dataset[Flight]强类型了,即具有类型安全检查,也具有Dataframe的查询优化特性。

Dataset在编译时就会检查类型是否符合规范。Dataset仅适合用于基于JVM的Scala、Java,通过case类或Javabeans指定类型。

当调用DataFrame的API时,返回的结果结构就是Row类型;当使用DatasetAPI时,就可以将将Row格式的每一行转换为指定的业务领域对象(case类或Java类)

Spark集群架构

我们可以将Hive、Impala、Presto理解为比较独立的数仓工具,在上一篇中Impala和Presto的对比,我们甚至可以看到它们俩具有独立的分布式架构。Hive则是Hadoop生态独立性很高SQL解析与执行工具,插接Mapreduce、Spark、Tez计算引擎,高度依赖HDFS存储系统。

反观Spark SQL,它并不独立,应是Spark平台上的一组模块,彻底与Spark糅合在一起,因此谈Spark SQL的分布式架构,其实就是在讲Spark架构。我们从下图可以看到Spark架构的特征,在集群计算资源调度方面与Spark无关,主要依赖Hadooop Yarn或者Mesos实现分布式集群计算资源的调度管理。

同理Spark SQL解析完成物理计划后就完成交由Spark集群进行并行任务处理,Spark集群中Driver提交作业、实现调度,Executor具体执行任务、返回结果。

Executor中通过多线程方式运行任务(Task),而且Executor通过堆内内存、堆外内存管理,实现高性能的内存计算,这点是Spark性能上优于Mapreduce将中间过程数据写入磁盘导致性能慢的关键原因之一。


您觉得文章写得不错就点赞、分享一下吧!

本文由公众号「守护石」出品,转载请注明来源和作者。 

大数据平台的SQL查询引擎有哪些—SparkSQL相关推荐

  1. 大数据的分布式SQL查询引擎 -- Presto的详细使用

    Presto – Distributed SQL Query Engine for Big Data 官网 项目源码 官方文档 目录 1 Presto 概述 2 概念 2.1 服务进程 2.2 数据源 ...

  2. 大数据平台回归SQL

    先说观点:因为还没找到更好的. 接下来说原因,首先来看看大数据平台都在干什么. 原因 结构化数据计算仍是重中之重 大数据平台主要是为了应对海量数据存储和分析的需求,海量数据存储的确不假,除了生产经营产 ...

  3. 为什么大数据平台要回归SQL

    先说观点:因为还没找到更好的. 接下来说原因,首先来看看大数据平台都在干什么. 原因 结构化数据计算仍是重中之重 大数据平台主要是为了应对海量数据存储和分析的需求,海量数据存储的确不假,除了生产经营产 ...

  4. 独家解读!阿里首次披露自研飞天大数据平台技术架构

    9 月 26 日,阿里云飞天大数据平台在云栖大会第二天主论坛上正式对外发布,这也是阿里首次对外披露飞天大数据平台的整体架构. 据介绍,飞天大数据平台由阿里自主研发,可扩展至 10 万台计算集群,是目前 ...

  5. 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?...

    作者 | 胡泽康 鄞乐炜 Profile 作者简介 胡泽康 联通(广东)产业互联网公司  大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师, ...

  6. 分布式大数据sql查询引擎Presto初识

    1.背景: Hive使用MapReduce作为底层计算框架,是专为批处理设计的.但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求.Presto ...

  7. SQL on Hadoop在快手大数据平台的实践与优化 | 分享实录

    快手大数据架构工程师钟靓 本文是根据快手大数据架构工程师钟靓于 5月18-19日在A2M人工智能与机器学习创新峰会<SQL on Hadoop在快手大数据平台的实践与优化>演讲中的分享内容 ...

  8. 开源项目推荐:物联网消息引擎EMQ X/大数据平台TDengine/可视化平台Grafana/dgiot

    1.EMQ X EMQ X Broker 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构,发布订阅模式的开源 MQTT 消息服务器.EMQ X Broker 在全球 ...

  9. 05.SQL Server大数据群集小试牛刀--HDFS查询

    05.SQL Server大数据群集小试牛刀--HDFS查询 SQL Server大数据群集查询HDFS ,利用之前创建好的大数据群集,使用官方提供的测试数据进行测试.脚本是官方的脚本,要知道干了什么 ...

  10. 淘宝、美团、滴滴分别如何搭建大数据平台?

    常规的大数据平台架构方案是基于大数据平台Lamda架构设计的.事实上,业界也基本是按照这种架构模型搭建自己的大数据平台. 接着我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的 ...

最新文章

  1. 群体决策是如何误入歧途的
  2. ​iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景.
  3. Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放;服务器端口开放与关闭
  4. 汇编:ret以及retf指令
  5. PHP、JS 中 encode/decode
  6. mysql安装教程8.0.22_mysql 8.0.22 安装配置方法图文教程
  7. java process exe.exec 执行exe程序
  8. 最大的矩形(ccf)
  9. Web开发之一:Web UI技术综述
  10. Python中logging日志使用
  11. carrot2中lingo实现总结(一)
  12. Apache HTTP Server 下载,安装,配置,启动手把手教你
  13. R语言中的K折交叉验证
  14. seo知识技巧-关键词密度选取技巧
  15. adb Error: failed to write; /data/local/tmp/??.apk (No such file or directory)
  16. 项目 调度 服务器,(2)项目构建(Reactor部分)【Lars-基于C++负载均衡远程服务器调度系统教程】...
  17. (八)JVM成神路之GC分区篇:G1、ZGC、ShenandoahGC高性能收集器深入剖析
  18. python 切片(正负数)
  19. 新手指南:互联网创业要准备什么?
  20. Elasticsearch(9) --- 聚合查询(Bucket聚合)

热门文章

  1. mac 运行android模拟器速度慢,Mac下顺畅的安卓模拟器:网易MuMu
  2. Rayman的绝顶之路——Leetcode每日一题打卡10
  3. linux ls 配色方案,Terminal 配色方案
  4. 陀螺仪数据转换成角度_MPU6050 计算角度
  5. linux 的 绘画软件,Drawing Linux(简单画图工具)
  6. 解析eas webservice
  7. CSC联合培养加拿大工签攻略
  8. 冒犯有时是必要的:如何开启一段亲密关系?
  9. 苹果更新失败无法连接服务器未响应,iPhone 更新失败怎么办?更新 iOS 常见的错误代码及解决方法(二)...
  10. 数字证书相关的知识点