文章目录

  • Kudu 入门使用
    • 01-[复习]-上次课程内容回顾
    • 02-[了解]-第5天:课程内容提纲
    • 03-[掌握]-数据实时ETL 处理流程图
    • 04-[理解]-为什么使用Kudu(两大应用场景)
    • 05-[理解]-SQL on Hadoop 技术发展
    • 06-[理解]-Kudu 是什么及应用场景
    • 07-[掌握]-Kudu 数据存储模型
    • 08-[掌握]-Kudu 分区策略及列式存储
    • 09-[掌握]-Kudu 框架整体架构设计
    • 10-[掌握]-Kudu 服务启动及相关配置
    • 11-[掌握]-Kudu 使用方式及KuduPlus 工具

Kudu 入门使用

01-[复习]-上次课程内容回顾

主要讲解:业务服务器部署数据库及数据实时采集、大数据服务器如何使用CM部署CDH架构。

  • 1)、物流系统Logistics:数据存储Oracle数据库中,使用OGG实时增量采集,发送到Topic中(JSON)

    • OGG 11g版本,实时性不是很高,有一定延迟性
  • 2)、客户关系管理系统CRM:数据存储在MySQL数据库,使用Canal实时增量采集,发送Topic中
    • Canal 1.1.x版本,支持直接发送Topic
    • 实时性很高
    • 1.1.4版本可以配置高可用集群,提供WEB 界面

此外,大数据服务器使用1台虚拟机进行安装部署,先安装CMServer,再使用CM安装部署CDH,伪分布式。

物流大数据项目来说,业务主要有三大类:
- 第一类、离线报表和即席查询:Kudu、SparkSQL、Impala和Hue- 离线报表Kudu表、SparkSQL(DSL)- 即席查询Kudu表、Impala和Hue(SQL)- 第二类、实时大屏展示和数据服务接口- 实时大屏展示ClickHouse表、NodeJs和Vue- 数据服务接口ClickHouse表、SpringCloud应用- 第三类、快递物流信息查询Elasticsearch分布式搜索引擎框架:index索引数据服务接口对外提供查询功能

02-[了解]-第5天:课程内容提纲

主要讲解:存储引擎Kudu,类似HBase数据库,由Cloudera公司开发,目的取代HDFS和HBase框架,

  • HDFS文件系统:批量加载分析,尤其parquet列式存储
  • HBase数据库:对海量数据随机读写,速度比较快
1、数据实时ETL流程选择结构化流StructuredStreaming实时消费Kafka数据,对数据进行ETL转换,存储外部系统2、Kudu 入门使用1)、Kudu 为什么诞生,能够解决什么问题2)、SQL on Hadoop 框架发展史Kudu和Impala一对CP,Kudu存储数据,Impala 分析数据3)、Kudu 是什么应用场景4)、Kudu 架构设计和原理5)、Kudu 安装部署已经使用CM安装部署,启动及监控

03-[掌握]-数据实时ETL 处理流程图

​ 对于物流项目来说,如何对业务数据进行实时ETL存储。

  • 1)、将业务系统数据实时存储到分布式消息队列Kafka中
  • 2)、编写流式应用程序:StructuredStreaming结构化流,实时消费Kafka数据,进行ETL转换处理,最终存储到外部存储引擎(Es索引、Kudu数据库和ClickHouse数据库)。
    • 数据源Source:业务数据实时增量采集到Kafka Topic中,1个业务系统,对应1个Topic,不同业务系统Topic的分区数目不一样。
    • 数据转换ETL:消费Kafka中消息都是JSON格式字符串,需要进行解析转换处理
    • 数据终端Sink:将转换后数据存储到Kudu、ES及CK中,此时如何保存DataFrame到外部存储系统,像ES和Kudu框架自身提供与Spark集成库,直接使用接口;但是Clickhouse数据库没有提供,需要自己实现如何保存数据,与Spark集成。

