加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

SparkSQL 在企业级数仓建设的优点

发布时间:2022-03-14 16:18:12 所属栏目:大数据 来源:互联网
导读:Apache Hive 经过多年的发展,目前基本已经成为业界构建超大规模数据仓库的事实标准和数据处理工具,Hive 已经不单单是一个技术组件,而是一种设计理念。Hive 有 JDBC 客户端、支持标准 JDBC 接口访问的 HiveServer2 服务器、管理元数据服务的 Hive Metastor
       Apache Hive 经过多年的发展,目前基本已经成为业界构建超大规模数据仓库的事实标准和数据处理工具,Hive 已经不单单是一个技术组件,而是一种设计理念。Hive 有 JDBC 客户端、支持标准 JDBC 接口访问的 HiveServer2 服务器、管理元数据服务的 Hive Metastore,以及任务以 MapReduce 分布式任务运行在 YARN 上。
 
     标准的 JDBC 接口、标准的 SQL 服务器、分布式任务执行以及元数据中心,这一系列组合让 Hive 完整地具备了构建一个企业级数据仓库的所有特性,并且 Hive 的 SQL 服务器是目前使用最广泛的标准服务器。
 
     虽然 Hive 有非常明显的优点,可以找出完全替代 Hive 的组件寥寥无几,但是并不等于 Hive 在目前阶段是一个完全满足企业业务要求的组件,很多时候选择 Hive 出发点并不是因为 Hive 很好地支持了企业需求,单单是因为暂时找不到一个能支撑企业诉求的替代服务。
 
开发的便利性:所选择的数仓架构是否具有很好的开发生态,可以提供不同类型的开发态接口,不限于 SQL 编辑器,代码提交,以及第三方工具整合。
生态:所选择实现引擎自身是否有很好的生态功能,或者是否可以很好的与其他服务集成,例如数据湖引擎 delta lake,icebeg,hudi 等优秀组件出现,但是 Hive 集成的节奏却非常慢。
解耦程度:分布式任务必然需要多个组件的协调,例如分布式存储,资源管理,调度等,像 Hive 就重度依赖于 YARN 体系,计算引擎也与 MR 强绑定,在解耦方面较弱,如果企业考虑在 K8S 上构建自己的计算引擎,Hive 面临的局限会更加明显。
性能:整体架构是否拥有更好的性能。
安全:是否支持不同级别,不同力度的用户访问和数据安全鉴权体系。
对于企业数仓架构来说,最重要的是如何基于企业业务流程来设计架构,而不是基于某个组件来扩展架构。
  
没有任务级的重试,失败了只能重跑 Query,代价较高。
一般全内存计算,无 shuffle 或 shuffle 不落盘,无法执行海量数据。
架构为了查询速度快,执行前已经调度好了 task 执行的节点,节点故障无法重新调度。
一旦发生任务异常,例如网络抖动引起的任务失败、机器宕机引起的节点丢失,再次重试所消耗的时间几乎等于重新提交一个任务。在分布式任务的背景下,任务运行的时间越长,出现错误的概率越高。对于此类组件的使用,业界最佳实践的建议也是不超过 30 分钟左右查询使用这类引擎是比较合适的。
 
      而在离线数仓场景下,几乎所有任务都是长时任务,也就是任务运行时长在小时级以上,这时就要求执行 ETL 和构建数仓模型的组件服务需要具有较高的容错性和稳定性,当任务发生错误时可以以低成本的方式快速恢复,尽可能避免因为部分节点状态异常导致整个任务完全失败。
 
      可以发现在这样的诉求下类似于 Presto、Doris、ClickHouse 就很难满足这样的要求,而像 Hive、Spark 这类计算引擎依托于 Yarn 做资源管理,对于分布式任务的重试、调度、切换有着非常可靠的保证。Hive、Spark 等组件自身基于可重算的数据落盘机制,确保某个节点出现故障或者部分任务失败后可以快速进行恢复。数据保存于 HDFS 等分布式存储系统上,自身不管理数据,具有极高的稳定性和容错处理机制。
 
归纳如下:
 
Presto、Doris、ClickHouse:更注重交互式分析,对单机资源配置要求很高,重度依赖内存,缺乏容错恢复,任务重试等机制,适合于 30 分钟以内的任务,通常工作在企业的 DM 层直接面向业务,处理业务需求。
Hive、Spark:更注重任务的稳定性,对网络,IO 要求比较高,有着完善的中间临时文件落盘,节点任务失败的重试恢复,更加合适小时级以上的长时任务运行,工作在企业的的 ETL 和数据模型构建层,负责清洗和加工上层业务所需要的数据,用来支撑整个企业的数仓构建。
一个企业在实施数据平台的时候,由多个不同组件各自工作在不同的架构层中,无法相互取代,相互协作配合,承载整个企业的数据平台业务。
 
企业级数仓技术选择
Google 发表的三篇论文从存储、计算、检索三个方向阐述了海量数据下一种新的分布式数据加工处理技术,这三个方向被雅虎 Nutch 团队实现后贡献给 Apache,也就是目前大家看到的 HDFS、MapReduce 和 HBase,形成了早期 Hadoop 的三大利器。
 
然而这三大利器更聚焦在异构数据的信息提取处理上,没有提供对结构化数据很友好的类似 SQL 语法的分析入口,同时在编程态的支撑也不够友好,只有 Map 和 Reduce 两阶段,严重限制了业务处理的实现,雅虎团队也是爬虫相关业务孵化而出,可以看出 Hadoop 早期的三大套件有着如下特点:
 
门槛高,需要编程实现,并且编程态受限于 MapReduce 的两阶段约束。
以离散数据处理为主,对分析能力、查询等常用数据分析功能支持不足。
没有交互式客户端,无法实现交互式探索。
Hive 就是诞生在这样的较大的行业背景下,Hive 的出现刚好弥补了 Hadoop 只能用来做离线数据处理这个缺陷,提供了一种常用的分析接口,并且提供了非常好的用户交互方式。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读