栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

NoSQL期末复习

NoSQL期末复习

简答题 1. 描述 Hbase 有哪些特性,解释说明。     答案: 容量巨大、 列存储、 稀疏性、 扩展性强、 高可靠性。 ①容量巨大: 百亿行百万列、可以在 横向纵向两个维度插入数据。 ②列存储: 面向列进行存储和权限控制,且支持 基于列的独立索引。 ③稀疏性:数据以 字符串形式存储, 数据为空的列 不占用存储空间。 ④扩展性强: 横向扩展:增加服务器到现有集群。纵向扩展:不断优化主服务器的 性能,提高存储空间和性能。 ⑤高可靠性: Hbase运行在HDFS ,HDFS的 多副本存储可以让它在出现故障时自 动恢复,同时Hbase内部也提供WAL(预写日志),和Replication 机制 2. Hbase 数据库写入数据的流程。   答案: ①客户端首先 访问zookeeper,从 meta表得到写入数据对应的 region信息和相应的 region服务器。 ② 找到相应的region服务器,把数据分别 写到HLogMemStore上一份。 ③ MemStore达到阈值后则把数据刷 成一个StoreFile文件。(若MemStore中的数据有丢失,则可以从HLog上恢复)。 ④当 StoreFile文件达到一定的数量后,会触发Compact合并操作, 合并为一个StoreFile ⑤当 Storefile大小超过一定阈值后,会把当前的 Storefile分割 为两个(Split分裂)。 3. Hbase 数据库读取数据的流程。 答案: ①客户端 先访问 zookeeper,从 meta 表读取 Region的信息 对应的服务器。 ②客户端 向对应 Region 服务器发送读取数据的请求,Region接收请求后, 先从 MemStore找数据,如果 没有,再到 StoreFile上读取,然后将数据返回给客户端。   4. Hbase 集群都有哪些组件?写出各自的功能 答案: 组件:客户端、zookeeper、HMaster、RegionServer 功能: 客户端: Hbase 系统的入口:客户端用来操作Hbase数据库 通信功能:与HMaster进行管理类通信,与Regionserver进行数据读写类通信 多种形式客户端:Hbase shell、Java编程、Thrift等,具体使用后面章节详细介绍 ZooKeeper :主要用来解决分布式应用中经常遇到的数据管理的问题,如数据的发布 /订阅、分布式协调/通知、集群管理、HMaster选举、分布式锁等 在Hbase中协调的任务: HMaster 选举、 系统容错、 Region 元数据管理, 记录 HMaster/HRegionServer 节点地址、 Region 状态管理 HMaster :HMaster是Hbase集群中的主服务器,负责监控集群中的所有RegionServer, 并且是所有元数据更改的接口。 HMaster主要负责表和region的管理工作 (1) 与客户端交互,管理用户对表的增、删、改、查操作 (2)管理RegionServer的 负载均衡 (3)处理RegionServer的 故障转移 (4)调整Region的分布, Region 的分配和移除 RegionServer :一般在分布式集群当中,RegionServer运行在DataNode服务器上, 实现数据的本地性。每个RegionServer包含多个Region,主要负责响应用户读写请求,从HDFS中读写数据。RegionServer是Hbase集群最核心的模块。 它负责的功能有: (1) 处理客户端 读写请求。 (2) 处理分配给它的 Region。 (3) 刷新缓存到HDFS中。 (4)处理 Region的 合并与拆分。 5. Hbase 与 HDFS 的关系, HFile 文件过多对集群有什么影响?如何解决?简单描述对应的方法及如何权衡 答案: 影响:HFile文件 越多,I/O操作 越慢,读写也会 延时,导致 慢操作。 解决方法:HFile合并:① Minor 合并:在Store内部,将满足条件的 多个小的 HFile, 合并成大的HFile。Minor合并是触发式的,达到触发条件才会进行Minor合并 ② Major 合并:将Store中的 所有 HFile 合并成一个大文件;有时也会对整个表的同 一列族的HFile进行合并,这是一个耗时和耗费资源的操作,会很大程度上 影响集 群性能。 6. 写出 MongoDB 副本集的工作流程及复制的目的。 答案: 工作流程:在 MongoDB 副本集中 , 主节点负责处理客户端的 读写请求, 备份节点 则负责映 射主节点的数据备份节点的工作原理过程可以大致描述为, 备份节点定期轮询主节点上的数据操作,然后 对自己的数据副本进行这些操作,从而保 证跟主节点的数据同步。至于 主节点 上的所有数据库状态 改变的操作 ,都会存放在一张特定的 系统表 中。 备份节点 则是 根据这些数据 进行自己的数据更新 。当集群中主节点发生故障时,副本集可以自动投票,选举出新的节点, 并引导其余的从节点连接新的主节点。 复制目的:保证数据在生产部署时的 冗余和可靠性,通过在不同的机器上保存副本, 保证数据的不会因为单点故障而丢失。能够随时应对数据丢失、机器损坏带来的风 险。除此以外,还能 提高数据的读取能力,用户的读取和写入在不同的服务器,而且,由不同的服务器为不同的用户提供服务, 提高整个系统的负载能力。 7. 写出 MongoDB 分片集群的组件及搭建分片集群的流程。 答案: 组件: 配置服务器(Config Server)、路由服务器(Route Server)、分片服务器( Shard Srever) 。 ① 配置服务器,一个独立的mongod进程,集群启动前进行配置,保存分片的元数据。② 路由服务器,即mongos进程,起到一个路由的功能,本身不存储数据,启动时从配置服务器加载元数据,根据元数据信息,将客户端的请求转发给对应的分片服务器,对分片服务器返回的响应进行聚合并返回给客户端。③ 分片服务器,保存整个数据库的数据分片的服务器,可以是单独的mongod服务器,也可以是一个副本集。通常采用副本集的方式,避免单点故障导致的数据丢失。 流程:①启动配置服务器,mongod进程,配置为单成员副本集。②启动mongos, 使用配置文件启动一个mongos实例。③启动一个分片服务器,使用单成员的副本集。④对数据库启用分片。⑤对集合进行分片。 8. 简单描述 MongoDB 的特点及其与关系数据库的区别。 答案: 特点: C++语言编写、(高性能、高可用、可伸缩、易部署、易使用、存储数据十分方便)、介于 关系型数据库和非关系型数据库之间的产品、 面向文档的NoSQL数据库、 开源软件, 无表结构 区别:
MySQL MongoDB 解释
Database database 数据库
Table collection 数据表/集合
Row【一条记录,实体】 document 行/文档
Column field 列/字段或属性
table join 不支持 表连接
Primary key primary key 主键
9. 为什么要使用 Memcached 或者 Redis 。 答案:   目的:在 内存中缓存关系型数据库的查询结果, 减少数据库自身被 访问的次数,以 提高 Web应用的 响应速度,提 高网站架构的 并发能力和 可扩展性。 10. 非关系数据库都有哪几类?举例并说明使用场景。 答案:
分类 举例 典型应用场景
键值数据库 Redis 缓存,主要用于处理大量数据的高访问负载。
列族数据库 Hbase 海量数据的分布式存储
文档型数据库 MongoDB Web 应用的数据存储
图形数据库 Neo4J 社交网络,推荐系统等。专注于构建关系图谱
第一章 绪论 1、Nosql背景        为了改变关系型数据库的不足,适应当前大数据库时代海量的非结构化数据存储的需要, 一种新型数据库类型-NoSQL(非关系型数据库 )诞生了。 2、与其他关系型数据库区别

