第十一课记录 HBase基础与搭建

本文介绍了NoSQL数据库的基本概念及几种常见NoSQL数据库的特点,并详细讲述了HBase的安装配置过程,包括本地模式、伪分布式模式及全分布式模式。
HBase 基础与搭建


一、NoSQL的简介和常见的NoSQL

        1) 什么是NoSQL数据库?
                (*) 什么是关系型数据库? 基于关系模型提出的一种数据库
                (*) NoSQL数据库: 最大特点: 保存数据 key ---> value
                                                                跟关系型数据库最大的区别:NoSQL不支持事务
                (*) 常见的NoSQL数据库:
                        (1) HBase:基于Hadoop之上的NoSQL。 HBase表 ---> HDFS的目录  
                                            基于HBase的MapReduce程序
                             面向列
                        (2) Redis: 基于内存  ---> 提高性能。 Redis的前身是: MemCached(不支持持久化)
                        (3) MongoDB: 它是一个文档型(BSON)的数据库,BSON就是JSON的二进制.
                                      举例: 需求: 设置表结构,来保存电影的信息(MongoDB支持对象中包含N层对象,而关系型数据库需要以主从表方式存储数据)
                        (4) Cassandra: 跟HBase类似,面向列,它不需要基于Hadoop之上。  


二、HBase的体系结构和表结构






三、搭建HBase的环境: 3种模式

        1) 本地模式  (1台机器就可以,不需要Hadoop(HDFS)的支持,他是保存在本地)
                特点:不需要Hadoop (HDFS)

                安装步骤:
                        (1) 解压:           
                                #tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz -C ~/training/ 
                        (2) 设置环境变量:   
                                #vi ~/.bash_profile
                                        HBASE_HOME=/root/training/hbase-0.96.2-hadoop2-bin
                                        export HBASE_HOME
 
                                        PATH=$HBASE_HOME/bin:$PATH
                                        export PATH
 
                        (3) 配置:
                                #vi /root/training/hbase-0.96.2-hadoop2/conf/hbase-site.xml

                                <configuration>
                                        <property>
                                                <name>hbase.rootdir</name>
                                                <value>file:///root/training/hbase-0.96.2-hadoop2/data</value>
                                        </property>

                                </configuration>




                        (4) 启动:
                                #source ~/.bash_profile
                                #./start-hbase.sh

                                进入HBASE SHELL管理台
                                #hbase shell

                                可以创建表试试了:
                                        create 'student','info','grade'
                                        put 'student','stu001','info:name','tom'
                                        put 'student','stu001','info:chinese','80'
                                        scan 'student'
    
   

           2) 伪分布式模式  (1台机器就可以,一定需要Hadoop的支持)


           3) 全分布式模式  (3台机器以上,一定需要Hadoop的支持)
   
