数仓问答篇(一)

数仓架构(即席查询)

      总体来说,Hadoop架构在数据量较低的情况下,运行速度远不及MPP架构,但数据量一旦超过某个量级,Hadoop架构在吞吐量方面将非常有优势。有些大数据数据仓库产品也采用混合架构,以融合两者的优点,例如Impala、Presto等都是基于HDFS的MPP分析引擎,仅利用HDFS实现分区容错性,放弃MapReduce计算模型,在面向OLAP场景时可实现更好的性能,降低延迟。

MPP vs Hadoop架构 - 知乎


ClickHouse进行轻量化数仓搭建【计算引擎:Hive VS ClickHouse】

ClickHouse适合简单的DW之上的即席查询。而Spark由于其分布式特性,导致其任务启动时间很长,因此不适合实现即席查询,但是对于大数据量的join等复杂查询时具备非常大的优势。

ClickHouse的优化重点在如何提高单机的处理能力,而Spark的优化重点在于如何提高分布式的协作效率。

ClickHouse与Hive的区别,终于有人讲明白了-clickhouse与hive 区别


impala刷新invalidate metadata VS refresh

invalidate metadata的特点就是异步性和全量性。invalidate metadata比起refresh而言要重量级得多,并且它造成impalad之间查询不一致也会更严重。因此,也几乎禁止使用不带表名的invalidate metadata语句。

refresh的特点是同步性和增量性。并且,它的执行是围绕单表以及单表的分区进行的,因此它更轻量级,也更适合分区元数据或数据文件更改之后的刷新。

正确使用Impala的invalidate metadata与refresh语句-CSDN博客


查看HDFS路径命令

查询报错:该分区文件或目录不存在

hdfs dfs -ls hdfs://nameservice1/user/hive/warehouse/adl.db/a_gq_workdat_stat/


什么场景需要使用NiFi从Kafka中获取实时数据?

以下是一些可能需要使用NiFi从Kafka中获取实时数据的场景:

1.数据集成:如果你有一个Kafka集群作为数据源,希望将实时数据集成到其他系统或数据库中,可以使用NiFi来接收Kafka中的数据,并根据需要将其转换为不同的格式或协议,然后将其发送到目标系统中。

2.数据处理和分析:如果你需要对实时数据进行处理、转换、清洗、分析等操作,可以使用NiFi来接收Kafka中的数据,并利用NiFi的各种处理器和操作符来实现这些处理任务。例如,可以使用NiFi的JSON解析器来解析JSON格式的数据,然后将其转换为不同的格式或进行其他处理。

3.数据监控和报警:如果你需要实时监控数据的变化,并在某些情况下触发报警或通知,可以使用NiFi来接收Kafka中的数据,并使用NiFi的各种处理器和操作符来实现数据监控和报警功能。例如,可以使用NiFi的条件表达式来检查数据是否符合某个特定条件,并触发报警或通知操作。

4.数据流管理:如果你需要对数据流进行管理和控制,例如对数据进行过滤、路由、聚合等操作,可以使用NiFi来实现这些功能。NiFi提供了各种处理器和操作符,可以方便地对数据进行处理和管理。

总之,如果你需要将实时数据从一个系统传输到另一个系统,或者需要对实时数据进行处理、分析、监控等操作,可以考虑使用NiFi来实现这些功能。


实时数据可以由kafka直接输入数据服务api?

实时数据可以通过Kafka直接输入到数据服务API。

Kafka是一种分布式流处理平台,可以用于构建实时数据管道和流应用程序。它可以接受来自不同数据源的实时数据,并将其传输到不同的目标系统中。Kafka提供了一种高吞吐量、可扩展、可靠的方式,将数据从一个端点传输到另一个端点。

当实时数据通过Kafka输入到数据服务API时,Kafka将作为数据传输的中间件,将数据从源头发送到目标系统。数据服务API可以是一个独立的服务或者一个数据处理平台,用于接收Kafka传输的数据、处理数据、并将结果反馈回Kafka或其他目标系统。

例如,数据服务API可以使用一些常见的数据处理和机器学习框架(如Apache Flink、Apache Spark、TensorFlow等)来处理接收到的实时数据。这些框架可以对数据进行清洗、转换、分析、挖掘等操作,将处理后的数据用于业务决策、预警预测等应用中。

总之,通过Kafka直接输入实时数据到数据服务API是一种常见的实践,可以帮助企业快速构建高效、可靠的实时数据分析应用。


实时数据由Kafka传入数据服务API的中间,什么时候需要加入TDengine?

Kafka-Nifi/CDC-TDengine-数据服务API

在实时数据分析中,可以在以下情况下考虑加入TDengine:

数据存储和查询:当实时数据量较大,需要高效地进行数据存储和查询时,可以将TDengine作为存储和查询引擎。TDengine针对时序数据进行了优化,能够高效地存储和处理大量数据,并提供了高效的查询功能。通过将实时数据存储在TDengine中,用户可以快速获取和分析这些数据。

