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

SQL

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

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

RDBMS

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

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

Redis

  • redis是一个高性能的key-value内存数据库,Redis 支持的数据结构丰富,包括hash、set、list等。

  • 一般用作数据库、缓存消息中间件

  • Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。

Mongo

  • 能存储海量数据,但是不支持事务

  • MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

  • MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

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表)

计算引擎Sparkmapreduce备注
计算方式内存计算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服务器本地文件系统可单可分布
数据格式用户自定义系统定义
数据更新少改添增删改查增删改查
计算模型mapreduceexcutor执行引擎
设计理念对海量数据做数据挖掘实时查询海量数据快查
实时性
拓展性分布式框架扩展方便相对较差
有无索引无(全查)一级索引

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之上,HDFS是文件系统,而HBase是数据库系统。

  • HBase有表、行和列的概念。定位一行数据会有一个唯一的值,这个叫做行键(RowKey)。而HBase的列(Column)归属到列族(Column Family)中,先找列族,后找列

    一条数据结构rowKey
    Column FamilyUserInfo1UserInfo2
    Columnnamesexagebirth
    Value1Tommale181999

    id=1这行数据中,有Info1Info2两个列族,名下分别有namesexagebirth四个列名,在读取时分别使用Info1:nameInfo1:sexInfo2:ageInfo2:brith

  • HBase存储数据的结构可以非常灵活。HBase表的每一行中,列的组成都是灵活的,行与行之间的列不需要相同,甚至能完全不同一个列族下可以任意添加新列名,不受任何限制

  • HBase以Key-Value形式列式存储,Key由RowKey(行键)+ColumnFamily(列族)+Column(列)+TimeStamp时间戳版本+KeyType(类型)组成,而Value就是存储的值。

    KeyRowKeyColumnFamilyColumnTimeStampKeyType
    例子1UserInfo1name1690372353000KeyType
    ValueTom
  • Hbase的主要特点

    • 海量数据存储
    • 存储记录的多个历史版本,比如地理位置列、天气温度列等
    • 高性能、高可靠性
  • Hbase的主要应用场景

    • 每天写入量巨大,而相对读数量较小的应用 – 日志系统
    • 海量数据(亿万条记录)的最底层数据源
    • 对性能和可靠性要求非常高的应用
    • 需要存储历史记录场景

Kafka

Kafka是一个快速,可扩展,耐用和容错的发布/订阅的消息传递系统。

Kafka基本概念

  • Producer–生产者

    向Kafka集群中的broker发布消息。

  • Broker–服务代理

    Kafka集群包含一个或多个服务器,这种服务器被称为broker。broker直接使用磁盘进行存储,线性读写,速度快。

  • Consumer–消费者

    从Kafka集群中的broker拉取(pull)数据并进行处理。

  • Topic & Partition–话题

    • Topic在逻辑上可以被认为是一个queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里。
    • 物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件。

Kafka业务场景

  • 日志收集 – 可以收集各种服务的日志,通过Kafka以统一接口服务的方式接受消息进行存储
  • 消息系统 – 邮件或短信系统
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值