<think> 嗯...用户这次问的是HBase第一次启动的具体耗时。这个问题其实挺专业的,说明用户可能在搭建HBase环境时遇到了实际困扰。 用户提供的四个引用素材里,引用[4]提到了完全分布式搭建流程,但没具体说启动时间;引用[2]倒是提到WAL文件的TTL默认是10分钟,但这属于启动后的配置参数。看来需要结合HBase的启动机制来解释。 HBase首次启动确实比后续启动慢很多,主要卡在三个地方:首先是ZooKeeper注册元数据,尤其是新建集群时;其次是HMaster初始化命名空间和系统表;最后是RegionServer加载region的冷启动过程。分布式环境下网络通讯和磁盘IO会成为瓶颈。 用户没说明是单机还是集群部署,不过从问题性质看大概率是集群。实测中,一个三节点集群首次启动可能耗时2-5分钟,具体取决于硬件配置。可以建议用户用hbase-daemon.sh启动日志观察时间戳,或者检查master日志里的"Master has completed initialization"关键节点。 突然想到用户可能是开发测试场景,如果只是本地伪集群的话,首次启动1分钟左右也算正常。不过最好提醒用户注意超时问题——如果超过10分钟还没起来,那肯定是出错了,需要检查防火墙或资源冲突。 </think> HBase 第一次启动所需的时间**没有固定值**,它高度依赖于以下因素,通常范围在**几十秒到十几分钟不等**: 1. **集群规模配置**: * **节点数量**:集群规模越大(RegionServers 越多),启动协调过程越长。 * **硬件性能**:CPU、内存、磁盘I/O(特别是SSD vs HDD)速度直接影响启动各阶段的执行速度。 * **网络状况**:节点间通讯速度对启动协调至关重要。 2. **HBase 自身初始化流程**: * **ZooKeeper 会话建立**:HBase Master 和 RegionServers 需要先连接到 ZooKeeper 集群并建立会话。 * **HMaster 选举激活**:首次启动或没有活跃 Master 时,需要选出主 Master 并激活。 * **HBase 系统表初始化**:Master 需要初始化 `hbase:meta` 系统表(存储所有用户表的 Region 信息),这是关键步骤。首次启动时需要创建这些表。 * **RegionServers 注册 Region 分配**: * RegionServers 启动后向 Master 注册。 * Master 将系统表(`hbase:namespace`, `hbase:meta`)的 Region 分配给 RegionServers。 * `hbase:meta` 表上线后,才能处理用户表的 Region 分配。 * **WAL (Write-Ahead Log) 初始化**:每个 RegionServer 需要为自己的 Region 初始化 WAL 文件和相关处理器(如 Replication 相关的,参见引用[2]中的备份机制)。 * **Region 上线**:分配到 Region 的 RegionServers 需要打开这些 Region(加载必要的资源)。 3. **数据量表结构**: * **系统表数据量**:首次启动时系统表是空的,初始化较快。如果已有大量用户表或快照信息存储在系统表中,初始化会慢些。 * **用户表 Region 数量**:如果启动时已有用户表,且 Region 数量非常多,Master 分配 Region 和 RegionServers 打开 Region 的过程会显著延长启动时间。 4. **并发资源竞争**: * 多个 RegionServers 同时启动、向 Master 注册、请求分配 Region 时,如果 Master 或 ZooKeeper 负载过高,或集群资源(CPU、网络带宽)紧张,会拖慢整体启动速度。 **总结估计**: * **小型测试集群(1 Master, 1-2 RegionServers, 本地磁盘/SATA SSD)**:首次启动通常在 **1-3分钟** 内完成。 * **中型生产集群(多 RegionServers, 较好硬件/SAS SSD或NVMe)**:首次启动可能在 **3-10分钟** 左右。 * **大型集群(数十或上百 RegionServers, 大量预分区的表)**:首次启动可能需要 **10分钟以上甚至更久**。 **如何获取实际启动时间?** 1. **查看 Master 日志 (`hbase-master-<hostname>.log`)**: * 搜索 `Master startup took XXXXms` 或类似的关键字。这是最准确的指标,它记录了从 Master 进程开始到完成初始化(包括必要的系统表操作)所耗费的时间。 * 关注日志中关于初始化 `hbase:meta`、分配 Regions 等关键步骤的时间戳。 2. **观察 Shell/Web UI**: * 在 `hbase shell` 中执行 `status` 命令,直到看到所有 RegionServers 都列出来并且状态正常。 * 访问 Master 的 Web UI (默认端口 16010),观察 RegionServers 列表是否完整,`hbase:meta` 表是否在线。 **引用说明**: * 引用[2]提到的 WAL 生命周期管理和 Replication 机制,在 RegionServer 启动过程中涉及 WAL 处理器的初始化,这对启动时间也有一定影响,尤其是在配置了 Replication 且源集群日志积累较多时(虽然首次启动通常无此问题)[^2]。 **相关问题**: 1. HBase 启动过程主要包含哪些关键阶段?每个阶段耗时的影响因素是什么? 2. 如何优化 HBase 集群的启动速度?(例如配置调整、硬件选型) 3. 监控 HBase 启动状态有哪些有效的方法?除了日志,还有哪些关键指标? 4. HBase Master 和 RegionServer 的启动流程有什么不同?哪个通常更耗时? 5. ZooKeeper 的性能和配置对 HBase 启动时间有多大影响?如何排查相关瓶颈?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值