数据处理和计算:当需要实时对大量数据进行处理和计算时,可以在TDengine中加入数据处理和计算逻辑。TDengine支持多线程、分布式查询,可以快速处理高并发的数据读取请求,从而满足实时数据处理的需求。

高可用性和稳定性:当实时数据分析系统需要高可用性和稳定性时,可以将TDengine作为高可用性的存储和查询引擎。TDengine采用了主从复制和自动故障转移机制,保证了系统的高可用性。当部分组件发生故障时,整个系统仍能正常运行,从而提供了稳定可靠的服务。

日志分析:当需要处理海量的日志数据,通过实时分析和挖掘日志数据,发现潜在的问题和优化点时,可以将TDengine作为日志分析引擎。TDengine可以用于实时监控系统的运行状态和性能指标,可以在系统出现故障或性能下降时,快速发现和解决问题。

总之,在实时数据分析中,根据具体需求和场景,可以在不同的环节中加入TDengine,以提供更高效、可靠、稳定的数据存储、查询、处理、监控等功能。


spark streming和flink,storm的区别

Spark Streaming、Flink和Storm都是流处理框架,但它们之间有一些区别。

Spark Streaming是一个批处理框架,它将数据流切分成细粒度的batch进行处理。它支持容错和批处理,但是它不支持低延迟和Exactly-once保证。 

Flink同时支持流处理和批处理。一条数据被处理完以后,序列化到缓存后,以固定的缓存块为单位进行网络数据传输,缓存块设为0为流处理,缓存块设为较大值为批处理。Flink在低延迟和数据顺序方面(利用水印)等都相对Spark Streaming更具优势。 

Storm只支持流处理任务,数据是一条一条的源源不断地处理。而MapReduce、Spark只支持批处理任务。


Spark和MR,谁处理的数据量更大?

Spark和MR都是分布式计算框架,但是它们的处理数据的能力有所不同。一般来说,Spark处理数据的能力是MR的十倍以上 。Spark基于内存,而MR基于磁盘(HDFS) 。此外,Spark中除了基于内存计算外,还有DAG有向无环图来切分任务的执行先后顺序。而MR中只有map、reduce和join。

因此,如果你需要处理大量数据,那么Spark可能是更好的选择。但是如果你需要处理的数据量较小,则MR可能更适合你的需求。


Spark Standalone和YARN的区别如下

  • Yarn模式只需要一个节点,然后提交作业即可,不需要启动Spark集群的(不需要启动Master和Worker)。

Standalone模式需要在Spark集群上的每个节点都需要部署Spark,然后需要启动Spark集群(需要Master和Worker进程节点)。


大数据入Hdfs还是Hudi

Hudi是一个开源的大数据存储和处理工具,可以基于HDFS之上管理大型分析数据集,可以对数据进行插入、更新、增量消费等操作,主要目的是高效减少摄取过程中的数据延迟。Hudi非常轻量级,可以作为lib与Spark、Flink进行集成 。

HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,是Hadoop生态系统中的重要组成部分之一。它是一个高度容错性的系统,适合在廉价硬件上部署并进行大规模数据处理。


HBase VS TDengine

HBase 不适用于大范围扫描查询,性能比较差

HBase 不支持聚合查询,大跨度时间范围查询数据量太大,图表无法渲染

HBase 部署需要依赖 ZooKeeper,运维成本高


HDFS分布式文件存储

问题:文件大小不一,不利于统一管理

解决:设定统一的管理单位,block块,默认大小256M(可以修改)


Hive计算引擎

Hive支持MapReduce、Tez和Spark 三种计算引擎。


Hive元数据

描述数据的数据,例如数据表的大小是100KB,数据表是数据,表大小是数据的数据。

Hive元数据包括hive库信息、表信息(表的属性、表的名称、表的列、分区及其属性)以及表数据所在的目录等。

默认是存储在derby中的,但是我们一般会修改其存储在关系型数据库比如MYSQL中(其可以在hive配置中修改),在关系型数据库中会有一个hive库,存放相应的表。


元数据和主数据的区别

元数据和主数据是两个不同的概念,但它们都与数据管理、数据处理和信息系统有关。

元数据(Metadata)是描述其它数据的数据,或者说是用于提供某种资源的有关信息的结构数据。它主要用于识别资源、评价资源、追踪资源在使用过程中的变化,以及实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。

主数据(Master Data)是指具备高业务价值的,能够在企业内跨各个业务部门被重复使用的数据,是单一、准确、权威的数据来源。主数据是项目的最关键、最核心的数据,重点用来解决异构系统之间关键数据的不一致、不正确、不完整等问题,主数据是信息系统建设和大数据分析的基础。

总的来说,元数据主要关注数据的描述和组织,而主数据则更侧重于跨业务部门的数据共享和一致性。


Q:Hive分区表创建后,未放数据,目录存在吗?

A:不存在


你可能感兴趣的:(大数据)