一百八十二、大数据离线数仓完整流程——步骤一、用Kettle从Kafka、MySQL等数据源采集数据然后写入HDFS

news2024/12/26 22:27:22

一、目的

经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。

二、项目背景

项目行业属于交通行业,因此数据具有很多交通行业的特征,比如转向比数据就是统计车辆左转、右转、直行、掉头的车流量等等。

三、业务需求

(一)预估数据规模

(二)指标查询频率

指标的实时查询由Flink实时数仓计算,离线数仓这边提供指标的T+1的历史数据查询

四、数仓技术架构

(一)简而言之,数仓模块的数据源是Kafka,终点是ClickHouse数据库

第一步,用kettle采集Kafka的数据写入到HDFS中;

第二步,在Hive中建数仓,ODS层、DWD层和DWS层

第三步,把Hive的DWS层处理好的结果数据用kettle同步到ClickHouse数据库中

(二)注意点

1、ETL工具统一使用kettle

2、调度工具是海豚调度器

五、数仓环境部署

(一)部署原则:易部署、易维护

(二)部署工具及其版本

1、jdk1.8.0

2、MySQL8.0.31 

3、Kafka_2.13-3.0.0(Kafka自带ZooKeeper

4、ClickHouse21.9.5.16

5、Hadoop3.1.3

6、Hive3.1.2(不要用Spark作为计算引擎,默认的mr即可

7、DolphinScheduler2.0.5

8、Kettle9.2

(三)部署脚本以及部署文档

由于一开始的数据规模不大以及服务器资源有限问题,所以目前使用的单机版部署,没有部署集群

六、数仓实施步骤(搭建好数仓环境后

(一)步骤一、用Kettle从Kafka、MySQL等数据源采集数据然后写入HDFS

1、Kettle转换任务配置

(1)样例一:维度表数据——从MySQL导入数据到HDFS

(2)样例二:事实表数据——从Kafka采集数据到HDFS

2、Kettle转换任务配置注意点

(1)维度表数据——从MySQL导入数据到HDFS
2.1.1、由于维度表数据量少,因此直接overwrite写入HDFS中,每次都是覆盖的全量导入
2.1.2、为了减少磁盘资源使用,在Hadoop file output控件中加了gzip压缩方式

(2)事实表数据——从Kafka采集数据到HDFS
2.2.1、由于Kafka的数据在不停发送,所以Kettle任务就需要一直运行
2.2.2、由于HDFS的特性是以packet为单位写入,一个packet是64KB,所以不能根据日期每天自动生成一个HDFS文件,那样的话每天都会丢失一部分数据。

因为只要每天最后剩余的数据不满64KB,那这部分数据就不会写入。kettle任务直接生成第二天的数据文件、写入第二天的数据,即使这天的数据文件的状态还在写入。

所以就直接生成一个HDFS文件,一直在这个文件里写入数据即可。后面先get到Linux本地,然后再overwrite写入HDFS的ODS层表中,这样不会每天丢数据

2.2.3、由于kettle任务需要一直运行,所以Hadoop file output控件不能添加数据压缩方式。

否则虽然显示HDFS文件有数据,但只要任务不停止文件就不会压缩,这样HDFS文件实际上没有数据,所以HDFS文输出控件不能添加压缩

3、海豚调度器调度kettle转换任务

(1)首先,为了便于团队开发,kettle需要配置共享资源库,把kettle任务统一放在资源库中运行。

用海豚调度kettle任务不需要开启carte服务,如果是用xxl-job调度,那可以开启carte服务

(2)对于事实表数据——从Kafka采集数据到HDFS
3.2.1、脚本不要加日志文件,因为数据量太大。

#!/bin/bash
source /etc/profile

/usr/local/hurys/dc_env/kettle/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/kafka_to_hdfs/ -trans=02_Kafka_to_HDFS_evaluation

3.2.2、工作流不需要定时,直接启动,一直跑任务即可

(3)对于维度表数据——从MySQL导入数据到HDFS
3.3.1、脚本可以添加日志文件

#!/bin/bash
source /etc/profile

/usr/local/hurys/dc_env/kettle/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/mysql_to_hdfs/ -trans=04_MySQL_to_HDFS_t_team level=Basic >>/home/log/kettle/04_MySQL_to_HDFS_t_team_`date +%Y%m%d`.log 

3.3.2、工作流需要定时,不过需要注意不同工作流的定时时间,保留工作流之间充足的定时区间

剩余数仓部分,待续!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CeresPCL ICP精配准(点到面)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 ICP算法总共分为6个阶段,如下图所示: (1)挑选发生重叠的点云子集,这一步如果原始点云数据量比较巨大,一般会对原始点云进行下采样操作。 (2)匹配特征点。通常是距离最近的两个点,当然这需要视评判的准则而…

Linux系统之links和elinks命令的基本使用

Linux系统之links和elinks命令的基本使用 一、links与elinks命令介绍1. links命令简介2. elinks命令简介 二、links与elinks命令区别三、links命令选项解释四、links命令的基本使用1. links安装2. 查看links版本3. 图形模式打开网址4. 直接使用links命令5. 打印url版本到标准格…

WordPress还原重置插件WP Reset 教程!

这是一篇完整的 WordPress 还原教程,我们将使用一款插件,快速重置整个 WordPress 网站。 有时在安装不同主题、网站插件后,可能会导致程序码彼此的冲突,而让网站出现跑版、错误等 ..,这时直接重新来过可能反而比较快一…

贪心算法总结归类(图文解析)

贪心算法实际上并没有什么套路可言,贪心的关键就在于它的思想: 如何求出局部最优解,通过局部最优解从而推导出全局最优解 常见的贪心算法题目 455. 分发饼干 这题的解法很符合“贪心”二字 如果使用暴力的解法,那么本题是通过…

福建江夏学院蔡慧梅主任一行莅临拓世科技集团,共探AI+时代教育新未来

在科技的海洋中,产业是那航行的巨轮,而教育则是指引方向的灯塔。当巨轮与灯塔相互辉映,产教融合与校企合作便成为了推动国家科技创新和人才培养的金钥匙,为未来开启一扇扇充满希望的大门。 2023年9月24日,福建江夏学院…

leetcodetop100 (22) 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 简单的用一个动态数组Arraylist记录,然后倒序遍历赋值给一个新的链表,这种空间复杂度是o(n),估计需要优化。 采用双指针; 我们可以申请两个指针&#xf…

ansible安装、点对点Ad-Hoc、模块、剧本Playbook

DevOps: 官网:https://docs.ansible.com 自动化运维工具对比 C/S 架构:客户端/服务端 Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器…

Spring Boot 技术架构图(InsCode AI 创作助手辅助)

Spring Boot 技术架构是一种用于构建现代应用程序的框架,它可以与各种前端、代理、网关、业务服务、中间件、存储、持续集成和容器服务集成在一起,以创建功能强大的应用程序。 源文件下载链接!!!!&#xff…

Elasticsearch—(MacOs)

1⃣️环境准备 准备 Java 环境:终端输入 java -version 命令来确认版本是否符合 Elasticsearch 要求下载并解压 Elasticsearch:前往(https://www.elastic.co/downloads/elasticsearch)选择适合你的 Mac 系统的 Elasticsearch 版本…

【Linux学习】03Linux用户和权限

Linux(B站黑马)学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 文章目录 Linux(B站黑马)学习笔记前言03Linux用户和权限认知root用户root用户(超级管理员)su和exit命令sudo命令 用户、用户…

【Spring Boot】实战:实现数据缓存框架

🌿欢迎来到@衍生星球的CSDN博文🌿 🍁本文主要学习【Spring Boot】实现数据缓存框架 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者…

Hbuilder本地调试微信H5项目(二)--添加UView框架插件

摘要 在一个已创建的Hbuilder项目中,添加uView框架插件 前置准备 已安装Hbuilder 已创建uni-app的H5默认模板项目 实现逻辑 在Hbuilder官网找到组件说明页面 下载插件并导入HbuilderX 具体实现 访问网站 访问网址Hbuilder的uView1.8.6版本说明页 或者访问…

MySQL索引是什么

1、索引是什么 1、MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构 索引的本质:数据结构。 索引的目的在于提高查询效率,可以类比字典或者一本书的目录,如果要查“mysql”这个单词…

服务断路器_什么是灾难性雪崩效应

什么是灾难性雪崩效应 假设我们有两个访问量比较大的服务A和B,这两个服务分别依赖C和D,C和D服务都依赖E服务。 A和B不断的调用C,D处理客户请求和返回需要的数据。当E服务不能供服务的时候,C和D的超时和重试机制会被执行 由于新的调用不断的产生&#xf…

【算法深入浅出】字符串匹配之 KMP 算法

KMP 算法是一种字符串匹配算法。字符串匹配算法的目标是:在字符串 s 中找到与模式串 p 相等的子串,输出其位置。例如:s “abcdef”,p “cdef”,p 在 s 中的位置是 2(从 0 开始计数)。 容易想到…

高效管理生活:Microsoft To Do for Mac 微软待办事项软件

在日常生活中,我们经常面临着琐碎的任务和繁忙的安排。为了更好地管理自己的时间和事务,一款强大而智能的待办事项软件是必不可少的。Microsoft To Do for Mac 微软待办事项软件将助您高效管理生活,让每件事都尽在掌握。 Microsoft To Do fo…

WordPress主题网站首页添加好看的四格小工具教程

直接到网站根目录创建一个css文件(文件名:sige.css),文件名可自定义(注意文件名一致) <link rel"stylesheet" href"你的网站/sige.css" type"text/css" > 然后在header.php模板最上方添加引入代码 也可自定义HTML里添加css代码最上方写…

如何设计一个 JVM 语言下的 LLM 应用开发框架?以 Chocolate Factory 为例

本文将介绍 Chocolate Factory 框架背后的一系列想法和思路。在我们探索和设计框架的过程中&#xff0c;受到了&#xff1a;LangChain4j、LangChain、LlamaIndex、Spring AI、Semantic Kernel、PromptFlow 的大量启发。 欢迎一起来探索&#xff1a;https://github.com/unit-mes…

Mysql索引结构有哪些

1、BTree索引 1、初始化介绍 一颗b树&#xff0c;浅蓝色的块我们称之为一个磁盘块&#xff0c;可以看到每个磁盘块包含几个数据项&#xff08;深蓝色所示&#xff09;和指针&#xff08;黄色所示&#xff09;&#xff0c;如磁盘块1包含数据项17和35&#xff0c;包含指针P1、P2…

Jetpack Compose中的Navigation从入门到精通完全指南

Jetpack Compose中的Navigation从入门到精通完全指南 什么是Android导航 导航帮助您理解应用程序在不同组件间的移动方式。 Android JetPack Navigation可以帮助您以简单的方式实现高级导航。 导航组件由三个主要部分组成&#xff1a; 导航图(Navigation Graph)&#xff1…