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