面试题:为什么使用StructuredStreaming实时ETL,而不是SparkStreaming或者Flink呢?

  • 第一、StructuredStreaming 优势

    • Spark 2.0开始诞生新的针对结构化流式数据处理模块,取代SparkStreaming,底层重用SparkSQL中Catalyst分析引擎,进行更多优化,性能提升。
    • 此外,数据结构:DataFrame,更好知道内部结构,方便处理数据。Spark2.2发布Release版本,可以用于生产环境,Spark 2.3版本提供持续流处理。
    • 在设计之初保证端到端精确一次性语义功能。
      • Source数据源:偏移量offset、数据处理:WAL和Checkpoint、数据终端:支持幂等性
  • 第二、SparkStreaming 缺陷
    • 底层基于RDD数据结构进行数据处理,需要开发人员更好理解RDD,调用合适API方法,处理分析数据。某些流式数据处理功能不能实现,比如窗口分析是基于处理时间ProcessingTime;实时计算无状态,如果进行状态计算,需要自己管理状态,调用API(updateStateByKey或mapWithState)等。
    • SparkStreaming从2.0开始进入维护状态,一直没有新的功能,官方建议时用StructuredStreaming。
  • 第三、对比Flink计算引擎
    • 物流项目来说,对实时性要求不是很高,使用StructuredStreaming完全可以满足
    • Flink中流式计算使用DataStream API,比较底层,没有StructuredStreaming编程简单方便
    • Spark框架目前相当成熟稳定,很多外部存储系统都与Spark进行集成,比如Es和Kudu提供集成库,直接调用API就可以读写数据,进行分析处理保存。

04-[理解]-为什么使用Kudu(两大应用场景)

​ Kudu存储引擎诞生以后,在国内使用较早小米和网易公司,使用Kudu主要2大应用场景:

  • 1)、【数据库数据】上的快速分析

将原有业务数据(MySQL、Oracle数据库)实时同步到Kudu存储引擎,Kudu对外提供实时查询分析和数据变更操作。
  • 2)、【用户行为日志】的快速分析

在没有使用Kudu之前,为了满足业务需求,用户行为日志数据处理处理如下所示:

引入 Kudu 以后,大家看,数据的导入和查询都是在线实时的:

Kudu存储数据以后,可以快速查询分析(即席查询,与Impala集成)和报表分析(SparkSQL)。

Kudu诞生之初(设计目标)就是为取代HDFS文件系统和HBase数据库,既能够实现随机读写,又能够批量加载分析,所以Kudu属于HBase和HDFS折中产品。

05-[理解]-SQL on Hadoop 技术发展

​ 大数据技术框架中(领域中),SQL框架目前越来越多,从最开始Hive框架,到现在Flink SQL,至少10种以上框架出现,但是使用较多:Hive、Impala、Presto、SparkSQL、FlinkSQL(正在迅速发展)。

  • 1)、Hive 数仓框架,建立在HDFS和HBase之上,提供SQL分析数据

  • 2)、Impala 内存分析引擎,取代Hive底层MapReduce,使用内存分析数据

Cloudera公司依据Google论文:Dremel 论文,开发基于内存分析引擎Impala。

  • 3)、Impala集成Kudu,在快速数据之上建立快速分析

​ Cloudera公司,如果公司既要求对数据进行随机读写查询,又要对数据进行批量加载快速分析,需要将数据存储到HDFS(PARQUET)和HBase,能不能一个框架存储引擎实现2个功能:Kudu

​ Kudu和Impala都是使用C++语言编写,使用内存进行数据存储和分析,速度比较快的,很多金融公司、证券公司或游戏公司,都会使用此种大数据技术,进行存储数据和分析数据。

​ Kudu 在一个系统中融合了 OLTP 型随机读写能力与 OLAP 型分析能力,填补了 Hadoop存储层的缺憾,是 Hadoop 生态的一大生力军。

06-[理解]-Kudu 是什么及应用场景

Apache Kudu是由Cloudera开源的存储引擎,可以同时提供低延迟的随机读写高效的数据分析能力。

1、Kudu是一种非洲的大羚羊,中文名叫“捻角羚”;2、Impala是另一种非洲的羚羊,叫做“黑斑羚”,也叫“高角羚”;不知道Cloudera公司为什么这么喜欢羚羊,也许是因为羚羊的速度快。

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

如果对业务数据既需要随机读写,有需要批量加载快速分析,实现如下架构:

