大数据离线数仓面试解析:日志采集与Flume实战

需积分: 26 3 下载量 26 浏览量 更新于2024-08-04 收藏 27KB TXT 举报
"离线数仓面试文字版" 在构建离线数据仓库的过程中,数据采集是第一步,主要包括两大部分:一是JavaEE系统中的业务数据,二是前端埋点收集的用户行为数据。这些数据通过Nginx负载均衡分散到多个服务器上,以应对大数据量带来的挑战。数据保存策略中,日志数据在服务器上保留30天,这是为了确保在后续处理过程中出现问题时,能够回溯到原始数据,保障数据的安全性。 在数据采集完成后,会将数据传输到Hadoop集群中。Flume是常用的工具,它具有source、channel和sink三个组件。在这个案例中,选用taildirsource作为source,因为其支持断点续传和多目录监控,便于处理日志文件。而channel选择了kafkachannel,由于Kafka的高效传输和高可靠性,优于内存channel和文件channel。Kafka在此处作为一个缓冲区,当数据量激增(如双十一、618促销期间)时,能有效提高系统的吞吐量。 在Flume中,拦截器也被应用来清理数据。这里使用了一个自定义拦截器,主要用于过滤掉非完整JSON格式的脏数据,以减少无效带宽的占用。自定义拦截器的实现很简单,只需创建一个实现interceptor接口的类,重写四个方法,并创建一个静态内部类Builder。拦截器的代码打包后放入Flume的lib包,通过配置文件指定全类名即可使用。避免在拦截器中执行复杂的业务逻辑,是为了保持Flume作为数据传输管道的高效和稳定。 接下来,数据在Hadoop HDFS上存储,为后续的离线处理做好准备。通常,离线数仓会采用批处理的方式进行数据处理,例如使用MapReduce或Apache Spark进行数据清洗、转换和聚合。此外,可能会有ETL(提取、转换、加载)流程,用于将原始数据转化为适合分析的结构化数据。 数据仓库的建模阶段,通常遵循星型或雪花型模型,以便于快速查询和数据分析。星型模型由事实表和维度表组成,事实表包含度量值,维度表则包含描述性的属性。雪花型模型是在星型模型基础上对维度表进行规范化,减少了数据冗余但可能增加了查询复杂性。 最后,离线数仓的数据会被加载到数据集市或者OLAP(在线分析处理)系统,如Apache Hive或Impala,供分析师和数据科学家进行查询和深度分析。这些系统提供了SQL接口,使得非技术背景的用户也能方便地进行数据分析。 总结来说,离线数仓的构建涵盖了数据采集、传输、存储、处理和查询等多个环节,涉及到的技术包括Nginx、Flume、Hadoop、Kafka以及各种数据建模和分析工具。整个流程旨在高效、可靠地处理大数据,为企业的决策提供支持。