大数据考试
大数据项目综合实战答辩要求讲解项目答辩以小组形似进行每组最多3人特殊情况可以独自建队。答辩的顺序1.各答辩小组经过讨论后自行决定顺序2.无法决定顺序的组使用课堂点名程序进行排序。由于排序会对位于后面的小组给与时间与技术上的优势所以每节课答辩完成后后续小组会在总分上减去3分以保证答辩的公平性。例如 第一场答辩有三个小组 该三个小组的总分为100分。 第二场答辩有2个小组该小组的总分从97分开始计算以此类推。如果第一场答辩有五个小组进行但只完成了三个小组的答辩剩下的小组默认转为第二轮答辩组成绩按第二轮的成绩进行评估以此类推。如果在答辩的过程中如出现程序运行错误抛出异常等BUG无法正确执行可在操作过程中解决了bug等问题可以通过技术手段如AI等。如未能解决异常该小组则需下台调整程序并扣除相应的分值待其余小组答辩完成后方可继续答辩。答辩分为三部分100分第一部分项目概述40分对大数据广告监测项目的整个流程进行讲述。项目背景与目标一句话说明这是一个大数据广告监测项目核心目标是从多源数据中采集、清洗、分析广告行为数据最终用可视化呈现广告效果为业务决策提供数据支撑。补充为什么要做这个项目比如解决广告投放效果不透明、数据分散难分析、人工统计效率低等问题整体技术架构结合你给的流程图照着你的流程图讲清楚数据流转的完整链路数据来源用户行为日志数据 业务数据采集链路日志数据Flume → Kafka → Flume → HDFS/HiveODS 层业务数据DataX → HDFS/HiveODS 层存储与计算HadoopHDFS 存数据、YARN 调度、MapReduce/Spark 计算数仓分层ODS原始数据→ DWD明细清洗→ DIM维度层数据落地Spark 处理后迁移到 ClickHouse数据应用可视化大屏 / 报表大数据广告监测项目 第一部分全覆盖基础技术问答全是课堂答辩常考基础题超好背全覆盖无遗漏一、Hadoop 相关问答问Hadoop 是什么答开源分布式大数据基础框架是我们整个项目的底层环境支撑。问Hadoop 三大核心组件答HDFS、YARN、MapReduce。问HDFS 主要作用答分布式文件系统用来统一存储项目所有日志数据和业务数据。问HDFS 优点答存储量大、安全性高、支持集群扩展、适合存放海量大数据文件。问YARN 的作用答集群资源调度管理器负责分配内存、CPU 资源调度运行各类大数据任务。问MapReduce 作用答传统离线分布式计算引擎用来做简单批量数据统计计算。问Hadoop 适合处理什么数据答海量离线大批量数据不适合实时高频小数据。问HDFS 默认存储格式是什么答普通文本、日志文件、压缩文件都可以存放。二、Flume 日志采集问答问Flume 是什么答轻量级分布式日志采集工具专门采集服务器本地日志。问Flume 三大核心组件答Source 数据源、Channel 通道缓冲、Sink 数据输出。问Source 负责做什么答读取本地日志文件抓取产生的日志信息。问Channel 负责做什么答临时缓存数据防止数据过快丢失。问Sink 负责做什么答把采集好的数据输出到指定位置。问本项目 Flume 最终把日志传到哪里答先传入 Kafka 消息队列再消费存入 HDFS。问Flume 可以同时采集多种日志吗答可以支持多路径、多类型日志同时采集。问Flume 采集日志优势答部署简单、稳定可靠、占用资源小、适配大数据生态。三、Kafka 消息队列问答问Kafka 是什么答分布式流式消息中间件俗称消息队列。问项目中使用 Kafka 目的答流量削峰、数据缓冲、解耦上下游程序防止日志爆发压垮集群。问Kafka 里主题是什么答Topic用来分类存放不同类型数据流。问Kafka 生产者作用答往队列里推送数据。问Kafka 消费者作用答从队列里拉取数据进行处理。问Kafka 依靠什么组件管理集群答依靠 Zookeeper 完成集群协调管理。问Kafka 数据可以保存多久答可自行配置持久化时间支持数据回溯重读。问为什么不直接 Flume 传 HDFS非要加 Kafka答日志流量不稳定高峰时段容易丢数据加队列更稳定。四、Zookeeper 协调组件问答问Zookeeper 作用答分布式协调服务统一管理集群状态。问项目中哪些组件依赖它答Kafka、Hadoop 集群都依赖 Zookeeper。问主要实现什么功能答集群节点选举、配置管理、服务注册、状态同步。问没有 Zookeeper 会怎么样答集群服务无法正常协调容易出现服务异常宕机。五、DataX 数据同步问答问DataX 是什么答阿里开源离线异构数据同步工具。问本项目用它同步什么数据答同步广告业务数据比如 MySQL 业务表数据。问DataX 两大核心模块答Reader 数据读取、Writer 数据写入。问Reader 负责什么答读取源头业务数据库中的数据。问Writer 负责什么答把读取到的数据写入 HDFS 或者 Hive 表。问DataX 适合实时同步吗答不适合只适合离线大批量数据同步。问DataX 优势答配置简单、支持几乎所有主流数据库、同步效率高。六、Hive 数据仓库问答问Hive 是什么答基于 Hadoop 构建的数据仓库工具。问Hive 作用答把 HDFS 上零散文件映射成数据表使用 SQL 语句分析大数据。问Hive 真实数据存在哪里答真实数据存 HDFS表结构元数据存在 Hive 自身数据库。问为什么要用 Hive 做数仓答上手简单类 SQL 语法适合做离线数据分层治理。问项目数仓三层分别是什么答ODS 原始层、DWD 明细清洗层、DIM 维度层。问ODS 层存放什么答未经任何处理的原始数据原样留存。问DWD 层做什么操作答过滤脏数据、去重、字段规整、剔除无效数据。问DIM 维度层存放什么答时间、地区、用户、广告渠道等基础维度信息。问数据分层有什么好处答条理清晰、方便排查错误、便于后期数据统计计算。问Hive 执行引擎默认是什么答默认 MapReduce项目中我们常用 Spark 引擎。七、Spark 计算框架问答问Spark 是什么答快速通用分布式大数据计算框架。问Spark 对比 MapReduce 最大优势答基于内存计算运算速度快很多。问本项目 Spark 用来做什么答做数据统计分析、指标计算、最后批量迁移数据到 ClickHouse。问Spark 可以处理离线和实时数据吗答都可以适用场景更广。问SparkSQL 作用答使用 SQL 语句快速查询处理结构化数据。八、ClickHouse 数据库问答问ClickHouse 是什么答高性能列式存储 OLAP 分析型数据库。问OLAP 是什么意思答面向数据分析、海量数据聚合查询。问为什么最终数据存入 ClickHouse答查询速度极快毫秒级响应专门适配数据可视化大屏。问ClickHouse 适合日常增删改业务吗答不适合不擅长事务操作只适合统计分析。问它和普通 MySQL 区别答MySQL 适合日常业务读写ClickHouse 适合大数据快速统计展示。九、DolphinScheduler 调度平台问答问DolphinScheduler 是什么答分布式工作流任务调度平台。问项目中主要用途答编排采集、清洗、计算、入库整套流程实现自动定时执行。问DAG 工作流是什么答按照先后依赖顺序自动执行一连串数据任务。问调度平台带来什么便利答不用手动一步步执行任务解放人力定时自动跑批。问任务失败可以重新执行吗答支持失败重试、断点续跑运维更方便。十、项目数据流通用基础题问项目两大类数据分别是什么答用户行为日志数据、广告业务数据。问日志数据包含哪些内容答用户点击、曝光、浏览时长、访问设备、访问时间等。问业务数据包含哪些内容答广告 ID、投放渠道、投放金额、投放地区、转化订单等。问什么是脏数据答空值、重复数据、异常数据、格式错误、无效垃圾数据。问数据清洗主要剔除哪些内容答空字段、重复条目、乱码数据、超出正常范围异常数据。问整套项目完整流程简单叙述答脚本生成模拟数据→分类采集→存入 HDFS→Hive 数仓分层清洗→Spark 计算指标→调度自动执行→数据迁入 ClickHouse→前端可视化展示。问本项目禁止使用哪款可视化工具答禁止使用 FineBI。问我们前端常用什么技术做可视化答VueECharts、HTMLJS 原生开发。问项目过程中允许使用 AI 辅助吗答允许辅助写脚本、代码、配置文件但所有技术原理和流程我们都熟练掌握能够独立讲解。问答辩现场程序出现 BUG 怎么处理答优先现场调试解决无法解决先离场调整等待其余小组答辩完毕再次上场完成。问小组一般如何分工答一人负责项目概述与技术讲解一人负责数据采集处理调度一人负责可视化开发展示。问做这个大数据广告项目核心目的答统计分析广告投放效果分析用户流量行为为广告运营投放提供真实数据支撑。问海量数据为什么不能用普通单机处理答单机存储不足、运算速度慢集群分布式架构才能高效处理。问数据汇聚统一存放好处是什么答数据统一标准方便统一治理、统一计算、统一分析。问什么叫数据流转答数据从产生、采集、存储、清洗、计算、入库到展示的全过程流动。十一、最简单兜底送分题问你们项目用的是离线大数据还是实时答整体以离线大数据处理为主。问大数据处理最先做的一步是什么答数据采集汇聚。问数据分析前必须做什么答数据清洗规整。问可视化展示的数据从哪里读取答从 ClickHouse 分析数据库中读取。问工作流调度最大意义是什么答实现大数据项目自动化运维。注意展示的内容不做固定的技术要求汇报人一栏中需要写入该小组的成员名称。会提问关于本项目中涉及到的技术问题可以使用AI实现功能但必须能讲出实现的过程。评分要点项目概述技术复杂度界面美观程度第二部分数据生成》采集》分析》迁移30分通过脚本生成数据将日志和业务数据分别采集到HDFS上。通过DolphinScheduler完成工作流的调度最后通过spark将数据迁移到ClickHouse 为后续的可视化提供数据支撑。注意这部分内容需要在操作的时候根据自己的理解进行讲解讲解内容可以拓展可创新。评分要点操作讲解系统操作熟练度cd /opt/bin./ad_mysql_to_hdfs_full all 2023-01-081.启动集群cd /opt/bin/1启动hadoop./hdp.sh start(2) 启动zookeeper./zk.sh start3 启动kafka./kfk.sh start2.采集数据node2:bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic ad_lognode1:bin/flume-ng agent --conf conf/ --conf-file job/ad_file_to_kafka.conf --name a1 -Dflume.root.loggerINFO,console配置 a1 任务监控/opt/module/ad_mock/log/所有日志靠 json 记录读取位置经 Kafka 通道发到集群 node1/2/3 的 ad_log 主题#定义组件a1.sources r1a1.channels c1#配置sourcea1.sources.r1.type TAILDIRa1.sources.r1.filegroups f1a1.sources.r1.filegroups.f1 /opt/module/ad_mock/log/.*a1.sources.r1.positionFile /opt/module/flume/taildir_position.json#配置channela1.channels.c1.type org.apache.flume.channel.kafka.KafkaChannela1.channels.c1.kafka.bootstrap.servers node1:9092,node2:9092,node3:9092a1.channels.c1.kafka.topic ad_loga1.channels.c1.parseAsFlumeEvent false#组装a1.sources.r1.channels c1node3:bin/flume-ng agent -n a1 -c conf/ -f job/ad_kafka_to_hdfs.conf -Dflume.root.loggerinfo,consoleFlume 从 Kafka 的 ad_log 主题读取数据写入 HDFS 路径hdfs://node1:8020/origin_data/ad/log/ad_log/a1.sourcesr1a1.channelsc1a1.sinksk1#配置source1a1.sources.r1.type org.apache.flume.source.kafka.KafkaSourcea1.sources.r1.batchSize 1000a1.sources.r1.batchDurationMillis 2000a1.sources.r1.kafka.bootstrap.servers node1:9092,node2:9092,node3:9092a1.sources.r1.kafka.topics ad_loga1.sources.r1.interceptors i1a1.sources.r1.interceptors.i1.type com.BigData.TimestampInterceptor$Builder#配置channela1.channels.c1.type filea1.channels.c1.checkpointDir /opt/module/flume/checkpoint/behavior1a1.channels.c1.dataDirs /opt/module/flume/data/behavior1a1.channels.c1.maxFileSize 2146435071a1.channels.c1.capacity 1000000a1.channels.c1.keep-alive 6#配置sinka1.sinks.k1.type hdfsa1.sinks.k1.hdfs.path hdfs://node1:8020/origin_data/ad/log/ad_log/%Y-%m-%da1.sinks.k1.hdfs.filePrefix loga1.sinks.k1.hdfs.round falsea1.sinks.k1.hdfs.rollInterval 10a1.sinks.k1.hdfs.rollSize 134217728a1.sinks.k1.hdfs.rollCount 0#控制输出文件类型a1.sinks.k1.hdfs.fileType CompressedStreama1.sinks.k1.hdfs.codeC gzip#组装a1.sources.r1.channels c1a1.sinks.k1.channel c1如图便成功了bin/dolphinscheduler-daemon.sh start standalone-serverhttp://192.168.116.120:12345/dolphinscheduler账号 admin密码dolphinscheduler123node1./ad_ods_to_dim.sh all 2023-01-07systemctl restart clickhouse-server.serviceclickhouse-client -muse ad_report;drop table if exists dwd_ad_event_inc; create table if not exists dwd_ad_event_inc ( event_time Int64 comment 事件时间, event_type String comment 事件类型, ad_id String comment 广告id, ad_name String comment 广告名称, ad_product_id String comment 广告产品id, ad_product_name String comment 广告产品名称, ad_product_price Decimal(16, 2) comment 广告产品价格, ad_material_id String comment 广告素材id, ad_material_url String comment 广告素材url, ad_group_id String comment 广告组id, platform_id String comment 推广平台id, platform_name_en String comment 推广平台名称(英文), platform_name_zh String comment 推广平台名称(中文), client_country String comment 客户端所处国家, client_area String comment 客户端所处地区, client_province String comment 客户端所处省份, client_city String comment 客户端所处城市, client_ip String comment 客户端ip地址, client_device_id String comment 客户端设备id, client_os_type String comment 客户端操作系统类型, client_os_version String comment 客户端操作系统版本, client_browser_type String comment 客户端浏览器类型, client_browser_version String comment 客户端浏览器版本, client_user_agent String comment 客户端UA, is_invalid_traffic UInt8 comment 是否是异常流量 ) ENGINE MergeTree() ORDER BY (event_time, ad_name, event_type, client_province, client_city, client_os_type, client_browser_type, is_invalid_traffic);cd /opt/module/spark/spark-submit --class com.BigData.ad.spark.HiveToClickhouse --master yarn BigData2403_hive_spark_clickhouse-1.0-SNAPSHOT-jar-with-dependencies\(1\).jar --hive_db ad --hive_table dwd_ad_event_inc --hive_partition 2023-01-07 --ck_url jdbc:clickhouse:node1//:8123/ad_report --ck_table dwd_ad_event_inc --batch_size 1000第三部分数据可视化30分注意该操作不限定技术要求除fineBI例如HTMLCSSJavaScripts、VUEECharts等技术从数据库中读取数据进行可视化展示。部分功能可以使用AI完成但必须能讲出实现的过程。评分要点技术讲解技术复杂度UI界面美观程度问题一当前项目中使用了哪些大数据组件这些组件有什么特点。负责第二部分和第三部分的学生需要回答项目相关问题1.Hadoop 为开源分布式大数据基础架构核心由HDFS、MapReduce、YARN组成。HDFS 实现分布式海量文件存储MapReduce 负责离线分布式计算YARN 承担集群资源调度与任务管理。具备高可靠、易扩展、低成本特性是大数据生态底层核心支撑框架。2.Flume 是分布式日志采集框架以 Agent 为运行单元由 Source、Channel、Sink 三大组件构成。可采集多源流式数据依靠事务机制保障数据精准投递通过通道缓冲实现流量削峰。支持多级聚合部署高可靠易拓展常对接 Kafka、HDFS作为大数据实时数据接入核心组件3.Kafka 是分布式流式消息中间件基于发布订阅模式。集群含 Broker、生产者、消费者依托 Zookeeper 协调管理。数据按主题分区存储多副本机制保障高可用支持持久化与消息回溯。具备高吞吐、低延迟特性实现系统解耦、流量削峰广泛用于实时数据流转与日志汇聚。。4.DataX 为阿里开源异构数据源同步工具采用插件化架构由 Reader、Channel、Writer 组成。支持主流关系型与大数据数据源通过内存通道完成数据流转内置流控、重试机制。可高效实现全量及增量数据迁移是数仓建设中 ETL 数据集成的常用离线同步工具。5.Zookeeper 是分布式协调服务基于 ZAB 协议实现数据一致性。集群划分为 Leader、Follower、Observer 节点Leader 统筹事务请求。依托树形 Znode 存储元数据提供集群选举、配置同步、服务注册发现、分布式锁能力保障大数据集群高可用与状态统一。Hive 是构建于 Hadoop 之上的数据仓库组件可将结构化数据映射为数据表通过类 SQL 语句实现数据分析。底层默认调度 MR 引擎也可适配 Spark执行任务。屏蔽底层分布式计算细节适配海量离线数据处理多用于数据仓库分层构建与批量统计分析。Spark 是快速通用分布式计算框架基于内存运算速度远超 MapReduce。核心含 SparkCore、SparkSQL、Streaming 等组件支持批处理与实时流处理兼容多种数据源生态完善资源调度灵活是大数据离线与实时计算主流引擎。ClickHouse 是列式存储 OLAP 数据库主打毫秒级实时分析。核心靠列式存储 向量化执行 高压缩提速支持 SQL 与分布式架构。擅长 PB 级数据多维聚合、用户行为 / 日志分析、实时大屏不适合事务与高频点查。DolphinScheduler 分布式高可用工作流调度平台采用 Master-Worker 架构依托注册中心实现集群协调。以 DAG 模式编排任务支持多类型大数据作业调度具备失败重试、断点续跑、动态负载均衡及多渠道告警能力适配数仓 ETL 流程编排与全链路定时任务运维。。问题二什么是数据仓库本项中数据仓库分为哪几层这些层的特点是什么数据仓库是面向主题、集成、非易失、随时间变化的结构化数据聚合环境专为企业离线决策分析构建。其通过 ETL 流程完成多源异构数据统一汇聚、清洗转换与标准化治理依托 Hadoop 分布式存储架构承载海量离线数据借助 Hive 等组件实现分层建模与批量计算。摒弃事务处理逻辑侧重历史数据归档留存与多维聚合分析统一数据统计口径为商业智能、指标体系建设、数据挖掘及经营战略研判提供规范化数据支撑。ODS层是原始数据层全称操作数据存储层。原样同步业务库、日志等源头数据保留最原始格式与明细仅做简单脱敏。作为数仓入口承接全量源头数据为后续分层加工提供基础数据源。DIM层数仓维度数据表层存储维度属性信息如时间、地区、用户、商品等静态及慢变属性。统一维度编码与标准口径供事实表关联聚合分析实现数据分组、筛选、多维拆解是数据分析的基础参照表。DWD层数仓清洗明细层基于 ODS 层原始数据完成脏数据过滤、字段清洗、格式标准化、去重脱敏。保留业务完整明细粒度剔除无效数据统一数据规范作为中间干净明细层向上支撑汇总层加工计算。