1.存储方式

  关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。

2.存储结构

  关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。

3.存储规范

  关系型数据库的数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦。而Nosql数据存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,这样整块数据更加便于读写

4.存储扩展

  这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限。而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。

横向扩展是已扩展服务器的数量进行高并发的处理(增强处理业务的能力) 根据配置nginx的反向代理,转发服务器(配置的ip)进行轮换处理业务(可加入负载均衡器进行分发请求) 纵向扩展,是增加单机的处理能力,一般增加cpu的处理能力

5.查询方式

  关系型数据库通过结构化查询语言来操作数据库(就是我们通常说的SQL)。SQL支持数据库CURD操作的功能非常强大,是业界的标准用法。而Nosql查询以块为单元操作数据,使用的是非结构化查询语言(UnQl),它是没有标准的。关系型数据库表中主键的概念对应Nosql中存储文档的ID。关系型数据库使用预定义优化方式(比如索引)来加快查询操作,而Nosql更简单更精确的数据访问模式。

3、特性 ①灵活的数据模型; ②可伸缩性强; ③自动分片; ④自动复制 4、ACID 原子性(Atomicity,A)、一致性(Consistency,C)、隔离性(Isolation,I)、持久性(Durability,D) (1)原子性(A):所有的步骤要么全部完成,要么一个也不完成。 (2)一致性(C):数据库事务不能破坏关系数据的完整性以及业务逻辑的一致性。 (3)隔离性(I):并发执行的事务按顺序一个接一个执行。一个未完成的事务不会影响到另外一个未完成的事务。 (4)持久性(D):一旦一个事务被提交,它应该被持久保存,不会因为与其他操作冲突而被取消。 5、base (1)基本可用(Basically Available):系统允许损失部分可用性,即保证核心功能或当前最重要的功能可用。 (2)软状态(Soft-state):允许不同节点的副本之间存在暂时的不一致情况。 (3)最终一致性(Eventually Consistent):系统中的副本最终一致,不需要实时保证数据副本一致。 6、CAP 一致性(Consistency,C)、可用性(Availiability,A)、分区容错性(Partition Tolerance,P)三者不可兼得。最多满足两个。 (1)一致性(C):更新操作后,所有节点在同一时间的数据完全一致。 (2)可用性(A):用户访问数据时,系统是否能在正常响应时间内返回结果。 (3)分区容错性(P):分布式系统在遇到某节点或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。 CA without p:不允许分区则强一致性和可用性可以保证。例如:交易系统。 CP without A:不要求可用性,相当于每个请求都需要在各服务器之间强一致,而分区容错性会导致同步时间无限延长。例如:统计分析。 AP without C:如果要可靠性高并允许分区,则需放弃一致性。例如:web应用。 7、NoSQL数据库分类
分类 举例 典型应用场景 数据模型 优点 缺点
键值 数据 库 Redis 缓存,主要用于处理大量数据的高访问负载。 Key - Value 键值对,通常用hash table来实现 查找速度快 数据无结构化,通常只被当作字符串或者二进制数 据
列族数据库 Hbase 海量数据的分布式存储 以列族存储,将同一列族数据存在一起 容量巨大、高可靠性、高可扩展性 功能相对局限
文档型数据库 MongoD B Web应用的数据存储 Json 文档,也可以说是Key-Value键值对 数据结构要求不严格,不需要像关系型数据库一样需要预先定义表结构 查询性能不高,而且缺乏统一的查询语法。
图形数据库 Neo4J 社交网络,推荐系统等。专注于构建关系图谱 图结构 利用图结构相关算法。比如最短路径寻址等 很多时候需要对整个图做计算才能得出需要的信息, 不好做分布式的集群方案。
第二章 认识Hbase 1、Hbase的特性 (简答题) 2、Hbase的组件和功能 (简答题) 第三章 Hbase数据模型与使用 1、Hbase的基本概念 2、Hbase Shell 基本操作 Hbase表的操作,具体方法如下表: 3、Hbase编程方法      3.1 基于Java的编程方法     3.2 基于Thrift协议的编程方法 第四章 Hbase实现原理 1、Hbase基本原理     1.1 Region定位
  1. Region的定位
① 先从Zookeeper中获取 “ .meta. ” 表的位置(HRegionServer的位置),缓存该位置信息。 ② 从HRegionServer中查询用户表对应请求的RowKey所在的HRegionServer,缓存该位置信息。 ③ 从查询到的HRegionServer中读取Row。 备注:定位到Region所对应的RegionServer,是Hbase表读写操作的前提;.meta.表:存放region与regionserver地址关系。     1.2 数据读取写入     (简答题) 2、Hbase Region管理     2.1 HFile合并 3、Hbase集群管理 第五章 MangoDB基础 1、概述 数据类型:MongoDB中的文档本质上是一种类似JSON的 BSON格式的数据。 所谓内嵌文档就是 把整个MongoDB文档当做另一个文档中一个键的一个值。 例如,用一个文档表示一个人,同时还要保存他的地址,但是地址包括所属街道、城市等多个属性。 那我们就可以将地址内嵌到“address”文档中,如图中示例。 例子中“address”的值是另一个文档,这个文档有自己的键和值。 2、基本概念 3、数据库与集合基本操作 数据库操作: 一组集合可以组成一个数据库。 一个MongoDB实例可以承载多个数据库。 一个应用,使用一个数据库(一个文件) 集合:       集合就是 一组文档,类似于关系数据库的表。             集合没有固定的结构,其中的文档通常具有相关性。 集合基本操作: 4、文档基本操作 下面看一下文档有哪些特点: (1)文档中的键值对是有序的:  文档是由多个键及其关联的值“有序”地放置在一起,         可以看出(1)中的2个文档虽然键和值完全一致,但由于属性顺序不同,因此是不一样的文档。  (2)值区分字符串和数字:示例中age属性值数据类型不同,是不同的文档 。 (3)键区分大小写:示例中2个文档姓名属性名大小写不同。 文档之间的关系:引用、嵌套。当文档嵌套,导致大量数据重复时,引用方式更适合。 文档操作: MongoDB查询: 5、索引     (优势、特点、类型、如何创建、操作) 6、聚合 第六章 MangoDB进阶 1、集群架构,运行机制 2、MangoDB分布式集群部署     (分片集如何管理、组件、为什么使用集群) 第七章 其他非关系型数据库 1、应用场景

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/680151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号