《Spark大数据分析:核心概念、技术及实践》一1.5 NoSQL

简介:
  本节书摘来自华章出版社《Spark大数据分析:核心概念、技术及实践》一书中的第1章,第1.5节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区“华章计算机”公众号查看。


1.5 NoSQL

NoSQL这个术语用于非关系型的现代数据库。起初,NoSQL指的是“不支持SQL”,因为这些数据库不支持SQL。而现在,它指的是“不止SQL”,因为其中一些数据库支持SQL命令的一个子集。相对RDBMS数据库来说,NoSQL数据库有不同的设计目标。一个关系数据库保证了ACID(原子性、一致性、独立性和持久性)。而NoSQL数据库则权衡ACID对线性扩展性、性能、高可用性、灵活的模式和其他特性的兼容性。

本节讨论一些广泛使用的NoSQL数据库。

1.5.1 Cassandra

Cassandra是一个分布式、可扩展、容错的NoSQL数据库,用于存储大数据集。它是一个分块的、可调节一致性的行存储。其关键特性是动态模式,每一行可以存储不同的列,而不像关系数据库那样每行有完全相同的列。另外,Cassandra对写操作做了优化,所以插入操作是高性能的。

Cassandra是一个无主的分布式架构。因此,它没有单点故障的问题。另外,它实现了各行在集群中的自动分布。读写数据的客户端应用可以连接Cassandra集群中的任意节点。

Cassandra通过内部对数据复制的支持来提供高可用性。保存的副本数量可以配置,每个副本在集群中不同的节点上存储。如果复制因子是3,即使一或两个节点宕机,整个集群依然可用。

Cassandra中数据通过键空间(keyspace)、表、行和列形成的层级结构来建模。键空间在概念上类似于RDBMS中的数据库或模式。它是表的逻辑集合,代表一个命名空间,用来控制一组表的数据复制。表(也称为“列族”)在概念上类似于RDBMS中的表。一个列族由分块的行的集合构成。每一行由分块的键和一组列构成。特别要注意的是,尽管Cassandra中的键空间、表、行和列看起来分别和关系型数据库中的模式、表、行和列很类似,但是它们的实现和物理存储是不同的。

在Cassandra中查询模式驱动数据模型。Cassandra中的一个列族或一个表基本上就是一个物化视图。不像关系数据库那样,Cassandra不支持连接(join),这意味着相同的数据可能需要在多个列族中复制。

1.5.2 HBase

HBase也是一个分布式、可扩展、容错的NoSQL数据存储,用于存储大数据集。它运行在HDFS之上。它和Cassandra有相似的特点,二者均受启发于Bigtable(一个由Google发明的数据存储系统)。

Bigtable是一个由Google创造的分布式存储系统,用来处理跨越上千台商用服务器中拍字节级别的结构化数据。它不支持关系数据模型;相反,它提供了一种简单的数据模型,赋予客户端应用对数据存储的动态控制权。

HBase把数据存在表中。表由行组成,行由列族组成,列族由列组成。然而,HBase中的表和列与关系数据库中的表和列有很大不同。一个HBase表本质上是一个稀疏的、分布式、持久化、多维且有序的Map。

Map是一个被大多数编程语言所支持的数据结构。这是一个用于存储键值对的容器。对于通过键查找值来说,它是一种非常高效的数据结构。一般来说,键的顺序是未定义的,应用也不关心键的顺序:它提供一个键给Map,然后获取这个键所对应的值。注意,不要把Map数据结构和Hadoop MapReduce中的map函数弄混了。map函数是一个函数式编程语言的概念,用于转换数据。

Map数据结构在不同的编程语言中有不同的名字。比如,在PHP中叫作关联数组,在Python中叫作字典,在Ruby中它称为哈希,而在Java和Scala中则为映射。

HBase表是一个有序的多维或多层级的Map。第一层键是行键,它使应用能快速从数以亿计的行中读取其中一行。第二层键是列族。第三层键是列名,也称为列标识符。第四层键是时间戳。行键、列族、列名和时间戳组合起来,就唯一标识了一个单元(cell),其中包含值。值是一个未解析的字节数组。

HBase表中的行是稀疏的。不像关系数据库中的行,HBase中的每一行不必须有同样的列。每一行有同样的列族集,但一行中的某些列族可能没有存储任何内容。一个空单元不占用任何存储空间。

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
172 1
Spark快速大数据分析PDF下载读书分享推荐
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
62 2
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
57 1
|
2月前
|
分布式计算 Java Apache
Apache Spark Streaming技术深度解析
【9月更文挑战第4天】Apache Spark Streaming是Apache Spark生态系统中用于处理实时数据流的一个重要组件。它将输入数据分成小批次(micro-batch),然后利用Spark的批处理引擎进行处理,从而结合了批处理和流处理的优点。这种处理方式使得Spark Streaming既能够保持高吞吐量,又能够处理实时数据流。
70 0
|
4月前
|
分布式计算 Java Serverless
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
本文以 ECS 连接 EMR Serverless Spark 为例,介绍如何通过 EMR Serverless spark-submit 命令行工具进行 Spark 任务开发。
403 7
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
|
4月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
150 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
3月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
204 0
|
4月前
|
分布式计算 Hadoop Serverless
数据处理的艺术:EMR Serverless Spark实践及应用体验
阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。
|
5月前
|
分布式计算 运维 Serverless
通过Serverless Spark提交PySpark流任务的实践体验
EMR Serverless Spark服务是阿里云推出的一种全托管、一站式的数据计算平台,旨在简化大数据计算的工作流程,让用户更加专注于数据分析和价值提炼,而非基础设施的管理和运维。下面就跟我一起通过Serverless Spark提交PySpark流任务吧。
237 1
|
5月前
|
分布式计算 Hadoop 大数据
大数据技术:Hadoop与Spark的对比
【6月更文挑战第15天】**Hadoop与Spark对比摘要** Hadoop是分布式系统基础架构,擅长处理大规模批处理任务,依赖HDFS和MapReduce,具有高可靠性和生态多样性。Spark是快速数据处理引擎,侧重内存计算,提供多语言接口,支持机器学习和流处理,处理速度远超Hadoop,适合实时分析和交互式查询。两者在资源占用和生态系统上有差异,适用于不同应用场景。选择时需依据具体需求。