Skip to content

WaspAdmin

jaywong85 edited this page Jul 23, 2013 · 4 revisions

客户端提供了API的模式来管理集群,相比RDBMS中的DDL– 客户端提供的具有管理功能的API更像是DML。 WaspAdmin提供了建表、创建列簇、检查表是否存在、修改表结构和列簇结构、删除表等功能。下面我们对这些功能按操作关联性分组进行介绍。 基本操作 使用管理的API需要首先实例化WaspAdmin类,构造函数如下:

WaspAdmin(Configuration conf) throws MasterNotRunningException,ZooKeeperConnectionException 已有Configuration实例提供了足够的配置信息,所以当前的API可以通过使用ZooKeeper的相关配置信息查找集群,类似于普通客户端API的使用。具有管理功能的API实例应该在使用过后进行销毁,换言之,这个实例不应该长期保留。 表操作 在开始工作前,首先要做的是建表。以下API就是建表相关的方法: void createTable(FTable desc)//默认为一个分区 void createTable(FTable desc,byte[] startKey,byte[] endKey,int numRegions)//预分区的方式建表 void createTable(FTable desc,byte[][] splitKeys)//使用已经分区好的分割键建表 void createTableAsync(FTable desc,byte[][] splitKeys)////使用已经分区好的分割键异步建表 建表后用户通过下面的帮助方法可以获取所有表的列表、以及已经创建表的表描述符,或检查该表是否存在:

boolean tableExists(String tableName) boolean tableExists(byte[] tableName) FTable[] listTables() FTable getTableDescriptor(byte[] tableName) 描述过建表的过程后我们要提一下删除表的操作,对应在WaspAdmin中的API如下:

void deleteTable(String tableName) void deleteTable(byte[] tableName) 在删表之前需要确认这张表是否已经被禁用(disabled),设置该参数可通过如下方法进行:

void disableTable(String tableName) void disableTable(byte[] tableName) void disableTableAsync(String tableName) void disableTableAsync(byte[] tableName) 表被设置为禁用,但并不想删除,还可以通过以下方式重新启用表:

void enableTable(String tableName) void enableTable(byte[] tableName) void enableTableAsync(String tableName) void enableTableAsync(byte[] tableName) 此操作在转移这张表的EntityGroup到其他可用服务器上比较有用。此外如下的方法可以检查表的状态:

boolean isTableEnabled(String tableName) boolean isTableEnabled(byte[] tableName) boolean isTableDisabled(String tableName) boolean isTableDisabled(byte[] tableName) boolean isTableAvailable(byte[] tableName) boolean isTableAvailable(String tableName) 建表后如果需要修改表结构必须要删除表结构然后重建,要么可以采用如下方法改变表结构:

modifyTable(byte[] tableName, FTable htd) 模式操作 与列相关操作的方法集合:

void addColumn(String tableName,Field column) void addColumn(byte[] tableName,Field column) void deleteColumn(String tableName,String columnName) void deleteColumn(byte[] tableName,byte[] columnName) void modifyColumn(String tableName,Field descriptor) void modifyColumn(byte[] tableName,Field descriptor) void createIndex(Index index) void deleteIndex(final String tableName, final String indexName) 集群管理 以下操作都是面向高级用户提供给的,读者最好谨慎使用

ClusterStatus getClusterStatus()//获取集群信息 void closeEntityGroup(String entityGroupName,String serverName)//关闭一个entityGroup分区 void closeEntityGroup(byte[] entityGroupName,String serverName) void closeEntityGroup(final ServerName sn, final EntityGroupInfo egi) boolean closeEntityGroupWithEncodedEntityGroupName(final String encodedEntityGroupName, final String serverName) void assign(byte[] encodedEntityGroupName,boolean force)//把一个entityGroup分区指定到某个机器上线 void unassign(byte[] encodedEntityGroupName,boolean force)//指定一个entityGroup下线 void move(final byte[] encodedEntityGroupName, final byte[] destServerName)//移动一个entityGroup分区到另一个机器中 boolean balanceSwitch(boolean b)//如果均衡器已打开,则关闭,如果关闭则打开 boolean balancer()//运行均衡程序 void split(final byte[] tableNameOrEntityGroupName, final byte[] splitPoint)//分割一个entityGroup分区

Clone this wiki locally