一、Hbase
1、介绍
Hbase是高可靠、高性能、可伸缩、面向列的分布式存储数据库。
适用于大表的存储,读、写、访问速度快。
为MapReduce或Spark提供海量数据的实时处理能力。
利用ZooKeeper作为协同服务。
2、数据模型
Rowkey:行键,相当于关系数据库中的主键,行数据的唯一标识。
Column Family:CF,列族,一个表在水平方向上由一个或多个 CF 组成,一个 CF 由任意多个Column 组成,Column 为 CF 下的一个标签,所以 CF 支持动态扩展,而不需要预先定义 Column,且不同行之间,列的个数和类型都可以不同。
Timestamp:每次数据操作是对应的时间戳,该列是实现 Hbase 一行多版本的关键,一行数据按时间戳区分版本,每个 Cell 的多版本按时间戳倒序存储。
Region:可以理解为表分区,随着数据量的增多,Hbase 会根据设定好的配置阀值,自动分区。
Cell:HBase 最小的存储单元,由 Key 和 Value 组成。Key 由 row、column family、columnqualifier、timestamp、type、MVCC version 这6个字段组成。Value 就是对应存储的二进数据对象。
3、架构
Master:HMaster,RegionServer 的管理者,主要控制与 Region 相关的功能。在 HA 模式下,会有主备 Master,主 Master 故障,备用 Master 会替代。
RegionServer:Hbase 的数据处理和计算单元,提供表数据的读写等服务,RegionServer 一般与HDFS 的 DataNode 部署在一起,实现数据存储功能。
Zookeeper:为 Hbase 各进程提供分布式协作服务。各 RegionServer 将自己的信息注册到Zookeeper,主 Master据此感知各个 RegionServer 的健康状态。
client:可以通俗的理解为客户端,client 与 Master 进行管理类通信,与 RegionServer 进行数据操作类通信。
HDFS:为 Hbase 提供高可靠的文件存储服务,Hbase 的数据全部存在 HDFS 中。
二、Hive
1、简介
Hive 是建立在 Hadoop 上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。
Hive 构建在关系型数据库结构之上,有着与 Oracle、MySQL 相似的数据结构,同时 Hive 还提供了类似 SQL 的 Hive Query Language 语言操作结构化数据,其基本原理是将 HQL 语言自动转换成 MapReduce 任务,从而完成对 Hadoop 集群中存储的海量数据进行查询和分析。
因此,一个习惯使用传统关系型数据库的操作者,也能无缝对接上Hive 的使用。
2、架构
HiveServer:一个集群内可部署多个 HiveServer,负荷分担。对外提供 Hive 数据库服务,将用户提交的 HQL 语句进行编译,解析成对应的 Yarn 任务或者 HDFS 操作,从而完成数据的提取、转换、分析。
MetaStore:一个集群内可部署多个 MetaStore,负荷分担。提供 Hive 的元数据服务,负责 Hive 表的结构和属性信息读、写、维护和修改。提供 Thrift 接口,供 HiveServer、Spark、WebHCat 等MetaStore 客户端来访问,操作元数据。
WebHCat:一个集群内可部署多个 WebHCat,负荷分担。提供 Rest 接口,通过 Rest 执行 Hive 命令,提交 MapReduce 任务。
Hive 客户端:包括人机交互命令行 Beeline、提供给 JDBC 应用的 JDBC 驱动、提供给 Python 应用的Python 驱动、提供给 Mapreduce 的 HCatalog 相关 JAR 包。
ZooKeeper 集群:Zookeeper 作为临时节点记录各 HiveServer 实例的 IP 地址列表,客户端驱动连接Zookeeper 获取该列表,并根据路由机制选取对应的 HiveServer 实例。
HDFS/HBase 集群:Hive 表数据存储在 HDFS 集群中。
MapReduce/Yarn 集群:Hive 的大部分数据操作依赖 MapReduce 提供分布式计算服务,HiveServer 的主要功能是将 HQL 语句转换成 MapReduce 任务,从而完成对海量数据的处理。
三、Zookeeper
1、简介
zookeeper 是高性能的分布式协作服务和分布式数据一致性解决方案。
zookeeper 可以保证分布式一致性特性。
zookeeper 的数据模型是一个树形节点,服务启动后,所有数据加载到内存中这样来提高服务器吞吐并减少延迟。
2、架构
ZooKeeper 集群中的节点分为三种角色:Leader、Follower 和 Observer通常来说,需要在集群中配置奇数个(2N+1)ZooKeeper 服务,至少(N+1)个投票才能成功的执行写操作。
Leader:ZK 集群的核心角色,通过选举产生,为客户端提供读写服务,也就是处理事务请求
Follower:集群状态的跟随者,参加选举,没有被选上就是这个角色,提供读取服务,也就是处理非事务请求,对于收到的事务请求会转发给 Leader 服务器
Observer:观察者角色,不参加选举,但是提供数据读取服务,提供读取服务,也就是处理非事务请求,对于收到的事务请求会转发给Leader服务器。
四、Kafka
Kafka 是用于构建实时数据管道和数据流的应用程序。
具有实时横向扩展、高吞吐量、支持大量堆积具有容错性和速度快等特点。
它是一个高性能分布式消息系统。
1、架构
生产者(Producer)将消息发布到 Kafka 主题(Topic),消费者(Consumer)订阅这些主题并消费这些消息。在 Kafka 集群上一个服务器称为一个Broker。对于每一个主题,Kafka 集群保留一个用于缩放、并行化和容错性的分区(Partition)。每个分区是一个有序、不可变的消息序列,并不断追加到提交日志文件。分区的消息每个也被赋值一个称为偏移顺序(Offset)的序列化编号。
消费者使用一个消费者组名称来标记自己,主题的每个消息被传递给每个订阅消费者组中的一个消费者。如果所有的消费者实例都属于同样的消费组,它们就像传统队列负载均衡方式工作。如果消费者实例都属于不同的消费组,则消息会被广播给所有消费者。
Broker
在 Kafka 集群上一个服务器称为一个 Broker。
Topic/主题
一个 Topic 就是一个类别或者一个可订阅的条目名称,也即一类消息。一个主题可以有多个分区,这些分区可以作为并行的一个单元。
Partition/分区
是一个有序的、不可变的消息序列,这个序列可以被连续地追加—个提交日志。在分区内的每条消息都有一个有序的 ID 号,这个 ID 号被称为偏移(Offset),这个偏移量可以唯一确定每条消息在分区内的位置。
Producer/生产者
向 Kafka 的主题发布消息。
Consumer/消费者
向 Topic 订阅,并且接收发布到这些 Topic 的消息。
2、特点
消息可靠性
高吞吐量
消息订阅-通知机制
可扩展性
五、Spark
(待更新)