上述架构:数据冗余性比较大、技术框架复杂性比较高、数据实时性降低。

为了解决上述架构的这些问题,Kudu应运而生。Kudu的定位是Fast Analytics on Fast Data,是一个既支持随机读写、又支持 OLAP 分析的大数据存储引擎。

​ 从上图可以看出,KUDU 是一个折中的产品,在 HDFS 和 HBase 这两个偏科生中平衡了随机读写和批量分析的性能。

Kudu相比与以往的系统,CPU使用降低了,I/O的使用提高了,RAM的利用更充分了。

Kudu 应用场景:

07-[掌握]-Kudu 数据存储模型

​ KUDU 的数据模型与传统的关系型数据库类似:一个 KUDU 集群由多个表组成,每个表由多个字段组成,一个表必须指定一个由若干个(>=1)字段组成的主键

​ KUDU 表中的每个字段是强类型的,而不是 HBase 那样所有字段都认为是 bytes。好处是可以对不同类型数据进行不同的编码节省空间。同时,因为 KUDU 的使用场景是 OLAP 分析,有一个数据类型对下游的分析工具也更加友好。

  • 1)、Table表:Schema信息(字段名称和字段类型)、主键约束(PrimaryKey)
  • 2)、Tablet:表的一个数据片段,类似HBase中Region
    • 在Kudu中将表划分为多个Tablet,每个Tablet存储自己数据
    • Tablet 副本机制,1个副本为leader,其他副本为Follower,类似Kafka Topic中分区Partition。
    • 副本之间,基于Raft协议,实现高可用HA,当leader挂掉以后,从Follower中选取leader。
    • 副本数必须为奇数,例如为3个副本等

08-[掌握]-Kudu 分区策略及列式存储

​ 在Kudu存储引擎中,如何将一个表Table数据划分为多个Tablet???有哪些分区策略:

在Kudu中,每个表的分区Tablet需要在创建表的时候指定,表创建以后不能被修改。

  • 1)、范围分区:Range Partitioning,类似HBase表划分

    • 按照字段值范围进行分区,HBase 就采用了这种方式。

  • 2)、Hash Partitioning,按照字段的 Hash 值进行分区,Cassandra 采用了这个方式。

  • 3)、多级分区,可以指定范围,再指定哈希或者指定多个哈希分析

KUDU 支持用户对一个表指定一个范围分区规则和多个 Hash 分区规则,如下图:

多级散列分区组合,如下图所示:

KUDU 是一个列式存储的存储引擎,其数据存储方式如下:

列式存储的数据库很适合于 OLAP 场景,其特点如下:

09-[掌握]-Kudu 框架整体架构设计

KUDU 中存在两个角色:基于Raft协议实现一致性,所以不依赖Zookeeper

  • 1、Master Server:负责集群管理、元数据管理等功能,类似HBase Master
  • 2、Tablet Server:负责数据存储,并提供数据读写服务,类似HBase RegionServer

在 KUDU 中都可以设置特定数量(3 或 5)的副本。各副本间通过 Raft 协议来保证数据一致性。Raft 协议与 ZAB 类似,都是 Paxos 协议的工程简化版本。

  • 1)、Kudu Master通常3个节点,1个是leader,其余2个是Follower
  • 2)、表的每个Tablet副本通常3个副本,1个leader,其余2个时Follower,各个副本存储在不同TabletServer机器。

