数据知识胡言乱语一锅乱炖(SQL、RDBMS、HDFS、MapReduce、Spark、Hive、ClickHouse、Elasticsearch、HBase、Kafka、Redis)

SQL

SQL是结构化查询语言,用于管理关系数据库管理系统(RDBMS)。SQL的操作范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。

  • 一个被设计用来操作关系数据库内数据的语言。

RDBMS

关系数据库管理系统是管理关系数据库的数据库管理系统,关系数据库是将数据间的关系以数据库表的形式加以表达,并将数据存储在表格中以便于查询。最常用的关系型数据库管理系统就是MySQL,而SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准语言。MySQL使用SQL语言来管理和访问数据,SQL提供了对数据的基本操作(例如查询、插入、更新和删除)以及对数据约束和事务处理的支持。

  • Mysql是数据库管理系统,SQL是用户操作数据的语言,其数据存储在服务器本地由文件系统支持。

HDFS

HDFS是Hadoop分布式文件系统,主要用于对海量文件信息进行存储和管理,也就是解决大数据文件(如TB乃至PB级)的存储问题。相比于传统存在服务器上的文件系统,HDFS将文件分成很多数据块存储在网络中的很多服务器上。并行存储和读取。

  • 一个把数据切块分布式保存、并行式操作的文件系统。

MapReduce

MapReduce是Hadoop的最初的计算框架,它将大规模的数据分割成多个小块并在集群中分布式地运行计算和处理任务。MapReduce将计算分为两个阶段,即Map和Reduce。其中Map阶段将数据处理成键值对,Reduce阶段将相同键的结果合并为一个结果。

  • Hadoop的最初的计算框架,基本实现对HDFS分布式地运行计算和处理任务的能力。

Spark

Spark是一套独立的基于Hadoop的数据处理框架,相较于使用MapReduce引擎具有更快的处理速度。Spark可以作为工具让Hive仓库系统调用它分析数据,Spark自身也可以直接使用来分析处理数据,并且能够支持各种数据来源(RDDs、parquet文件、JSON数据集、Hive表)

计算引擎 Spark mapreduce 备注
计算方式 内存计算 IO读写 迭代计算过程中,MR需要不断IO,而spark引入了RDD+DAG,使计算过程基于内存完成,提升了处理性能
任务调度 线程级别 进程级别 spark可以通过复用线程池中的线程减少启动、关闭task所需要的消耗
  • Hadoop计算框架的更新版本,优化处理方式速度更快。

Hive

Hive是基于Hadoop的数据仓库系统,其本身不提供存储、不提供计算引擎,专注于简化对数据分析处理的过程,其使用类SQL语言HQL查询存储在HDFS中的数据。Hive会将生成Hive表(为HDFS上的文件赋予数据库表、列的语义,保存对应的元数据供查询时使用),在获得查询命令时根据Hive表编译命令。在Hive中进行数据处理时,会通过HQL将查询语句转换成MapReduce作业在Hadoop集群中运行。

  • Hive就是个壳子,里面什么东西都不是它的,它只不过整合暴露了一个易于使用的接口让你好写查询语句。
  • Hive本身不提供存储,使用Hadoop分布式文件系统HDFS存储。
  • Hive本身不提供计算引擎,而是使用Hadoop生态的MapReduce或Spark计算。
  • 相比于sql来说,hive更注重于大量数据的查询分析上,几乎不对数据进行增删改的操作。适合离线批量处理,延迟比较大(用于周期性的执行分析),不适合用于在线的需要实时分析结果的场景。

ClickHouse

ClickHouse是用于实时分析大数据的列式数据库管理系统(DBMS)。它被设计成具有高速度和扩展性,能够处理PB级别的数据。

  • ClickHouse是MPP架构,强调充分发挥单机性能,没有真正的分布式表,ClickHouse的分布式表只是本地表的代理,对分布式表的查询都会被转换为对本地表的查询。Hive的数据存储于分布式文件系统,因此Hive的计算引擎Spark在执行计算任务时,需要依据数据分布进行调度。在必要时,Spark可以通过CBO将数据重新排序后再分散到多台机器执行,以实现复杂的查询。
  • ClickHouse的优化重点在如何提高单机的处理能力,而Spark的优化重点在于如何提高分布式的协作效率。
  • 面向列的DBMS,列相似数据连续存储,利好数据压缩。
  • 向量化引擎。
  • 适合在线查询:响应速度快延迟极低
  • 实时的数据更新。
  • 支持SQL。
名称 Hive壳子 RDBMS(MySQL) DBMS(Clickhouse)
查询语言 HQL(类SQL) SQL 支持SQL
数据存储 依赖HDFS 服务器本地文件系统 可单可分布
数据格式 用户自定义 系统定义
数据更新 少改添 增删改查 增删改查
计算模型 mapreduce excutor执行引擎
设计理念 对海量数据做数据挖掘 实时查询 海量数据快查
实时性
拓展性 分布式框架扩展方便 相对较差
有无索引 无(全查) 一级索引

Elasticsearch

Elasticsearch是一个近实时的分布式搜索分析引擎,Elasticsearch通常会和其它两个开源组件Logstash(日志采集)和Kibana(仪表盘)一起提供端到端的日志/搜索分析的功能,常常被简称为ELK。
Elasticsearch只有搜索能力没有存储能力,底层存储完全构建在Lucene之上。Lucene是一个文本搜索引擎,Lucene通常是以文件(大部分是json文件)的形式来存储数据的,每个文件都代表着一个索引,将文档中的数据建立倒排索引,以便加快搜索速度。

  • Elasticsearch是一个Lucene的Plus版本,扩展了Lucene的单机搜索能力,使其具有分布式的搜索和分析能力。
  • 可以处理半结构化和非结构化的数据,例如日志、文档、JSON等。
  • 继承了Lucene最重要的核心(全文检索功能):适用倒排索引,每个字段都可被索引且可用于搜索,海量数据下近实时实现秒级的响应,基于Lucene的开源搜索引擎,为全文检索、高亮、搜索推荐等提供了检索能力。
  • 常用于日志处理。
  • 常用于指标分析:Elasticsearch可以聚合大量指标数据,并提供高效的统计分析服务。比如统计订单量、爬虫爬取不同电商的某个商品数据,分析各个平台的历史价格、购买力等。
  • 搜寻引擎:可用于搜索网站、产品、文档、应用程序、收藏夹或任何其他带有文本的内容。

HBase

Hbase是一个分布式的、基于列的Hadoop的NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等。
HBase是建立在HDFS之上,提供高可靠性的列存储,实时读写的数据库系统
HBase是一种在Hadoop之上的NoSQL 的Key/vale数据库,只支持简单的行列操作。
Hbase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题,两者经常配合使用。

猜你喜欢

转载自blog.csdn.net/qq_42078712/article/details/131473301