设为首页 加入收藏

TOP

HBasecreateTable的服务器端实现源码分析(二)
2015-11-21 01:58:28 来源: 作者: 【 】 浏览:1
Tags:HBasecreateTable 服务器 实现 源码 分析
户的权限并记录。
3. 获取table write锁
4. 检查表是否存在,已存在则抛出异常
5. 为了防止多个线程发起建同一个表的情况,可以在建表未成功之前可以先设置该table enable,这样其他线程就不能再建表。

建表之前的准备工作到此结束,一下分析具体建表流程

2.2 建表具体实现handleCreateTable过程分析

handleCreateTable,其实主要做了三件事,1.在磁盘上建表,2.meta表,3.为新建的表分配对应的regionserver。详细代码如下:
这块的代码是分为八个小步骤,我们一一分析,

1.创建表描述符

// 1. Create Table Descriptor Path tempTableDir = FSUtils.getTableDir(tempdir, tableName); new FSTableDescriptors(this.conf).createTableDescriptorForTableDirectory( tempTableDir, this.hTableDescriptor, false); Path tableDir = FSUtils.getTableDir(fileSystemManager.getRootDir(), tableName); 

首先创建一个临时的文件夹,然后创建对应的文件表描述符,最后创建该表在文件系统中的路径,

HBase的表的数据对应在文件系统中的一个文件夹下,该文件夹也就是表名

2.创建Regions

// 2. Create Regions List
      
        regionInfos = handleCreateHdfsRegions(tempdir, tableName);
      

为table 创建in-disk数据结构,内部具体创建了存储table数据的HRegion,并返回hregioninfo的信息

3.将步骤1中的临时文件夹移到HBase的根目录下,如果hregions创建成功的话,继续一下几个步骤:

if (regionInfos != null && regionInfos.size() > 0) { // 4. Add regions to META addRegionsToMeta(regionInfos); // 5. Add replicas if needed regionInfos = addReplicas(hTableDescriptor, regionInfos); // 6. Trigger immediate assignment of the regions in round-robin fashion ModifyRegionUtils.assignRegions(assignmentManager, regionInfos); }
将新建的hregion信息注册到hbase的meta表中; 有必要的话创建这些hregion的副本 为新建的hregions分配对应的regionserver 在zookeeper中将新建的table设置为enable状态:
// 7. Set table enabled flag up in zk. try { assignmentManager.getTableStateManager().setTableState(tableName, ZooKeeperProtos.Table.State.ENABLED); } catch (CoordinatedStateException e) { throw new IOException("Unable to ensure that " + tableName + " will be" + " enabled because of a ZooKeeper issue", e); }

8.跟新tabledescripter cache

// 8. Update the tabledescriptor cache. ((HMaster) this.server).getTableDescriptors().get(tableName);

至此服务器端数据库表的建立过程源码分析结束

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇memcache安装和使用 下一篇数据库的范式详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: