常见概念
HBase表
HBase的表是三个维度排序的映射。从行主键、列主键和时间戳映射为单元格的值。所有的数据存储在HBase的表单元格中。
列
HBase表的一个维度。列名称的格式为“<family>:<label>”,<family>和<label>为任意字符组合。表由<family>的集合组成(<family>又称为列族)。HBase表中的每个列都归属于某个列族。
列族
列族是预定义的列集合,存储在HBase Schema中。如果需要在列族下创建一些列,首先需创建列族。列族将HBase中具有相同性质的数据进行重组,且没有类型的限制。同一列族的每行数据存储在同一个服务器中。每个列族像一个属性,如压缩包、时间戳、数据块缓存等。
MemStore
MemStore是HBase存储的核心,当WAL中数据存储达到一定量时,加载到MemStore进行排序存储。
RegionServer
RegionServer是HBase集群运行在每个工作节点上的服务。一方面维护Region的状态,提供对于Region的管理和服务;另一方面,上传Region的负载信息,参与Master的分布式协调管理。
时间戳
用于索引同一份数据的不同版本,时间戳的类型是64位整型。时间戳可以由HBase在数据写入时自动赋值或者由客户显式赋值。
Store
HBase存储的核心,一个Store拥有一个MemStore和多个StoreFile,一个Store对应一个分区中表的列族。
索引
一种数据结构,提高了对数据库表中的数据检索效率。可以使用一个数据库表中的一列或多列,提供了快速随机查找和有效访问有序记录的基础。
协处理器
HBase提供的在RegionServer执行的计算逻辑的接口。协处理器分两种类型,系统协处理器可以全局导入RegionServer上的所有数据表,表协处理器即是用户可以指定一张表使用协处理器。
Block Pool
Block Pool是隶属于单个Namespace的块的集合。DataNode存储来自集群中所有块池的块。每个块池都是独立管理的。这就允许一个Namespace为新块生成块ID,而不需要和其他Namespace合作。一个NameNode失效,不会影响DataNode为集群中其他NameNode提供服务。
DataNode
HDFS集群的工作节点。根据客户端或者是元数据节点的调度存储和检索数据,定期向元数据及客户端发送所存储的文件块的列表。
文件块
HDFS中存储的最小逻辑单元。每个HDFS文件由一个或多个文件块存储。所有的文件块存储在DataNode中。
文件块副本
一个副本是存储在HDFS中的一些文件块拷贝件。同一个文件块存储多个拷贝件主要用于系统的可用性和容错。
NodeManager
负责执行应用程序的容器,同时监控应用程序的资源使用情况(CPU、内存、硬盘、网络)并且向ResourceManager汇报。
ResourceManager
集群的资源管理器,基于应用程序对资源的需求进行调度。资源管理器提供一个调度策略的插件,它负责将集群资源分配给多个队列和应用程序。调度插件可以基于现有的能力调度和公平调度模型。
Kafka分区
每一个Topic可以被分为多个Partition,每个Partition对应一个可持续追加的有序且不可变的log文件。
跟随者
跟随者(Follower)负责处理读请求的模块,配合Leader一起进行写请求处理。也可作为Leader的储备,当Leader故障时从Follower当中选举出Leader,避免出现单点故障。
观察者
观察者(Observer)不参与选举和写请求的投票,只负责处理读请求、并向Leader转发写请求,避免系统处理能力浪费。
离散流
Spark Streaming提供的抽象概念。表示一个连续的数据流,是从数据源获取或者通过输入流转换生成的数据流。从本质上说,一个DStream表示一系列连续的RDD。
堆内存(Heap Memory)
堆是JVM运行时数据区域,所有类实例和数组的内存均从此处分配。初始堆内存根据JVM启动参数-Xms控制。
- 最大堆内存(Maximum Heap Memory):系统可以分配给程序的最大堆内存,JVM启动参数-Xmx指定。
- 分配的堆内存(Committed Heap Memory):为保证程序运行系统分配的堆内存总量,在程序运行期间根据使用情况,会在初始堆内存和最大堆内存之间波动变化。
- 使用的堆内存(Used Heap Memory):当前程序运行时已经使用的堆内存,这个内存小于分配的堆内存。
- 非堆内存:在JVM中堆之外的内存称为非堆内存(Non Heap Memory),JVM自身运行时所需要的内存区域,非堆内存有多个内存池,通常包括以下3个部分:
- 代码缓存区(Code Cache):主要用于存放JIT所编译的代码。默认限制240MB,可以通过JVM启动参数-XX:InitialCodeCacheSize -XX:ReservedCodeCacheSize进行设置。
- 类指针压缩空间(Compressed Class Space):存储类指针的元数据,默认限制1024MB,通过JVM启动参数-XX:CompressedClassSpaceSize进行设置。
- 元空间(Metaspace):用于存放元数据,通过JVM启动参数-XX:MetaspaceSize -XX:MaxMetaspaceSize进行设置。
- 最大非堆内存(Maximum Non Heap Memory):系统可以分配给程序的最大非堆内存。其值为代码缓存区、类指针压缩空间、元空间最大值之和。
- 分配的非堆内存(Committed Non Heap Memory):为保证程序运行的系统非堆内存总量,在程序运行期间根据使用的非堆内存情况,会在初始非堆内存和最大非堆内存之间波动变化。
- 使用非堆内存(Used Non Heap Memory):当前程序运行时已经使用的非堆内存,这个值小于分配的非堆内存。
Hadoop
一个分布式系统框架。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用了集群的高速运算和存储。Hadoop能够对大量数据以可靠的、高效的、可伸缩的方式进行分布式处理。Hadoop是可靠的,因为它假设计算单元和存储会失败,因此维护多个工作数据副本,确保对失败节点重新分布处理;Hadoop是高效的,因为它以并行的方式工作,从而加快处理速度;Hadoop是可伸缩的,能够处理PB级数据。Hadoop主要由HDFS、MapReduce、HBase和Hive等组成。
角色
角色是服务的组成要素,每个服务由一个或多个角色组成。服务通过角色安装到主机(即服务器)上,保证服务正常运行。
集群
将多个服务器集中起来使它们能够像一台服务器一样提供服务的计算机技术。采用集群通常是为了提高系统的稳定性、可靠性、数据处理能力或服务能力。例如,可以减少单点故障、共享存储资源、负荷分担或提高系统性能等。
实例
当一个服务的角色安装到主机上,即形成一个实例。每个服务有各自对应的角色实例。
元数据(Metadata)
元数据又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。