Apache Kudu入门学习

这篇具有很好参考价值的文章主要介绍了Apache Kudu入门学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、概念

二、背景

三、特点

四、架构

五、应用场景

六、kudu的模式设计

1、列设计

2、主键设计

3、分区设计

1.范围分区Range Partitioning 

2.哈希分区Hash Partitioning

3.多级分区Multilevel Partitioning


一、概念

官方概念:

Apache Kudu is an open source distributed data storage engine that makes fast analytics on fast and changing data easy.

Apache Kudu 是一个开源分布式数据存储引擎,可以轻松地对快速变化的数据进行快速分析。

官网地址:

Apache Kudu - Fast Analytics on Fast Data

Apache Kudu入门学习

二、背景

在 KUDU 之前,大数据主要以两种方式存储:

  • 静态数据:以 HDFS 引擎作为存储引擎,适用于高吞吐量的离线大数据分析场景。这类存储的局限性是数据无法进行随机的读写。
  • 动态数据:以 HBase、Cassandra 作为存储引擎,适用于大数据随机读写场景。这类存储的局限性是批量读取吞吐量远不如 HDFS,不适用于批量数据分析的场景。

当面对既需要随机读写,又需要批量分析的大数据场景时,方案如下

数据实时写入 HBase,HBase 完成实时的数据更新 ,定时(通常是 T+1 或者 T+H)将 HBase 数据写成静态的文件(如:Parquet)导入到 OLAP 引擎(如:HDFS)。

Apache Kudu入门学习

但是也有很多缺点:

  • 架构复杂。从架构上看,数据在 HBase、消息队列、HDFS 间流转,涉及环节太多,运维成本很高。最后数据在多个系统上,对数据安全策略、监控等都提出了挑战。
  • 维护成本高。用户需要在两套系统间编写和维护复杂的ETL逻辑。
  • 存储资源浪费。两套存储系统意味着占用的磁盘资源翻倍了,造成了成本的提升。并且每个环节需要保证高可用,都需要维护多个副本,存储空间也有一定的浪费。
  • 时效性低。数据从 HBase 导出成静态文件是周期性的,一般这个周期是一天(或一小时),在时效性上不是很高。
  • 难以应对后续的更新。真实场景中,总会有数据是「延迟」到达的。如果这些数据之前已经从 HBase 导出到 HDFS,新到的变更数据就难以处理了,一个方案是把原有数据应用上新的变更后重写一遍,但这代价又很高。

基于HDFS的存储技术,比如Parquet,具有高吞吐量连续读取数据的能力;而HBase和Cassandra等技术适用于低延迟的随机读写场景。Kudu的设计,就是试图在实时分析与随机读写之间,寻求一个最佳的结合。在Cloudera发布的《Kudu: New Apache Hadoop Storage for Fast Analytics on Fast Data》一文中有提及,Kudu作为一个新的分布式存储系统也是为了进一步提升CPU的适用效率。

KUDU 的定位是 「Fast Analytics on Fast Data」,是一个既支持随机读写、又支持 OLAP 分析的大数据存储引擎。

Apache Kudu入门学习

三、特点

  • 快速处理 OLAP 工作负载。

  • 强大但灵活的一致性模型,允许您基于每个请求选择一致性要求,包括严格序列化一致性的选项。

  • 结构化数据模型。

  • 同时运行顺序和随机工作负载的强大性能。

  • 与 Apache Impala 紧密集成,使其成为将 HDFS 与 Apache Parquet 结合使用的良好、可变的替代方案。

  • 与 Apache NiFi 和 Apache Spark 集成。

  • 与 Hive Metastore (HMS) 和 Apache Ranger 集成以提供细粒度的授权和访问控制。

  • 经过身份验证和加密的 RPC 通信。

  • 高可用:Tablet Servers 和 Masters 使用Raft Consensus Algorithm,保证只要有超过一半的 tablet 副本可用,tablet 就可以读写。例如,如果 3 个副本中有 2 个(或 5 个副本中的 3 个等)可用,则平板电脑可用。即使在领导者副本发生故障的情况下,只读跟随者平板副本也可以为读取提供服务。

  • 故障自动检测和自我修复:为了保持数据的高可用性,系统会检测故障的 Tablet 副本并从可用的副本中重新复制数据,因此当集群中有足够的 Tablet Server 可用时,会自动替换故障的副本。

  • 位置感知(也称为机架感知)以在相关故障的情况下保持系统可用,并允许 Kudu 集群跨越多个可用区。

  • 逻辑备份(完整和增量)和还原。

  • 多行事务(仅适用于 Kudu 1.15 版本的 INSERT/INSERT_IGNORE 操作)。

  • 易于管理和管理。

