《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中的每一行不必须有同样的列。每一行有同样的列族集,但一行中的某些列族可能没有存储任何内容。一个空单元不占用任何存储空间。

时间: 2024-11-02 21:02:09

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

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

本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问"华章计算机"公众号查看. 大数据技术一览 我们正处在大数据时代.数据不仅是任何组织的命脉,而且在指数级增长.今天所产生的数据比过去几年所产生的数据大好几个数量级.挑战在于如何从数据中获取商业价值.这就是大数据相关技术想要解决的问题.因此,大数据已成为过去几年最热门的技术趋势之一.一些非常活跃的开源项目都与大数据

《Spark大数据分析:核心概念、技术及实践》Scala编程

本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第2节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问"华章计算机"公众号查看. Scala编程 Scala是当前热门的现代编程语言之一.它是编程语言界的凯迪拉克.它是一门强大且优美的语言.学会了它,对你的职业生涯大有裨益. 用不同的编程语言都可以编写大数据应用程序,比如Java.Python.C++.Scala等.Hadoop本身就是用Java编写的.尽管大多数的

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

本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问"华章计算机"公众号查看. Spark Core Spark是大数据领域最活跃的开源项目,甚至比Hadoop还要热门.如第1章所述,它被认为是Hadoop的继任者.Spark的使用率大幅增长.很多组织正在用Spark取代Hadoop. 从概念上看,Spark类似于Hadoop,它们都用于处理大数据.它们都能用商用硬

《Spark大数据分析:核心概念、技术及实践》一3.9 共享变量

 本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第3章,第3.9节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 3.9 共享变量 Spark使用的架构是无共享的.数据分布在集群的各个节点上,每个节点都有自己的CPU.内存和存储资源.没有全局的内存空间用于任务间共享.驱动程序和任务之间通过消息共享数据. 举例来说,如果一个RDD操作的函数参数是驱动程序中变量的引用,Spark会将这

《Spark大数据分析:核心概念、技术及实践》一 第2章 Scala编程

  本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第2章,第2.1节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 第2章 Scala编程 Scala是当前热门的现代编程语言之一.它是编程语言界的凯迪拉克.它是一门强大且优美的语言.学会了它,对你的职业生涯大有裨益. 用不同的编程语言都可以编写大数据应用程序,比如Java.Python.C++.Scala等.Hadoop本身就是用J

《Spark大数据分析:核心概念、技术及实践》一 1.3 列存储

  本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1.3节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 1.3 列存储 数据可以面向行或面向列的格式来存储.在面向行格式中,一行的所有列或字段存储在一起.这里的一行,可以是CSV文件中的一行,或者是数据库表中的一条记录.当数据以面向行格式保存时,第一行后面是第二行,接着是第三行,以此类推.面向行存储对于主要执行数据的CRU

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

 本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第3章,第3.8节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 3.8 Spark作业 RDD上的转换.操作和缓存方法构成了Spark应用的基础.从本质上说,RDD描述了Spark编程模型.既然我们介绍过了编程模型,那么接下来我们介绍在Spark应用中这些是怎么结合在一起的. 作业指的是Spark将要执行的一些计算,它们将操作的结果

《Spark大数据分析:核心概念、技术及实践》一3.6 惰性操作

 本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第3章,第3.6节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 3.6 惰性操作 RDD的创建和转换方法都是惰性操作.当应用调用一个返回RDD的方法的时候,Spark并不会立即执行运算.比如,当你使用SparkContext的textFile方法从HDFS中读取文件时,Spark并不会马上从硬盘中读取文件.类似地,RDD转换操作(它

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

 本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第3章,第3.10节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 3.10 总结 Spark是一个快速.可扩展.可容错且基于内存的集群计算框架.一个Spark应用可以比Hadoop应用快上100倍. Spark不但快速而且它能很方便地使用mapReduce.通过不同语言(包括Java.Python.Scala和R)的易读的API,它

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

  本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1.7节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问"华章计算机"公众号查看. 1.7 总结 近年来数据的指数级增长给许多大数据技术带来了机会.传统的专有产品要么无法处理大数据,要么代价太昂贵.这就为开源大数据技术打开了一扇门.仅仅在过去几年里,这个领域的快速创新已经催生出很多新产品.大数据领域如此之大,以至于可以写一本书专门来介绍各种各样的大数