什么是Hadoop?
hadoop中有3个核心组件
分布式文件系统:HDFS
—— 实现将文件分布式存储在很多的服务器上
分布式运算编程框架:MAPREDUCE
—— 实现在很多机器上分布式并行运算
分布式资源调度平台:YARN
—— 帮用户调度大量的mapreduce程序,并合理分配运算资源
OLTP
Online Transaction Processing 联机事务处理OLAP
Online Analytical Processing 联机实时分析HTAP
Hybrid Transaction & Analytical Processing 混合事务和分析处理MPP
Massively Parallel Processing 大规模并行处理列存储
在基于列式存储的数据库中,数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在ODS是数据接入层,所有进入数据的数据首先会接入ODS层。一般来说ODS层的数据是多复杂多样的。从数据粒度上看ODS层是粒度最细的数据层。
维表层 公共维度汇总层(DIM)主要由维度表(维表)构成。维度是逻辑概念,是衡量和观察业务的角度。维表是根据维度及其属性将数据平台上构建的物理化的表,采用宽表设计的原则。因此,公共维度汇总层(DIM)首先需要定义维度。
为数据仓库层,数据明细层的数据应是经过ODS清洗,转后的一致的、准确的、干净的数据。DWD层数据粒度通常和ODS的粒度相同,不同的是该层的数据质量更高,字段更全面等。在数据明细层会保存BI系统中所有的历史数据,例如保存近10年来的数据。例如 对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据)、维度退化脱敏等
数据集市层,该层数据是面向主题来组织数据的,通常是星形或雪花结构的数据。从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。例如 以DWD为基础,按天进行轻度汇总。
数据应用层,它是完全为了满足具体的分析需求而构建的数据,也是星形或雪花结构的数据。从数据粒度来说是高度汇总的数据。其汇总的目标主要是按照应用需求进行的。例如 以DWS为基础,按主题进行汇总。
ADS层:为各种报表提供数据。
DAG
是有向无环图(Directed Acyclic Graph)Apache Doris
HBase
Hadoop database 的简称,也就是基于Hadoop列数据库
,是一种OLTP 数据库nosql ,主要适用于海量明细数据(十亿、百亿)的随机实时查询
,如日志明细、交易清单、轨迹行为等
TiDB
开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理HTAP
InfluxDB
时序数据库
ClickHouse
本质是一个OLTP 系统的列式数据库,主要做即时查询,大宽表,单表查询速度极佳,join表现差,明细数据查询
GraphQL
是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言),所以叫做 GraphQL
Elasticsearch
是一个分布式的免费开源搜索和分析引擎
Apache Doris
开源MPP分析型数据库产品 ,灵活的多维度查询,join表现比Clickhouse好,明细数据查询,数量级支持TP-PB,需要注意的是Doris是mysql语法
Debezium
Flink-CDC
YARN
是 Hadoop 2.0 版本以后的资源管理器,即 MapReduce 2.0,相比于 1.0 版本,架构中的各个模块分工明确,在性能和稳定性上都有所提升。YARN 负责整个集群资源的管理和调度,也就是说所有的 MapReduce 都需要通过它来进行调度,支持多种计算框架。
Hive
是Hadoop数据仓库
,能帮助熟悉SQL的人运行MapReduce任务,做一些数据清洗(ETL)、报表、数据分析,时间消耗长,适合离线的批量数据计算
spark
的出现就弥补了MapReduce的不足。 spark是一种基于内存的快速、通用、可扩展的大数据计算引擎,应用于 批处理 用于ETL(抽取、转换、加载)。
flink
Azkaban
DolphinScheduler
airflow
是一个可编程的工作流调度、监控平台。可分布式部署调用,基于DAG(本身没有队列功能,需要使用第三方组件,比如redis、rabbitMQ),airflow用python进行编程
开发,可以进行丰富的任务处理,包括bash命令的执行、python代码调用、发送邮件、发送Http请求等。
airflow websever -D启动airflow的web界面
azkaban
是一个工作流监控、调度工具。可以部署分布式,通过在job文件中以properties格式配置任务并打包成zip包即可进行调度。azkaban内部架构包括三部分
excutorServer、webServer、mysql,分别负责任务的执行、web界面的显示、调度信息的存储。
azkaban是一个轻量级的调度器。
oozie
是一个基于hadoop的分布式的工作流调度框架,oozie通过在xml文件中配置任务来进行调度,执行调度时会启动MR任务,依赖于hadoop平台,是一个重量级框架。
Apache DolphinScheduler
是一个分布式、易扩展的可视化DAG工作流任务调度平台,解决数据处理流程中错综复杂的依赖关系
所有流定时操作都是可视化的,通过拖拽来绘制DAG,配置数据源及资源,同时对于第三方系统,提供api方式的操作
Ambari是Apache软件基金顶级项目,它是一个基于web的工具,用于安装、配置、管理和监视Apache Hadoop集群,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari同样还提供了集群状况仪表盘,比如heatmaps和查看MapReduce、Pig、Hive应用程序的能力,以友好的用户界面对它们的性能特性进行诊断。
CDH 是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建
Hortonworks 主打产品是Hortonworks Data Platform (HDP),也同样是100%开源的产品,HDP除了常见的项目外还包含了Ambari,一款开源的安装和管理系统。HCatalog,一个元数据管理系统。
即席查询是用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。普通查应用查询是定制开发的,即席查询是用户自定义查询条件
Druid
:是一个实时处理时序数据的OLAP数据库,因为它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。
Kylin
:核心是Cube,Cube是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。
Presto
:它没有使用Mapreduce,大部分场景下比HIVE快一个数量级,其中的关键是所有的处理都在内存中完成。
Impala
:基于内存计算,速度快,支持的数据源没有Presto多。
SparkSQL
:是spark用来处理结构化的一个模块,它提供一个抽象的数据集DataFrame和DataSet,,并且是作为分布式SQL查询引擎的应用。它还可以实现Hive on Spark,hive里的数据用sparksql查询。
产品 | 国内/外 | 是否开源 | 主要标语 |
---|---|---|---|
Tableau | 国外 | 否 | Find easy answers to hard questions |
PowerBI | 国外 | 否 | 在需要时理清思路 |
superset | 国外 | 是 | 一个现代数据探索和可视化平台。 |
MetaBase | 国外 | 是 | Have questions about your data? Metabase has answers。 |
QuickBI | 国内 | 否 | 一个专为云上用户量身打造的新一代智能 BI 服务平台。 |
SugarBI | 国内 | 否 | 企业可使用 Sugar BI有效助力自己的业务决策 |
FineBI | 国内 | 否 | 新一代自助大数据分析的 BI 工具;使用自助式 BI 工具,释放企业数据潜力。 |
永洪 BI | 国内 | 否 | 释放数据价值,人人都是数据分析师。 |
DataEase | 国内 | 是 | 人人可用的数据可视化分析平台 |
cube.js | 国外 | 是 | 这个是一个通用的数据分析框架,里边包含了自助式的dashboard |