四、架构

Apache Kudu入门学习

KUDU 中存在两个角色

  • Mater Server:负责集群管理、元数据管理等功能。即tablet和表的基本信息,监听TServer的状态,TMaster之间通过raft协议进行数据同步。
  • Tablet Server:负责数据存储,并提供数据读写服务。tablet 负责这一张表的某块内容的读写,接受其他tablet leader 传来的同步信息。

Table(表)

一张talbe是数据存储在Kudu的tablet server中。表具有 schema 和全局有序的primary key(主键)。table 被分成称为 tablets 的 segments。

Tablet

一个 tablet 是一张 table连续的segment,tablet是kudu表的水平分区,类似于google Bigtable的tablet,或者HBase的region。每个tablet存储着一定连续range的数据(key),且tablet两两间的range不会重叠。一张表的所有tablet包含了这张表的所有key空间。与其它数据存储引擎或关系型数据库中的 partition(分区)相似。给定的tablet 冗余到多个 tablet 服务器上,并且在任何给定的时间点,其中一个副本被认为是leader tablet。任何副本都可以对读取进行服务,并且写入时需要在为 tablet 服务的一组 tablet server之间达成一致性。

KUDU 的核心对外 API 主要分为写跟读两部分

  • 写:Insert、Update、Delete,所有写操作都必须指定主键。
  • 读 : Scan 操作,Scan 时用户可以指定一个或多个过滤器,用于过滤数据。

五、应用场景

  • Strong performance for both scan and random access to help customers simplify complex hybrid architectures(适用于那些既有随机访问,也有批量数据扫描的复合场景)
  • High CPU efficiency in order to maximize the return on investment that our customers are making in modern processors(高计算量的场景)
  • High IO efficiency in order to leverage modern persistent storage(使用了高性能的存储设备,包括使用更多的内存)
  • The ability to update data in place, to avoid extraneous processing and data movement(支持数据更新,避免数据反复迁移)
  • The ability to support active-active replicated clusters that span multiple data centers in geographically distant locations(支持跨地域的实时数据备份和查询)

六、kudu的模式设计

1、列设计

编码类型

Apache Kudu入门学习

列压缩格式

kudu允许的压缩算法是LZ4、Snappy、zlib(gz)。默认情况下,kudu不压缩数据。通常情况下,压缩算法会提高空间利用率,但是会降低scan性能。

2、主键设计

同RDBMS一样,kudu的主键同样采用了唯一性约束。 一旦主键创建了之后便不能更改。

每个kudu表有且仅有一个由一列或多列组成的主键。主键列必须不可为空,并且不能使用bool或者浮点类型。

3、分区设计

1.范围分区Range Partitioning 

范围分区的分区方式将数据按照范围进行分类,每个partition会分配一个固定的范围,每个数据只会属于一个分区,不同的partition的范围不能有重叠,分区在表的创建阶段配置,后续不可修改,但是可以删除和新增,如果数据找不到所属的分区将会插入失败。

Range Partitioning 的优势是在数据进行批量读的时候,可以把大部分的读变成同一个 tablet 中的顺序读,能够提升数据读取的吞吐量。并且按照范围进行分区,我们可以很方便的进行分区扩展。其劣势是同一个范围内的数据写入都会落在单个 tablet 上,写的压力大,速度慢。


 文章来源地址https://www.toymoban.com/news/detail-472658.html

2.哈希分区Hash Partitioning

hash分区将行通过hash值分配到其中一个存储桶(buckets)中,在single-level hash partitioned tables(单机散列分区表)中,每个存储桶将对应一个tablet。在创建表的时候设置桶数。通常,主键列用作散列的列,但与范围分区一样,可以使用主键列的任何子集。

数据的写入会被均匀的分散到各个 tablet 中,写入速度快。但是对于顺序读的场景这一策略就不太适用了,因为数据分散,一次顺序读需要将各个 tablet 中的数据分别读取并组合,吞吐量低。并且 Hash 分区无法应对分区扩展的情况。

3.多级分区Multilevel Partitioning

kudu支持多层的分区方式,将hash分区和范围分区结合起来。

