HMaster -- ServerManager
1. 在HMaster的构造方法中创建.
2. 作用
a. serversToServerInfo -- ConcurrentHashMap<String, HServerInfo>(),保存RegionServer的信息,server names to server info,
b. deadServers -- Collections.synchronizedSet(new HashSet<String>()),Set of known dead servers.这些server可能只是因为网络故障引起的,服务器并没有dead.
c. serversToLoad -- ConcurrentHashMap<String, HServerLoad>() ,每个Region Server上的负载信息.
d. ServerMonitor -- 定时扫描RegionServer的状态,打印现在服务的region server的数量及deadServers信息.
e. OldLogsCleaner -- 定时清理/hbase/.oldlogs目录下的日志。
f. 对每一个加入到serversToServerInfo中的region server,都会在其对于的Zookeeper锁上(路径为/hbase/rs/1285666002331,其中1285666002331为region server启动时的时间戳,数据信息为HServerInfo.ServerAddress 的toString()--192.168.1.23:60020)注册一个ServerExpirer (implements Watcher),只监听EventType.NodeDeleted事件,处理节点因为故障使得其与Zookeeper的连接Session expired,更新完ServerManager保存的对应表后,向this.master.getRegionServerOperationQueue().put(new ProcessServerShutdown(master, info));提交请求.
g. HMaster对HRegionServer之间定期交流的信息(heartbeat)也由类的方法处理(这里以后补充)
3. 内部类及相关类
3.1 ServerMonitor extends Chore ,是一个线程服务,以daemon模式运行
定时运行(通过Sleeper.sleep(final long startTime)来挂起特定时间,具体由sleepLock.wait(waitTime);来实现,不会占用锁),时间间隔由配置 hbase.master.meta.thread.rescanfrequency 指定,默认为60秒.
只是输出平均regionLoad,及现在服务的server,和deadServer(可能是因为网络原因中断的server),这也是HMaster的log日志中每60秒输出的信息.
2010-09-30 15:12:54,508 INFO org.apache.hadoop.hbase.master.ServerManager: 4 region servers, 0 dead, average load 2.5
这里的功能是不是太简单了。
3.2 OldLogsCleaner extends Chore ,以daemon模式运行
旧的HLog的清理者,定时(频率与ServerMonitor的配置参数一样)扫描/hbase/.oldlogs目录下的文件,通过LogCleanerDelegate的boolean isLogDeletable(Path filePath)来判断文件是不是可以清除,具体的实现由"hbase.master.logcleanerplugin.impl"来定义,默认为TimeToLiveLogCleaner,具体实现为取每个HLog文件名中的最后的时间戳,与当前时间对比,如果超出了保留时间ttl("hbase.master.logcleaner.ttl", 600000),则认为可以删除
OldLogsCleaner 删除的逻辑为
条件1.目录下的文件如果名称由HLog.validateHLogFilename(String filename)判断,符合格式(".*\\.\\d*"),并且LogCleanerDelegate判断为可删除,由文件被删除.
不符合条件1的文件将全部被删除.
3.3 HServerInfo 类
/**
* HServerInfo is meta info about an {@link HRegionServer}. It is the token
* by which a master distingushes a particular regionserver from the rest.
* It holds hostname, ports, regionserver startcode, and load. Each server has
* a <code>servername</code> where servername is made up of a concatenation of
* hostname, port, and regionserver startcode. This servername is used in
* various places identifying this regionserver. Its even used as part of
* a pathname in the filesystem. As part of the initialization,
* master will pass the regionserver the address that it knows this regionserver
* by. In subsequent communications, the regionserver will pass a HServerInfo
* with the master-supplied address.
*/
HServerInfo是HRegionServer的唯一标识信息,HMaster用它来区分不同的HRegionServer,servername就是那个唯一标识,它由hostname, port, and regionserver startcode组成,中间用,分隔开.
其中a.hostname这里是/etc/hosts中设置的主机名称,例如datanode-1,这样使得如果修改hosts文件,将会使HMaster有非常大的变动,看.logs目录下的HLog文件也是以servername来创建的.
b.port端口号,默认为60020
c.startcode 为HRegionServer启动时的时间戳.
HServerInfo由HRegionServer启动时创建,并通过RPC提交给HMaster.
3.4 HRegionInfo
HRegion information.
* Contains HRegion id, start and end keys, a reference to this
* HRegions' table descriptor, etc.
New region name format:
* <tablename>,,<startkey>,<regionIdTimestamp>.<encodedName>.
* where,
* <encodedName> is a hex version of the MD5 hash of
* <tablename>,<startkey>,<regionIdTimestamp>
分享到:
相关推荐
- `hbase-server.jar`:服务器端组件,包含HMaster和HRegionServer所需的服务。 - `hbase-region-server.jar`:HRegionServer的具体实现。 - `hbase-rest.jar`:提供RESTful API,使得非Java应用也能访问HBase。 - `...
HBase的核心组成部分包括HMaster、HRegionServer、Write-Ahead Logs (WALs)、HFiles、Store、MemStore和Region等。 ##### 1.2.1 HMaster - **监控RegionServer**:跟踪并管理活跃的RegionServer实例。 - **故障...
- **HMASTER-LOCK**:指示正在进行锁定序列交易的信号。 - **HSPLIT-x**:从设备发出的要求完成SPLIT交易的请求信号,这是AHB总线的一个重要特性,能够防止系统死锁并充分利用总线资源。 #### 四、仲裁过程 1. **...
- 选择合适的服务器节点,通常需要一个或多个HMaster节点和多个HRegionServer节点。 - 在所有参与HBase集群的节点上创建hbase用户,并确保这些用户之间建立了SSH免密码登录。 #### 三、安装步骤 1. **上传并解压...
- HMaster 还负责管理 Region Server 的启动和关闭。 - **ZooKeeper**: - ZooKeeper 服务用于协调 HBase 集群中的各种服务。 - 它主要负责选举 HMaster、管理集群状态信息等。 - **HDFS**: - HDFS 作为 HBase ...
HBase Shell是一个封装了Java客户端API的JRuby应用软件,在HBase的HMaster主机上通过命令行输入hbase shell,即可进入HBase命令行环境。 HBase创建表(create命令) ------------------------ 在HBase中,基本组成...
- 监控Regionserver的状态变更,并通知HMaster。 - 存储Hyperbase的schema和table元数据。 通过以上知识点的梳理,我们可以清晰地了解到Hyperbase作为一种分布式数据库,在大数据领域的应用优势以及其实现机制的...
- **HMaster**: 管理全局的HBase集群,负责HRegion的分配、RegionServer监控、负载均衡和清理垃圾文件。 - **HRegionServer**: 实际处理数据读写请求的节点,可以包含多个HRegion,共享HLog。 - **HRegion**: ...
文档提到了三种实现 NN 高可用的方式,但最终选择了基于 QJM (Quorum Journal Manager) 的共享日志方案,具体步骤如下: 1. **Active NN** 将日志写入本地以及多个 JournalNode 上。 2. **Standby NN** 定期从 ...
- 如果 RegionServer 出现故障,HMaster 会将该节点上的 Region 迁移到其他可用的 RegionServer 上。 3. **Zookeeper** - Zookeeper 是 HBase 集群中的一个协调服务。 - 它主要负责监控 HMaster 的状态,以及为...
7. **Master节点**:HMaster是HBase的主控节点,负责Region的分配、 Region Server的监控以及元数据的维护。 8. **表和列族**:在HBase中,数据以表格形式存储,每个表由一个或多个列族组成。列族是预分配的,而列...
1. **Master节点(HMaster)**:HMaster是HBase集群的管理节点,负责区域服务器的调度、表的管理(创建、删除、分裂等)以及监控区域服务器的状态。当区域服务器出现故障时,HMaster会进行故障恢复,重新分配该...
当Region Server出现故障时,HMaster会负责恢复操作。 4. **HRegionServer**:HRegionServer是HBase的主要工作节点,它们直接处理用户的I/O请求,读写数据到HDFS。每个HRegionServer管理多个HRegion,每个HRegion...
随着数据量的增长,一个表会被划分成多个Region,每个Region由一个范围(start key, end key]表示,并且会被分配到不同的Region Server上进行管理。 - **-ROOT- Table**: 存储.META.表的位置信息。 - **.META. ...
/home/zookeeper-xxx/bin/./zkServer.sh start ``` 2. **启动HDFS集群** 在HDFS的NameNode上启动HDFS集群。 ```sh /root/hadoop/sbin/./start-dfs.sh ``` 3. **启动HBase** 在HBase的主节点上启动HBase...
- **通信**:与 HMaster 进行管理通信,与 Region Server 进行数据读写。 2. **ZooKeeper**: - **角色**:协调服务,负责选举 HMaster、系统容错等关键任务。 3. **HMaster**: - **地位**:集群中的主控节点...
- 可以通过 `jps` 命令查看是否成功启动了HMaster和HRegionServer进程。 6. **使用HBase shell**: - 打开终端,输入 `hbase shell` 进入HBase命令行界面,可以进行创建表、插入数据、查询等操作。 7. **监控和...
- SQL Server 是由微软开发的一种关系数据库管理系统。 - **C、Oracle** - Oracle 数据库也是关系型数据库管理系统,支持SQL标准。 - **D、** - 该选项未给出具体内容,但根据题目要求应为非关系型数据库。正确...
- 启动HBase,执行`start-hbase.sh`,检查`jps`命令确认HMaster和HRegionServer是否正常启动。 5. **使用HBase** - 使用HBase shell,一个交互式的命令行工具,执行增删改查操作。 - 通过Java API或者HBase的...
- **HMaster**:在HBase中,HMaster处理Region Server的分配和负载均衡,确保数据处理的高效性。 3. **性能优化** - **硬件选择**:高速SAS硬盘用于系统盘和数据存储,保证读写效率;使用ECC内存减少数据错误;...