公司博客上

Databricks Runtime 3.0 Beta提供云优化Apache Spark

通过雷诺鑫

2017年5月24日 公司博客上

分享这篇文章

Databricks提供的一个主要价值是处理数据的机器集群的自动供应、配置和调优。在这些机器上运行的是Databricks Runtime构件,其中包括Apache Spark和其他软件,如Scala、Python、DBIO和DBES。对于客户来说,这些工件提供了价值:它们将他们从手动缩放的负担中解脱出来;他们加强了安全;它们可以提高I/O性能;他们提供快速发布版本。

在过去,运行时与上游Apache Spark共享版本。今天,我们正在改变一个新的版本方案,将Databricks Runtime版本与Spark版本分离,并允许我们将Databricks Runtime中的主要功能更新清楚地传达给客户。我们也正在发布Databricks Runtime 3.0的beta版,这是下一个主要版本,包括Apache Spark 2.2的最新候选版本,今天所有客户都可以使用。(请注意,Spark 2.2尚未由Apache正式发布。)

客户在创建新集群时可以选择此版本。

Databricks运行时3.0版本

在这篇博文中,我们将解释Databricks Runtime是什么,它所提供的附加价值,并预览即将发布的3.0版本中的一些主要更新。

Databricks运行时和版本控制

Databricks运行时是一组运行在Databricks管理的机器集群上的软件构件。它包括Spark,但也添加了许多组件和更新,极大地提高了大数据分析的可用性、性能和安全性。主要的区别是:

  1. DBIO带来更好的性能:Databricks I/O模块(DBIO)利用垂直集成的堆栈来显著提高Spark在云中的性能。
  2. DBES增强安全性:Databricks Enterprise Security (DBES)模块添加了静态和动态数据加密、细粒度数据访问控制和审计等功能,以满足标准遵从性(例如HIPAA、SOC2)和大型企业所期望的最严格的安全需求。
  3. 显著降低操作复杂性:通过自动扩展计算资源和本地存储等功能,我们将Spark置于“自动驾驶”状态,并显著降低了操作复杂性和管理成本。
  4. 快速发布和早期访问新功能:与上游开源版本相比,Databricks的bob下载地址SaaS产品促进了更快的发布周期,为我们的客户提供了开源版本中尚未提供的最新功能和错误修复。

现有的Databricks客户可能认识到Databricks Runtime被称为“集群映像”,并且在此版本之前与Spark共同版本,例如,Spark 2.1在Databricks平台中出现为“2.1.0-db1”,“2.1.0-db2”,“2.1.0-db3”和“2.1.1-db4”。bob体育客户端下载虽然Spark是运行时的主要组件,但旧的共同版本控制方案有标记限制。新版本方案将Databricks Runtime版本与Spark版本分离,并允许我们将Databricks Runtime中的主要功能更新清楚地传达给客户。

实际上,Databricks Runtime 3.0 beta包含了Spark 2.2的候选版本,以及它的所有构件,这些构件将随着我们对错误的修复而自动更新,直到6月份全面可用。接下来,我们将讨论这个Runtime发行版的主要特性和改进。

性能和DBIO

Databricks运行时3.0在DBIO中包含了许多改进性能、数据完整性和安全性的更新:

  • 更高的S3吞吐量:提高Spark作业的读写性能。
  • 更高效的解码:在解码常见格式时提高CPU效率。
  • 数据跳过:允许用户利用数据文件的统计信息在查询处理中更有效地修剪文件。
  • 事务性写入S3:特性对S3的事务性(原子性)写入(包括追加和新写入)。投机可以安全地启动。

作为DBIO构件的一部分,Amazon红移连接器增强包括:

  • 高级下推进入红移:包含限制、样本和聚合的查询片段现在可以下推到Redshift中执行,以减少数据从Redshift集群到Spark的移动。
  • 红移自动端到端加密:静止和传输中的数据可以自动加密。

很快,我们将发布一篇博客,展示在TPC-DS基准测试中观察到的性能改进。为了给你一个提示,我们比较了Databricks Runtime 3.0和在EMR上运行的Spark, Databricks在每一个查询上都更快,在99个复杂的TPC-DS查询上总共有5倍的改进。超过10个查询在运行时提高了10倍以上。

一位客户测试了最新版本,发现与早期版本的Spark相比,她的查询提高了4到60倍:

“演出是惊人的!我几乎可以指责你是一个随机数生成器,除非结果是正确的!”

细粒度数据访问控制

作为DBES中用于SQL和DataFrame api的细粒度数据访问控制的新特性的一部分,数据库管理员和数据所有者现在可以在编目中的数据库、表、视图和函数上定义访问控制策略,以限制访问。

使用标准SQL语法,可以在任意粒度的视图上定义访问控制策略,即行级、列级和聚合级。这与传统数据库(如Oracle或Microsoft SQL Server)中可用的特性类似,但适用于所有支持语言的SQL和DataFrame api。更好的是,它的实现方式没有任何性能损失,也不需要安装任何额外的软件。

作为示例,下面的示例授予userrxin允许访问每个部门的总工资,但不能访问单个员工的工资。

创建表格员工(姓名字符串,部门字符串,工资);创建视图dept_salary作为选择部门,总和(工资)total_salary员工集团通过部门;格兰特选择dept_salaryrxin;

在接下来的几周里,我们将发布一系列博客和相关文档,详细介绍细粒度数据访问控制。

结构化流

结构化流一年前被引入Spark作为一种新的构建方式连续应用程序.它不仅通过公开一个API来编写流查询(就像编写批处理查询一样)简化了构建端到端流应用程序,而且还通过确保精确的一次语义、执行增量有状态聚合和提供数据一致性来处理流的复杂性。

Databricks运行时3.0包含以下Spark 2.2的新特性:

除了上游的改进,Databricks Runtime 3.0还专门针对云部署进行了优化,包括以下增强:

最后,在生产流中处理了数千亿条记录后,Databricks现在也在考虑结构化流GA,并为我们的客户准备好了生产。

其他重要更新

用于嵌套数据处理的SQL高阶函数:提供了一种强大且富有表现力的方式来处理嵌套数据类型(数组、结构)。看到这篇博文欲知详情。

改进的多租户:当多个用户在同一集群上并发运行工作负载时,Databricks Runtime 3.0确保这些用户可以公平地共享资源,因此运行短的交互式查询的用户不会被运行大型ETL作业的用户阻塞。

自动缩放本地存储: Databricks Runtime 3.0可以自动配置本地存储并按需扩展。用户不再需要预估和发放EBS卷。

Apache Spark的基于成本的优化器: Spark 2.2中最重要的更新是引入了基于成本的优化器。这个特性现在在Databricks Runtime 3.0 beta版中可用(默认关闭)。

结论

Databricks运行时3.0将包括Spark 2.2和在DBIO、DBES和结构化流中的1000多个改进,使数据分析更容易、更安全、更高效。

虽然我们不建议将任何生产工作负载放在这个测试版上,但我们鼓励您尝试一下。随着我们在上游开源Apache Spark和其他组件中加入bug修复,beta版本将每天自动更新,直到6月全面可用。bob下载地址

注册一个今天庭审以测试完整的功能。

免费试用Databricks
看到所有公司博客上的帖子