分区修剪(调优)
当可以通过扫描谓词确定分区可以完全过滤时,Kudu扫描将自动跳过扫描整个分区。要删除哈希分区,扫描必须在每个哈希列上包含相等谓词。要删除范围分区,扫描必须在范围分区列上包含相等或范围谓词。在多级别分区表上的扫描可以独立地利用任何级别上的分区修剪。


 

到了这里,关于Apache Kudu入门学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(特点和优势分析+事件与时间维度分析)

    本文介绍了Apache Flink的定义、架构、基本原理,并辨析了大数据流计算相关的基本概念。同时回顾了大数据处理方式的历史演进以及有状态的流式数据处理的原理。最后,分析了Apache Flink作为业界公认为最好的流计算引擎之一所具备的天然优势,旨在帮助读者更好地理解大数

    2024年02月03日
    浏览(55)
  • 本文将从云原生的概念、背景知识、Kubernetes架构及核心组件、应用场景、案例研究等方面深入剖析云原生课程的相关知识点

    作者:禅与计算机程序设计艺术 2020年,技术快速发展,云计算火爆。云原生领域也随之蓬勃发展。云原生已经成为大势所趋,大量企业都在逐渐转型云原生应用架构。国内外云服务厂商也纷纷推出基于Kubernetes的服务平台,而Kubernetes又是云原生开源技术体系的一部分。为了帮

    2024年02月07日
    浏览(63)
  • 【微服务架构】Spring Cloud入门概念讲解

    目录 一、单体架构VS微服务架构 1.1 单体应用 单体架构的优点 单体应用的缺点 1.2 微服务“定义” 微服务的特性 微服务的缺点 微服务的适用场景 二、微服务常见概念与核心模块 三、Spring Cloud 工作流程         一个归档包(如war包)包含所有功能的应用程序通常称为单体应

    2024年02月03日
    浏览(55)
  • 云计算:概念、技术、架构 学习

    读研的研究课题是边缘计算,先学习云计算基础。 云计算的定义: 云计算是分布式计算的一种特殊形式,它引入效用模型来远程供给 可扩展和可测量 的资源。 云计算的商业驱动力: 容量规划,三种策略:领先策略,滞后策略,匹配策略。 降低成本,节省运营成本和初期购

    2024年02月04日
    浏览(83)
  • 【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(基础概念解析+有状态的流式处理)

    Apache Flink 是业界公认的最佳流计算引擎之一,它不仅仅局限于流处理,而是一套兼具流、批、机器学习等多种计算功能的大数据引擎。Flink 的用户只需根据业务逻辑开发一套代码,就能够处理全量数据、增量数据和实时数据,无需针对不同的数据类型开发不同的方案。这使得

    2024年02月03日
    浏览(83)
  • Spark学习(二)---Spark运行架构和核心概念

    1.Spark运行架构 Spark框架的核心是一个计算引擎,它采用了master-slave的结构。 图形中的 Driver 表示 master, 负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave,负责实际执行任务。 1.1 核心组件 由此可以得出,在Spark框架中有两个核心组件: 1.1.1 Driver Spark 驱动器

    2024年02月13日
    浏览(35)
  • 【C++入门 一 】学习C++背景、开启C++奇妙之旅

    C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object orientedprogramming:面向对象)思想,支持面向对象的程序设计语言应运而生。

    2024年02月08日
    浏览(43)
  • Flink|《Flink 官方文档 - 概念透析 - Flink 架构》学习笔记

    学习文档:概念透析 - Flink 架构 学习笔记如下: 客户端(Client):准备数据流程序并发送给 JobManager(不是 Flink 执行程序的进程) JobManager:协调 Flink 应用程序的分布式执行 ResourceManager:负责 Flink 集群中的资源提供、回收、分配 Dispatcher:提供了用来提交 Flink 应用程序执行

    2024年01月19日
    浏览(46)
  • 【理财入门】基金入门概念学习

    内容来自百度搜索、B站视频 BV1Eo4y197xL、BV1R44y1673F,整理而成 全称叫做证券投资基金,作为一种投资工具,把众多投资人的资金汇集起来,由基金托管人(例如银行)托管,让专业的基金管理公司管理和运作,通过投资股票和债券等投资,获取收益。 1、按是否可赎回划分 开

    2024年02月01日
    浏览(39)
  • 【web渗透思路】框架敏感信息泄露(特点、目录、配置)

      博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。 擅长:对

    2023年04月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包