大数据技术的常用组件与实际应用

发表时间: 2024-04-17 13:49

以下文章来源于数据干饭人 ,作者千冰仪

来源:数据干饭人|作者:千冰仪

本文经授权转载


数据产品求职面试中,经常会被问到是否了解常见的大数据组件,产品经理究竟需不需要懂技术,要了解到什么程度呢?


了解大数据技术组件可以帮助数据产品经理更好地设计产品架构和功能模块,以满足数据处理和分析的需求。例如,对于需要处理海量数据的产品,产品经理可以选择适合的大数据存储和处理技术,以提高产品的性能和稳定性。此外,了解大数据技术组件的数据产品经理能够更好地与技术团队进行沟通和协作。他们可以更清晰地表达产品需求和技术要求,减少沟通障碍,提高开发效率。


场景一、业务系统交互都需要依赖于数据库来进行数据存储,常见数据库有:

1.关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。常用关系型数据库有:Oracle,SQLServer,DB2,Mysql,TiDB

TiDB: 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品


2.非关系型数据库

NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性,常见的有四种数据存储类型:

键值对存储(key-value),如Redis,整个数据库系统加载是在内存中进行,每秒可以进行10W次的读写操作,最常用来做缓存使用,但是价格一般比较贵。

文档存储(document store),典型的是MongoDB,MongoDB是一个基于分布式文件存储 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案,常用来存储用户点评文本、文档文件

基于列的数据库(column-oriented),Hbase,基于列的数据库会将每一列分开单独存放,当查找一个数量较小的列的时候其查找速度是很快的。

图形数据库(graph database),应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系,常见的图形数据库有Neo4j,HugeGraph,应用场景以数据血缘关系、知识图谱为主。


场景二、产品功能上线后,老板问你新版本功能上线后用户使用情况如何?你可能有分析师帮忙输出分析报告、或者有现成的数据产品可以直接查数据,你知道数据是怎么来的吗?

要拿到产品上线后的结果数据,首先要有埋点,否则是巧妇难为无米之炊,产品埋点后由Nginx服务器进行日志数据采集,再由Flume进行数据文件转发,到其他存储器,比如HDFS、HBASE,或Kafka,经过离线或实时ETL后,才可以被查询使用。数据采集环节主要用到:


3.Nginx

Nginx是一个http服务器(web服务器)Nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,常用做静态内容服务和反向代理服务器,直面外来请求转发给后面的应用服务


4.Flume

是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,通过监控整个文件目录或者某一个特定文件,用于收集数据;同时Flume也 提供数据写到各种数据接受方(可定制)的能力,用于转发数据。Flume 的易用性在于通过读取配置文件,可以自动收集日志文件,在大数据处理及各种复杂的情况下,flume 经常被用来作为数据处理的工具。


场景三、数据分析和处理一般不会直接操作线上业务库,因为会影响线上服务的稳定性,通常是先把业务从库的数据同步到数仓后,再进行ETL清洗加工应用。此外,对于订单状态实时变更数据同步,会采用消息队列进行数据传输。


5.数据集成

数据集成是把不同来源、格式数据在逻辑上或物理上有机地集中,实现异构数据源之间的数据同步和传输,是后期数据处理应用的前序步骤


6.Sqoop

sqoop是连接关系型数据库和hadoop的桥梁,主要有两个方面(导入和导出):

A. 将关系型数据库的数据导入到Hadoop 及其相关的系统中,如 Hive和HBase

B. 将数据从Hadoop 系统里抽取并导出到关系型数据库


7.ETL

英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库


8.数据仓库

Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合,为数据分析性报告和决策支持、数据智能应用而创建,按照数据时效可分为实时数仓和离线数仓。通常数仓解决方案是基于Hadoop组件构建。


9.消息队列

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削峰等问题。目前在生产环境,使用较多的消息队列有Kafka、MetaMQ、RocketMQ、Turbo Mq等。


10.Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。


场景四、数据加工处理完成后,会进行SQL查询、拖拽分析或可视化应用,这一过程主要是基于Hadoop生态各个组件构建的大数据解决方案来实现。


11.Hadoop

Hadoop是在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,是最常用的大数据软件架构,由一系列组件搭建而成。其核心部件是HDFS与MapReduce。


12.HDFS

Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用,是大数文件存储工具。


13.MapReduce

MapReduce是面向大数据并行处理的计算模型、框架和平台,是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。是利用SQL语句查询存储在HDFS文件系统上的计算查询引擎,可以处理超大数据量,缺点是执行map和reduce过程性能会比较慢。


14.Hive

Hive是基于Hadoop构建的数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在HDFS中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL


15.Spark

Spark 是专为大规模数据处理而设计的快速通用的计算引擎。和Hadoop MapReduce类似的通用并行框架,Spark拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。换句话说,Spark 启用了内存分布数据集,内存计算下,Spark 比 Hadoop 快100倍。


16.Presto

Presto是由 Facebook 推出的一个基于Java开发的开源分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。


17.Kudu

KUDU 是一个列式存储的存储引擎, kudu是一款介于hdfs和hbase之间的高速分布式列式存储数据库。兼具了hbase的实时性、hdfs的高吞吐,以及传统数据库的sql支持。作为一款实时、离线之间的存储系统。定位和spark在计算系统中的地位非常相似,是实时数仓建设的常用组件。

18.YARN

Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。


19.ZooKeeper

ZooKeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件。提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。


20.Kylin

Kylin为了解决大数据系统中TB级别数据的数据分析需求,它提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,它能在亚秒内查询巨大的Hive表。其核心是预计算,计算结果存在HBase中。


场景五、数据可视化平台需要每日监控营收KPI指标趋势,并可以在页面进行维度切换选择,即时获取最新数据,这个时候虽然数据是T+1(今天可以查询昨天及更早数据),但页面响应需要秒级响应。通常用于可视化页面数据查询的引擎有:MySQL、Greenplum、ClickHouse、Kylin等


21、GreenPlum

Greenplum属于OLAP。是基于低成本的开放平台基础上提供强大的并行数据计算性能和海量数据管理能力。这个能力主要指的是并行计算能力,是对大任务、复杂任务的快速高效计算,可以处理的数据量比MySQL大


22、Clickhouse

ClickHouse开源列式数据库,主要用于数据分析(OLAP)领域,可以支持任意指标、任意维度并秒级给出反馈的大数据Ad-hoc查询,ClickHouse比Spark快了近10倍。适合海量数据实时导入实时查询,多维聚合分析


场景六、对于大促活动、例如淘宝双十一实时数据监控大屏,T+1的数据已经不能满足需求了,需要数据的实时处理,实时展示,这个时候会用到Storm、Flink,实时处理Kafka传输的业务数据。


23.Storm

Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等


24.Flink

Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制,优点是可以支持批流一体。


场景七、除了报表分析,产品和运营需要针对实时访问产品的用户,实时判断用户是否下过订单,针对新客派发大礼包,老客引导复购。此时会用到API接口,数据加工处理后,会推送到ES,或Kafka,提供API供业务拉取、或直接Kafka输出。


25. Elasticsearch

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值


小结

大数据技术随着互联网飞速发展快速更新迭代,大数据生态圈的组件和名称很多很多,本文主要基于几个业务场景,把最常用的流程涉及的部分组件加以介绍,希望对大家有所帮助。

转自公众号:CIO俱乐部