Databricks Lakehouse Platform

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Databricks Lakehouse Platform Simple, Open, Collaborative Bo Zhang (bo.zhang at databricks.com) Software Engineer at Databricks
2. What is Databricks? Databricks’ vision is to enable data-driven innovation to all enterprises
3. 开源项目 Over 30 million monthly downloads
4. 行业合作 医疗保健和生命科学 制造业和汽车行业 媒体和娱乐 金融服务 公共部门 零售和包装消费品 能源和公用事业 数字原生
5. Lakehouse One platform to unify all your data, analytics, and AI workloads
6. Lakehouse 数据仓库 数据湖 流式分析 BI 数据科学 结构化,半结构化及非结构化数据 机器学习
7. 数据仓库 BI 报表 优势 ▪ 便于BI和报表系统接入 数据仓库 ▪ 数据管控能力强 劣势 ETL ▪ 不支持非结构化数据 ▪ 专有系统,成本高 结构化数据 ▪ 专有数据格式,灵活度低
8. 数据湖 优势 BI 报表 实时数据库 数据科学 机器学习 ETL 数据清理 ▪ 存储成本较低 ▪ 支持非结构化数据 劣势 ▪ 对BI系统的支持不足 ▪ 查询性能低 ▪ 数据实时性,可靠性差 数据仓库 数据湖 结构化,半结构化与非结构化数据
9. 复杂的组合型数据系统 数据仓库 数据工程 流式处理 数据科学与机器学习 孤立的技术栈,使得数据架构复杂性提升 数据市场 数据仓库 数据科学 转换 分析和BI 提取 加载 数据湖 机器学习 实时数据库 数据清理 流数据引擎 数据湖 结构化数据 结构化,半结构化及非结构化数据 流数据源 结构化,半结构化及非结构化数据
10. 复杂的组合型数据系统 数据仓库 Amazon Redshift 数据工程 Teradata Azure Synapse Google BigQuery SAP Oracle Autonomous Data Warehouse Snowflake IBM Db2 数据仓库 数据科学与机器学习 多个系统,多种专有数据格式,不便于集成 Hadoop Apache Airflow Amazon EMR Apache Spark Google Dataproc Cloudera Apache Kafka Apache Flink Azure Stream Analytics Apache Spark Amazon Kinesis Google Dataflow Tibco Spotfire Confluent Jupyter Amazon SageMaker Domino Data Labs SAS Azure ML Studio MatLAB TensorFlow PyTorch 孤立的技术栈,使得数据架构复杂性提升 数据科学 转换 分析和BI 数据市场 流式处理 提取 加载 数据湖 机器学习 实时数据库 数据清理 流数据引擎 数据湖 结构化数据 结构化,半结构化及非结构化数据 流数据源 结构化,半结构化及非结构化数据
11. 复杂的组合型数据系统 数据仓库 数据工程 流式处理 数据科学与机器学习 分散的数据团队影响生产力 数据分析师 Amazon Redshift Teradata Azure Synapse Google BigQuery SAP Oracle Autonomous Data Warehouse Snowflake IBM Db2 数据工程师 多个系统,多种专有数据格式,不便于集成 Hadoop Apache Airflow Amazon EMR Apache Spark Google Dataproc Cloudera 数据仓库 Apache Kafka Apache Flink Azure Stream Analytics Apache Spark Amazon Kinesis Google Dataflow Tibco Spotfire Confluent Jupyter Amazon SageMaker Domino Data Labs SAS Azure ML Studio MatLAB TensorFlow PyTorch 孤立的技术栈,使得数据架构复杂性提升 数据科学 转换 分析和BI 数据市场 数据科学家 数据工程师 提取 加载 数据湖 机器学习 实时数据库 数据清理 流数据引擎 数据湖 结构化数据 结构化,半结构化及非结构化数据 流数据源 结构化,半结构化及非结构化数据
12. Lakehouse 流式分析 BI 数据科学 机器学习 适用于所有场景的统一平台 需要什么能力? Structured transactional layer 存储所有数据的数据湖 结构化,半结构化及非结构化数据
13. Lakehouse 流式分析 BI 数据科学 机器学习 适用于所有场景的统一平台 数据质量 权限管理 查询性能 Structured transactional layer 存储所有数据的数据湖 结构化,半结构化及非结构化数据
14. Delta Lake The key enabler of lakehouse
15. 数据质量保证 读写并行 数据更新 中途失败作业 数据建模 小文件过多
16. 数据质量保证 读写并行 数据更新 中途失败作业 ACID事务能力 数据建模 Schema验证与演化 小文件过多 文件自动合并优化
17. Delta Lake 发展历史 ●开源Delta Lake ●ACID事务 ●Schema管理 ●可扩展的元数据处理 ●版本控制 ●批流一体 2019/04 (0.1) ●非Spark引擎支持 ●增强并发能力 ●增强文件压缩 ●提升insert-only merge性能 ●Delta表转换SQL ●试验性支持Snowflake/Redshift Spectrum ●支持Hive metastore ●支持SQL DML ●自动生成Presto/Athena manifest ●表历史留存时间控制 ●支持用户自定义Delta表元数据 ●支持Azure Data Lake Storage Gen2 2019/09 (0.4) 2019/12 (0.5) 2020/04 (0.6) 2020/06 (0.7) 2021/02 (0.8) ●Scala/Java APIs: DML命令 ●Scala/Java APIs: 查询历史 ●Scala/Java APIs: 旧文件清理 ●Python DML APIs ●in-place Delta表转换 ●支持Merge中的Schema自动更新 ●Merge中的自动重分区 ●增强非insert merge性能 ●支持从任意文件系统中读取Delta表 ●支持Merge中nested column的Schema自动更 新 ●MERGE/UPDATE中引用nested struct columns ●Delta表constraint检查 ●支持从表的某个版本开始流式输出 ●VACUUM语句并行删除
18. Delta Lake 1.0 Generated Columns Spark 3.1 支 持 多Cluster写入 Cloud解耦 PyPI Release Delta Standalone
19. Standalon e Delta Standalon e
20. Delta Lake 生态 Ecosystem Project Status Delta Standalone Reader Delta Standalone Writer Available Q4’ 21 Flink/Delta Source Flink/Delta Sink Q1’ 22 Q4’ 21 Pulsar/Delta Source Pulsar/Delta Sink Q4’ 21 Q1’ 22 PrestoDB/Trino integration Q4’ 21 Rust Integration (kafka-delta-ingest) Available Nessie Integration Q4’ 21 LakeFS Integration Q4’ 21 Hive3 Connector Available Spark 3.2 Support Q4’ 21
21. Delta Sharing An Open Protocol for Secure Data Sharing
22. Delta Sharing设计目标 • 无需复制到其他系统,便可直接分享Lakehouse中的数据 • 采用现有的,开放的数据格式,数据接收方客户端的实现更加简单 • 提供强大的安全,审计与治理能力 • 可扩展性强,支持海量数据的分享
23. Delta Sharing原理 数据接收方 数据提供方 访问许可 Delta Sharing协议 Delta Lake表 Delta Sharing服务 … 客户端
24. Delta Sharing实现 数据接收方 数据提供方 访问许可 ✓ 请求读取”销售数据”表 … Delta Lake表 S3 Objects (Parquet格式) Delta Sharing服务 客户端
25. Delta Sharing实现 数据接收方 数据提供方 访问许可 ✓ 请求读取”销售数据”表 Delta Lake表 Delta Sharing服务 返回短期有效的URL: https://s3.aws.com/part1?sig=... https://s3.aws.com/part4?sig=... 从S3直接获取数据 S3 Objects (Parquet格式) … 客户端
26. Delta Sharing生态 Open Source Clients Commercial Clients Business Intelligence Data Providers Analytics Governance
27. Unity Catalog Simplified governance for data and AI
28. 数据湖治理现状 用户 基于文件的权限管理: • 用户1可读 /pages/ • 用户2可读 /users/ • 用户3可读 /users/us/ 数据(云存储上的文件) /dataset/pages/part-001 如何更新数据布局? /dataset/users/uk/part-001 如何只让用户拥有表中部分行/列的权限? /dataset/pages/part-002 /dataset/users/uk/part-002 /dataset/users/us/part-001 元数据(如Hive Metastore) 表 & 视图 可能与数据权限不同步! 其他数据源(如数据仓库) 完全不同的权限模型 机器学习模型 完全不同的权限模型
29. Databricks Unity Catalog 用户 Unity Catalog Table 1 Table 2 View 1 View 2 Model View 3 细粒度权限:管理表、视图、列,而非文件 Audi t Log 数据(云存储上的文件) /dataset/pages/part-001 /dataset/pages/part-002 /dataset/users/uk/part-001 /dataset/users/uk/part-002 /dataset/users/us/part-001 其他数据源 机器学习模型 标准接口:ANSI SQL DCL 为不同的数据资产类型提供统一的权限模型 集中审计 Delta Shares
30. 使用Unity Catalog CREATE TABLE iot_events GRANT SELECT ON iot_events TO engineers GRANT SELECT(date, country) ON iot_events TO marketing
31. 基于视图的权限管理 CREATE VIEW aggregate_data AS SELECT date, country, COUNT(*) AS num_events FROM iot_events GRANT SELECT ON aggregate_data TO business_analysts
32. 基于属性的权限管理 CREATE ATTRIBUTE pii ALTER TABLE iot_events ADD ATTRIBUTE pii ON email ALTER TABLE users ADD ATTRIBUTE pii ON phone ... GRANT SELECT ON DATABASE iot_data HAVING ATTRIBUTE NOT IN (pii) TO product_managers
33. 管理其它数据资产类型 GRANT EXECUTE ON MODEL fraud_ranking TO engineers GRANT EXECUTE ON MODELS HAVING ATTRIBUTE (eu_data) TO eu_product_managers
34. Databricks Unity Catalog 统一的管理接口 SQL标准的权限模型 与现有Catalog集成
35. Databricks SQL Analytics on your lakehouse
36. Databricks SQL 轻松对接BI生态 Analyst Experience Admin Experience 简单易用 SQL Endpoints Photon Engine Unity Catalog 真实场景下的高性能 统一的数据管控 开放可扩展的数据湖 结构化、半结构化和非结构化数据
37. Databricks SQL Analyst Experience Admin Experience SQL Endpoints Photon Native Vectorized Engine Unity Catalog 结构化、半结构化和非结构化数据 真实场景下的高性能
38. 查询性能 • TPC-DS 100 TB 新世界纪录(2021 / 11 / 2) TPC-DS 100 TB QphDS 2.2x Databricks Photon 原记录
39. Photon Engine • 与Apache Spark完全兼容 • C++向量化查询引擎
40. 设计思路 • 资源:硬件发展趋势 • 需求:查询负载分析
41. 硬件发展趋势 2010 2015 2020 存储 50 MB/s (HDD) 500 MB/s (SSD) 16 GB/s (NVMe) 10X 网络 1 Gbps 10 Gbps 100 Gbps 10X CPU ~3 GHz ~3 GHz ~3 GHz
42. 硬件发展趋势 CPU主频变化不大,但并行性有很大提升: • 数据并行:SIMD寄存器位宽 • MMX/SSE: 128 bit • AVX2: 256 bit • AVX512: 512 bit • 指令并行:乱序窗口 • Sandy Bridge: 168 • Haswell: 192 • Skylake: 224
43. 数据并行 行存储 列存储 1 2 3 4 3.5 alex bar t ala anku r ala 6.4 3.5 4.1 6.4 9.9 anku r 9.9 1 alex 4.1 2 bar t 3 4
44. 数据并行 Col1 1 2 3 4 Col2 alex bar t ala anku r Col3 3.5 4.1 6.4 9.9 for (int32_t i = 0; i < num_rows; ++i) { out[i] = col1[i] + col3[i]; } 优势: Out 4.5 6.1 9.4 13. 9 - 减小内存使用量 - 更好地利用了缓存
45. 指令并行 Example: select sum(value) from table group by key } if (ht[bucket].key == table[i].key) { ht[bucket].value += table[i].value; } Tabl e for (int32_t i = 0; i < batchSize; ++i) { int32_t bucket = hash(table[i].key) % ht->size; Hash Table (ht) ob Pr e Has h
46. 指令并行 Example: select sum(value) from table group by key } if (ht[bucket].key == table[i].key) { ht[bucket].value += table[i].value; } Tabl e for (int32_t i = 0; i < batchSize; ++i) { int32_t bucket = hash(table[i].key) % ht->size; Hash Table (ht) ob Pr e Has h
47. 指令并行 Example: select sum(value) from table group by key for (int32_t i = 0; i < batchSize; ++i) { int32_t bucket = hash(table[i].key) % ht->size; } if (ht[bucket].key == table[i].key) { ht[bucket].value += table[i].value; } 随机内存读取 -> 缓存失效 -> CPU 等待 CPU 时间分析
48. 指令并行 for (int32_t i = 0; i < batchSize; ++i) { int32_t bucket = hash(table[i].key) % ht->size; } if (ht[bucket].key == table[i].key) { ht[bucket].value += table[i].value; } 循环体过大 内存访问指令和其他计算指令混合 循环体过大 -> CPU乱序窗口中能包含的循环更少 -> CPU能够并行执行的内存访问指令更少 解决方案:拆解循环!
49. 指令并行 for (int32_t i = 0; i < batchSize; ++i) { int32_t bucket = hash(table[i].key) % ht->size; } if (ht[bucket].key == table[i].key) { ht[bucket].value += table[i].value; } for (int32_t i = 0; i < batchSize; ++i) { int32_t bucket = hash(table[i].key) % ht->size; } for (int32_t i = 0; i < batchSize; ++i) { keys[i] = ht[buckets[i]].key; } 拆解为更简单的循环 for (int32_t i = 0; i < batchSize; ++i) { if (keys[i] == table[i].key) { ht[buckets[i]].value += table[i].value; } }
50. 数据并行 & 指令并行 • 数据并行:列式存储 • 指令并行:循环拆解 TPC-DS 30TB 每小时查询数 3.3x 开启并行化 关闭并行化
51. 查询负载分析 • 公司发展快速迭代 - 更粗放的数据建模,例如: • 非明确定义的NOT NULL限制 • 以字符串代替其他数据类型
52. 字符串处理优化 - UTF-8简介 UTF-8:可变长度的字符串编码 A 1 byte 41 © 2 bytes c2 a9 张 3 bytes e5 bc a0 � 4 bytes f0 9f 8e 86 有利于优化存储和传输,但令计算复杂度更高: 例如对于SUBSTRING函数: 定长编码:按位置取 变长编码:需要检查字符边界
53. 字符串处理优化 - 优化思路 大部分情况下数据都是ASCII,但仍以UTF-8编码 可否兼顾ASCII的计算性能与UTF-8的灵活性?
54. 字符串处理优化 - 具体步骤 将处理分为两步: 第一步:向量化的ASCII检测(速度可达~60GB/s/core) 第二步:如果结果为全ASCII,执行定长编码版本代码;否则执行变长编 码版本代码
55. 字符串处理优化 - 结果 UPPER函数(MB/s/core) SUBSTRING函数(MB/s/core)
56. Photon Engine 采用C++重写执行引擎 • 向量化 • 数据并行 • 指令并行 • 为粗放的数据建模进行优化 • NULL检查 • 字符串处理
57. 其他性能优化 快速、可靠地应对各种场景 小数据量查询 不同数据量并行查询 大量小文件查询 BI结果获取 降低额外开销 双查询队列 异步 I/O Cloud fetch
58. SIMPLE Data Engineering OPEN BI & SQL Analytics Lakehouse Platform COLLABORATIVE Real-time Data Applications Data Science & Machine Learning Data Management & Governance Open Data Lake Structured Semi-structured Unstructured Streaming
59. 客户案例 - Atlassian
60. Atlassian - 公司简介
61. Atlassian数据图景 • 单一Lakehouse • 无其他数仓、数据湖 • PB量级数据 • 每日增长约25TB • 3000+用户 • 公司内月活用户 • ~200数据相关员工 • 数据工程师、科学家以及分析师
62. Atlassian数据平台历史:数据仓库 (2016之前)
63. Atlassian数据平台历史:数据仓库 (2016之前) • 数仓之间Pipeline稳定性差 • SQL不兼容,学习成本高 • 扩展性不足
64. Atlassian数据平台历史:数据湖 (2016-2018) • • • • • 统一存储 高扩展性 性能不足 数据更新困难 用户难以self-service
65. Atlassian数据平台:Databricks (2018至今) • 优化的存储与执行引擎 • 降本增效 • 数据更新管控 • 数据质量保证 • 用户self-service
66. 阿里云Databricks数据洞察 (DDI) 架构 Databricks驱动的超高性能阿里云数据平台 全托管 集群 管理 流式数据 交互式 分析 高性能 工作流 调度 DAG Super Charged AliCloud Data Platform powered by Databricks 架构先进 企业级 Spark 全托管Spark平台 元数据 管理 弹性 伸缩 原生UI 监控 Apache Spark兼容 Databricks Delta Lake & Delta Engine (超高性能) 结构化数据 商业洞察分析 Business Insights Databricks Runtime引擎 ( 兼容Apache Spark ) ECS 半结构化数据 交互协作 JindoFS VPC OSS RDS/ES/Kafk a.. 机器学习训练 Machine Learning Results
67. 谢谢

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-23 17:21
浙ICP备14020137号-1 $访客地图$