广西建设职业技术学院教育网站,广州天河区租房哪里便宜,普陀做网站价格,兰州 网站建设公司一、目的
经过6个月的奋斗#xff0c;项目的离线数仓部分终于可以上线了#xff0c;因此整理一下离线数仓的整个流程#xff0c;既是大家提供一个案例经验#xff0c;也是对自己近半年的工作进行一个总结。
二、项目背景
项目行业属于交通行业#xff0c;因此数据具有很…一、目的
经过6个月的奋斗项目的离线数仓部分终于可以上线了因此整理一下离线数仓的整个流程既是大家提供一个案例经验也是对自己近半年的工作进行一个总结。
二、项目背景
项目行业属于交通行业因此数据具有很多交通行业的特征比如转向比数据就是统计车辆左转、右转、直行、掉头的车流量等等。
三、业务需求
一预估数据规模 二指标查询频率
指标的实时查询由Flink实时数仓计算离线数仓这边提供指标的T1的历史数据查询
四、数仓技术架构 一简而言之数仓模块的数据源是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.0Kafka自带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 -rephurys_linux_kettle_repository -useradmin -passadmin -dir/kafka_to_hdfs/ -trans02_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 -rephurys_linux_kettle_repository -useradmin -passadmin -dir/mysql_to_hdfs/ -trans04_MySQL_to_HDFS_t_team levelBasic /home/log/kettle/04_MySQL_to_HDFS_t_team_date %Y%m%d.log 3.3.2、工作流需要定时不过需要注意不同工作流的定时时间保留工作流之间充足的定时区间 二步骤二、在Hive的ODS层数据库中建外部表加载HDFS中的数据
1、首先在ODS数据库中建外部表