​ Tablet server 的任务非常繁重, 其负责和数据相关的所有操作, 包括存储, 访问, 压缩, 其还负责将数据复制到其它机器。 因为 Tablet server`特殊的结构, 其任务过于繁重, 所以有如下限制:

10-[掌握]-Kudu 服务启动及相关配置

​ 大数据所有技术框架都是安装在node2.itcastn.cn机器上,基于CM安装CDH组件,所以已经安装完成。

  • 1)、登录CM管理界面,启动Kudu 服务组件即可

    • http://node2.itcast.cn:7180/cmf admin/admin

    • 由于单机版本,伪分布式安装,启动基本上会成功,如果集群的话,Kudu对集群机器时间同步要求很高,使用ntp进行同步时间。最好配置,虚拟机与宿主机时间同步

    • 记住,设置虚拟机与网络时间同步,虚拟机必须联网。

      [root@node2 ~]# ntpdate ntp1.aliyun.com

  • 2)、Kudu Master提供Web UI界面:http://node2.itcast.cn:8051/

  • 3)、Kudu配置文件:/etc/kudu/conf

  • 4)、Kudu 存储数据目录:/var/lib/kudu/master,/var/lib/kudu/tserver
  • 5)、Kudu 日志存储:/var/log/kudu/
[root@node2 ~]# ps -ef|grep kudu
kudu      2878  2865  1 11:53 ?        00:00:06 /opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/kudu/sbin/kudu-master --location_mapping_cmd=/var/run/cloudera-scm-agent/process/6-kudu-KUDU_MASTER/topology.py --flagfile=/var/run/cloudera-scm-agent/process/6-kudu-KUDU_MASTER/gflagfile
kudu      2879  2865  0 11:53 ?        00:00:00 /usr/bin/python2 /opt/cloudera/cm-agent/bin/cm redactor --fds 3 5
kudu      2890  2864  6 11:53 ?        00:00:26 /opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/kudu/sbin/kudu-tserver --tserver_master_addrs=node2.itcast.cn --flagfile=/var/run/cloudera-scm-agent/process/5-kudu-KUDU_TSERVER/gflagfile
kudu      2891  2864  0 11:53 ?        00:00:00 /usr/bin/python2 /opt/cloudera/cm-agent/bin/cm redactor --fds 3 5

Kudu Master还是Kudu TabletServer都有很多配置属性,可以进行配置:https://kudu.apache.org/docs/configuration.html

11-[掌握]-Kudu 使用方式及KuduPlus 工具

Kudu提供三种方式,操作Kudu数据库,进行DDL操作和DML操作:

  • 1)、方式一:可通过Java client、C++ client、Python client操作Kudu表,要构建Client并编写应用程序;

    • https://kudu.apache.org/docs/developing.html#developing-applications-with-apache-kudu
  • 2)、方式二:可通过Impala的shell对Kudu表进行交互式的操作,因为Impala2.8及以上的版本已经集成了对Kudu的操作。
    • 直接定义Impala表数据存储在Kudu中,内部集成
  • 3)、方式三:通过Kudu-Spark包集成Kudu与Spark,并编写Spark应用程序来操作Kudu表
    • KuduContext,类似SparkContext,进行DDL操作和DML操作
    • SparkSession操作Kudu表数据,CRUD操作

无论是Java Client API使用,还是Kudu集成Spark使用,添加Maven 依赖:

<dependency><groupId>org.apache.kudu</groupId><artifactId>kudu-client</artifactId><version>1.9.0-cdh6.2.1</version>
</dependency><dependency><groupId>org.apache.kudu</groupId><artifactId>kudu-spark_2.11</artifactId><version>1.9.0-cdh6.2.1</version>
</dependency>

Kudu 框架本身提供命令kudu管理Kudu集群,位于$KUDU_HOME/bin目录

​ KUDU Client 在与服务端交互时,先从 Master Server 获取元数据信息,然后去 Tablet Server读写数据,如下图:

伟大网友提供KuduPlus工具,可视化工具,连接KuduMaster,创建表、删除表查询数据

Kudu-Plus一款针对Kudu可视化工具,GitHub地址:https://github.com/Xchunguang/kudu-plus

KuduPlus直接点击exe文件安装,启动工具,创建连接,设置KuduMaster地址:node2.itcast.cn:7051

大数据物流项目:Kudu 入门使用(五)相关推荐

  1. 大数据物流项目:业务服务器和大数据服务器(四)

    文章目录 业务服务器和大数据服务器 01-[复习]-上次课程内容回顾 02-[了解]-第4天:课程内容提纲 03-理解]-Canal 数据同步之MySQL binlog日志 04-[理解]-Canal ...

  2. 大数据物流项目:业务服务器和大数据服务器(三)

    业务服务器和大数据服务器 01-[复习]-上次课程内容回顾 主要讲解Docker 基本使用:Docker是什么.Docker 基本命令(镜像image命令和容器container命令). Docker ...

  3. 对于一个大数据应用项目/产品的落地,可以大致总结为五大步骤阶段?

    对于一个大数据应用项目/产品的落地,可以大致总结为五大步骤阶段: 数据规划.数据治理.数据应用.迭代实施.商业价值. 第一阶段:数据规划 一个成功的大数据项目,需要有一个良好的开端,即做好数据规划阶段 ...

  4. 海南省大数据管理局项目建设处刘雄:区块链技术在海南政务服务领域的典型应用

    12月26日,2021CCF中国区块链技术大会在海南海口举办,本次会议由中国计算机学会(CCF)主办,中国计算机学会区块链专业委员会.海南大学承办,中科国鼎数据科学研究院协办.大会战略合作媒体巴比特现 ...

  5. 大数据学习指南从入门到精通

    目录 大数据学习指南从入门到精通 前言 一.大数据基础 二.大数据必学Java基础 三.ZooKeeper 四.大数据环境搭建 五.Hadoop 六.Hive 七.HBase 八.Kafka 九.Sc ...

  6. 大数据开源项目,一站式全自动化全生命周期运维管家ChengYing(承影)走向何方?

    原文链接:三分钟走进袋鼠云一站式全自动化全生命周期运维管家ChengYing(承影) 课件获取:关注公众号 ** "数栈研习社",后台私信 "ChengYing" ...

  7. 大数据介绍项目流程_大数据介绍

    大数据介绍项目流程 About Big Data 关于大数据 什么是大数据?(What is Big Data?) In modern world, there are many big proble ...

  8. Hadoop+hive+flask+echarts大数据可视化项目之系统数据整合和hadoop环境搭建

    Hadoop+hive+flask+echarts大数据可视化项目(二) --------------系统数据整合和hadoop环境搭建---------------- 关注Hadoop+Hive+F ...

  9. Hadoop+hive+flask+echarts大数据可视化项目之flask结合echarts前后端结合显示hive分析结果

    Hadoop+hive+flask+echarts大数据可视化项目(五) ------flask与echarts前后端结合显示hive分析结果------- 关注过Hadoop+hive+flask+ ...

最新文章

  1. 刚刚,华为全场景 AI 计算框架MindSpore正式开源!国产深度学习框架的春天来了!...
  2. 谷歌大脑2017总结下篇:从医疗、机器人等6个领域开始的改变世界之旅
  3. Django中html里的分页显示
  4. 什么是量子计算-超级简单的给你个解释
  5. 网络验证php接口逆向,一个专利查错的逆向(网络验证)
  6. 大数据揭示90后爱情观,“有钱”只能排最后
  7. android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
  8. 转载: CentOS下配置Apache
  9. 微信小程序底部导航栏配置
  10. 邮件群发怎么发?解密邮件群发软件小技巧
  11. 洛谷 P1069 细胞分裂 质因数分解
  12. 无主3局域网找不到服务器,无主之地3局域网模式设置方法攻略 无主之地3局域网怎么用...
  13. C++之模板类模板函数
  14. 开源LLM领域变天!LLaMa惊天泄露引爆ChatGPT平替狂潮
  15. 细谈围城---我的启示录
  16. i.MX8QM环境搭建
  17. 仿淘宝关闭二维码案例
  18. 删除磁盘上的表空间后再删除数据库中的表空间——ORA-01549:表空间非空,请使用including contents选项
  19. 周金瑞10.31现货黄金、白银TD、美原油开盘操作建议
  20. 学习历程--普中51单片机A2--蜂鸣器实验

热门文章

  1. 免费好用的录屏软件OBS-Studio
  2. PS 去除图片中的字
  3. 蓝桥杯 真题:明码 一题掌握3种码
  4. IBM员工回顾与华为合作20周年:这是一支有激情的团队
  5. css3 text-shadow 浮雕、镂空、荧光效果
  6. 公众号bmob_newgd.js
  7. 读书笔记:《招聘面试新法》
  8. 显卡使用信息nvidia-smi命令
  9. Cerebral Cortex:初为人父者竟然出现纵向灰质皮层体积减少?两个国际样本提供了这样的证据...
  10. Redis 设计与实现 读书笔记(菜鸟版)