1/** 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19// All to do with the Master. Includes schema management since these 20// changes are run by the Master process. 21 22option java_package = "org.apache.hadoop.hbase.protobuf.generated"; 23option java_outer_classname = "MasterProtos"; 24option java_generic_services = true; 25option java_generate_equals_and_hash = true; 26option optimize_for = SPEED; 27 28import "HBase.proto"; 29import "Client.proto"; 30import "ClusterStatus.proto"; 31import "ErrorHandling.proto"; 32import "Procedure.proto"; 33import "Quota.proto"; 34 35/* Column-level protobufs */ 36 37message AddColumnRequest { 38 required TableName table_name = 1; 39 required ColumnFamilySchema column_families = 2; 40 optional uint64 nonce_group = 3 [default = 0]; 41 optional uint64 nonce = 4 [default = 0]; 42} 43 44message AddColumnResponse { 45} 46 47message DeleteColumnRequest { 48 required TableName table_name = 1; 49 required bytes column_name = 2; 50 optional uint64 nonce_group = 3 [default = 0]; 51 optional uint64 nonce = 4 [default = 0]; 52} 53 54message DeleteColumnResponse { 55} 56 57message ModifyColumnRequest { 58 required TableName table_name = 1; 59 required ColumnFamilySchema column_families = 2; 60 optional uint64 nonce_group = 3 [default = 0]; 61 optional uint64 nonce = 4 [default = 0]; 62} 63 64message ModifyColumnResponse { 65} 66 67/* Region-level Protos */ 68 69message MoveRegionRequest { 70 required RegionSpecifier region = 1; 71 optional ServerName dest_server_name = 2; 72} 73 74message MoveRegionResponse { 75} 76 77/** 78 * Dispatch merging the specified regions. 79 */ 80message DispatchMergingRegionsRequest { 81 required RegionSpecifier region_a = 1; 82 required RegionSpecifier region_b = 2; 83 optional bool forcible = 3 [default = false]; 84} 85 86message DispatchMergingRegionsResponse { 87} 88 89message AssignRegionRequest { 90 required RegionSpecifier region = 1; 91} 92 93message AssignRegionResponse { 94} 95 96message UnassignRegionRequest { 97 required RegionSpecifier region = 1; 98 optional bool force = 2 [default = false]; 99} 100 101message UnassignRegionResponse { 102} 103 104message OfflineRegionRequest { 105 required RegionSpecifier region = 1; 106} 107 108message OfflineRegionResponse { 109} 110 111/* Table-level protobufs */ 112 113message CreateTableRequest { 114 required TableSchema table_schema = 1; 115 repeated bytes split_keys = 2; 116 optional uint64 nonce_group = 3 [default = 0]; 117 optional uint64 nonce = 4 [default = 0]; 118} 119 120message CreateTableResponse { 121 optional uint64 proc_id = 1; 122} 123 124message DeleteTableRequest { 125 required TableName table_name = 1; 126 optional uint64 nonce_group = 2 [default = 0]; 127 optional uint64 nonce = 3 [default = 0]; 128} 129 130message DeleteTableResponse { 131 optional uint64 proc_id = 1; 132} 133 134message TruncateTableRequest { 135 required TableName tableName = 1; 136 optional bool preserveSplits = 2 [default = false]; 137 optional uint64 nonce_group = 3 [default = 0]; 138 optional uint64 nonce = 4 [default = 0]; 139} 140 141message TruncateTableResponse { 142} 143 144message EnableTableRequest { 145 required TableName table_name = 1; 146 optional uint64 nonce_group = 2 [default = 0]; 147 optional uint64 nonce = 3 [default = 0]; 148} 149 150message EnableTableResponse { 151 optional uint64 proc_id = 1; 152} 153 154message DisableTableRequest { 155 required TableName table_name = 1; 156 optional uint64 nonce_group = 2 [default = 0]; 157 optional uint64 nonce = 3 [default = 0]; 158} 159 160message DisableTableResponse { 161 optional uint64 proc_id = 1; 162} 163 164message ModifyTableRequest { 165 required TableName table_name = 1; 166 required TableSchema table_schema = 2; 167 optional uint64 nonce_group = 3 [default = 0]; 168 optional uint64 nonce = 4 [default = 0]; 169} 170 171message ModifyTableResponse { 172} 173 174/* Namespace-level protobufs */ 175 176message CreateNamespaceRequest { 177 required NamespaceDescriptor namespaceDescriptor = 1; 178} 179 180message CreateNamespaceResponse { 181} 182 183message DeleteNamespaceRequest { 184 required string namespaceName = 1; 185} 186 187message DeleteNamespaceResponse { 188} 189 190message ModifyNamespaceRequest { 191 required NamespaceDescriptor namespaceDescriptor = 1; 192} 193 194message ModifyNamespaceResponse { 195} 196 197message GetNamespaceDescriptorRequest { 198 required string namespaceName = 1; 199} 200 201message GetNamespaceDescriptorResponse { 202 required NamespaceDescriptor namespaceDescriptor = 1; 203} 204 205message ListNamespaceDescriptorsRequest { 206} 207 208message ListNamespaceDescriptorsResponse { 209 repeated NamespaceDescriptor namespaceDescriptor = 1; 210} 211 212message ListTableDescriptorsByNamespaceRequest { 213 required string namespaceName = 1; 214} 215 216message ListTableDescriptorsByNamespaceResponse { 217 repeated TableSchema tableSchema = 1; 218} 219 220message ListTableNamesByNamespaceRequest { 221 required string namespaceName = 1; 222} 223 224message ListTableNamesByNamespaceResponse { 225 repeated TableName tableName = 1; 226} 227 228/* Cluster-level protobufs */ 229 230 231message ShutdownRequest { 232} 233 234message ShutdownResponse { 235} 236 237message StopMasterRequest { 238} 239 240message StopMasterResponse { 241} 242 243message BalanceRequest { 244} 245 246message BalanceResponse { 247 required bool balancer_ran = 1; 248} 249 250message SetBalancerRunningRequest { 251 required bool on = 1; 252 optional bool synchronous = 2; 253} 254 255message SetBalancerRunningResponse { 256 optional bool prev_balance_value = 1; 257} 258 259message IsBalancerEnabledRequest { 260} 261 262message IsBalancerEnabledResponse { 263 required bool enabled = 1; 264} 265 266message NormalizeRequest { 267} 268 269message NormalizeResponse { 270 required bool normalizer_ran = 1; 271} 272 273message SetNormalizerRunningRequest { 274 required bool on = 1; 275} 276 277message SetNormalizerRunningResponse { 278 optional bool prev_normalizer_value = 1; 279} 280 281message IsNormalizerEnabledRequest { 282} 283 284message IsNormalizerEnabledResponse { 285 required bool enabled = 1; 286} 287 288message RunCatalogScanRequest { 289} 290 291message RunCatalogScanResponse { 292 optional int32 scan_result = 1; 293} 294 295message EnableCatalogJanitorRequest { 296 required bool enable = 1; 297} 298 299message EnableCatalogJanitorResponse { 300 optional bool prev_value = 1; 301} 302 303message IsCatalogJanitorEnabledRequest { 304} 305 306message IsCatalogJanitorEnabledResponse { 307 required bool value = 1; 308} 309 310message SnapshotRequest { 311 required SnapshotDescription snapshot = 1; 312} 313 314message SnapshotResponse { 315 required int64 expected_timeout = 1; 316} 317 318message GetCompletedSnapshotsRequest { 319} 320 321message GetCompletedSnapshotsResponse { 322 repeated SnapshotDescription snapshots = 1; 323} 324 325message DeleteSnapshotRequest { 326 required SnapshotDescription snapshot = 1; 327} 328 329message DeleteSnapshotResponse { 330} 331 332message RestoreSnapshotRequest { 333 required SnapshotDescription snapshot = 1; 334} 335 336message RestoreSnapshotResponse { 337} 338 339/* if you don't send the snapshot, then you will get it back 340 * in the response (if the snapshot is done) so you can check the snapshot 341 */ 342message IsSnapshotDoneRequest { 343 optional SnapshotDescription snapshot = 1; 344} 345 346message IsSnapshotDoneResponse { 347 optional bool done = 1 [default = false]; 348 optional SnapshotDescription snapshot = 2; 349} 350 351message IsRestoreSnapshotDoneRequest { 352 optional SnapshotDescription snapshot = 1; 353} 354 355message IsRestoreSnapshotDoneResponse { 356 optional bool done = 1 [default = false]; 357} 358 359message GetSchemaAlterStatusRequest { 360 required TableName table_name = 1; 361} 362 363message GetSchemaAlterStatusResponse { 364 optional uint32 yet_to_update_regions = 1; 365 optional uint32 total_regions = 2; 366} 367 368message GetTableDescriptorsRequest { 369 repeated TableName table_names = 1; 370 optional string regex = 2; 371 optional bool include_sys_tables = 3 [default=false]; 372 optional string namespace = 4; 373} 374 375message GetTableDescriptorsResponse { 376 repeated TableSchema table_schema = 1; 377} 378 379message GetTableNamesRequest { 380 optional string regex = 1; 381 optional bool include_sys_tables = 2 [default=false]; 382 optional string namespace = 3; 383} 384 385message GetTableNamesResponse { 386 repeated TableName table_names = 1; 387} 388 389message GetClusterStatusRequest { 390} 391 392message GetClusterStatusResponse { 393 required ClusterStatus cluster_status = 1; 394} 395 396message IsMasterRunningRequest { 397} 398 399message IsMasterRunningResponse { 400 required bool is_master_running = 1; 401} 402 403message ExecProcedureRequest { 404 required ProcedureDescription procedure = 1; 405} 406 407message ExecProcedureResponse { 408 optional int64 expected_timeout = 1; 409 optional bytes return_data = 2; 410} 411 412message IsProcedureDoneRequest { 413 optional ProcedureDescription procedure = 1; 414} 415 416message IsProcedureDoneResponse { 417 optional bool done = 1 [default = false]; 418 optional ProcedureDescription snapshot = 2; 419} 420 421message GetProcedureResultRequest { 422 required uint64 proc_id = 1; 423} 424 425message GetProcedureResultResponse { 426 enum State { 427 NOT_FOUND = 0; 428 RUNNING = 1; 429 FINISHED = 2; 430 } 431 432 required State state = 1; 433 optional uint64 start_time = 2; 434 optional uint64 last_update = 3; 435 optional bytes result = 4; 436 optional ForeignExceptionMessage exception = 5; 437} 438 439message AbortProcedureRequest { 440 required uint64 proc_id = 1; 441 optional bool mayInterruptIfRunning = 2 [default = true]; 442} 443 444message AbortProcedureResponse { 445 required bool is_procedure_aborted = 1; 446} 447 448message ListProceduresRequest { 449} 450 451message ListProceduresResponse { 452 repeated Procedure procedure = 1; 453} 454 455message SetQuotaRequest { 456 optional string user_name = 1; 457 optional string user_group = 2; 458 optional string namespace = 3; 459 optional TableName table_name = 4; 460 461 optional bool remove_all = 5; 462 optional bool bypass_globals = 6; 463 optional ThrottleRequest throttle = 7; 464} 465 466message SetQuotaResponse { 467} 468 469message MajorCompactionTimestampRequest { 470 required TableName table_name = 1; 471} 472 473message MajorCompactionTimestampForRegionRequest { 474 required RegionSpecifier region = 1; 475} 476 477message MajorCompactionTimestampResponse { 478 required int64 compaction_timestamp = 1; 479} 480 481message SecurityCapabilitiesRequest { 482} 483 484message SecurityCapabilitiesResponse { 485 enum Capability { 486 SIMPLE_AUTHENTICATION = 0; 487 SECURE_AUTHENTICATION = 1; 488 AUTHORIZATION = 2; 489 CELL_AUTHORIZATION = 3; 490 CELL_VISIBILITY = 4; 491 } 492 493 repeated Capability capabilities = 1; 494} 495 496service MasterService { 497 /** Used by the client to get the number of regions that have received the updated schema */ 498 rpc GetSchemaAlterStatus(GetSchemaAlterStatusRequest) 499 returns(GetSchemaAlterStatusResponse); 500 501 /** Get list of TableDescriptors for requested tables. */ 502 rpc GetTableDescriptors(GetTableDescriptorsRequest) 503 returns(GetTableDescriptorsResponse); 504 505 /** Get the list of table names. */ 506 rpc GetTableNames(GetTableNamesRequest) 507 returns(GetTableNamesResponse); 508 509 /** Return cluster status. */ 510 rpc GetClusterStatus(GetClusterStatusRequest) 511 returns(GetClusterStatusResponse); 512 513 /** return true if master is available */ 514 rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse); 515 516 /** Adds a column to the specified table. */ 517 rpc AddColumn(AddColumnRequest) 518 returns(AddColumnResponse); 519 520 /** Deletes a column from the specified table. Table must be disabled. */ 521 rpc DeleteColumn(DeleteColumnRequest) 522 returns(DeleteColumnResponse); 523 524 /** Modifies an existing column on the specified table. */ 525 rpc ModifyColumn(ModifyColumnRequest) 526 returns(ModifyColumnResponse); 527 528 /** Move the region region to the destination server. */ 529 rpc MoveRegion(MoveRegionRequest) 530 returns(MoveRegionResponse); 531 532 /** Master dispatch merging the regions */ 533 rpc DispatchMergingRegions(DispatchMergingRegionsRequest) 534 returns(DispatchMergingRegionsResponse); 535 536 /** Assign a region to a server chosen at random. */ 537 rpc AssignRegion(AssignRegionRequest) 538 returns(AssignRegionResponse); 539 540 /** 541 * Unassign a region from current hosting regionserver. Region will then be 542 * assigned to a regionserver chosen at random. Region could be reassigned 543 * back to the same server. Use MoveRegion if you want 544 * to control the region movement. 545 */ 546 rpc UnassignRegion(UnassignRegionRequest) 547 returns(UnassignRegionResponse); 548 549 /** 550 * Offline a region from the assignment manager's in-memory state. The 551 * region should be in a closed state and there will be no attempt to 552 * automatically reassign the region as in unassign. This is a special 553 * method, and should only be used by experts or hbck. 554 */ 555 rpc OfflineRegion(OfflineRegionRequest) 556 returns(OfflineRegionResponse); 557 558 /** Deletes a table */ 559 rpc DeleteTable(DeleteTableRequest) 560 returns(DeleteTableResponse); 561 562 /** Truncate a table */ 563 rpc truncateTable(TruncateTableRequest) 564 returns(TruncateTableResponse); 565 566 /** Puts the table on-line (only needed if table has been previously taken offline) */ 567 rpc EnableTable(EnableTableRequest) 568 returns(EnableTableResponse); 569 570 /** Take table offline */ 571 rpc DisableTable(DisableTableRequest) 572 returns(DisableTableResponse); 573 574 /** Modify a table's metadata */ 575 rpc ModifyTable(ModifyTableRequest) 576 returns(ModifyTableResponse); 577 578 /** Creates a new table asynchronously */ 579 rpc CreateTable(CreateTableRequest) 580 returns(CreateTableResponse); 581 582 /** Shutdown an HBase cluster. */ 583 rpc Shutdown(ShutdownRequest) 584 returns(ShutdownResponse); 585 586 /** Stop HBase Master only. Does not shutdown the cluster. */ 587 rpc StopMaster(StopMasterRequest) 588 returns(StopMasterResponse); 589 590 /** 591 * Run the balancer. Will run the balancer and if regions to move, it will 592 * go ahead and do the reassignments. Can NOT run for various reasons. 593 * Check logs. 594 */ 595 rpc Balance(BalanceRequest) 596 returns(BalanceResponse); 597 598 /** 599 * Turn the load balancer on or off. 600 * If synchronous is true, it waits until current balance() call, if outstanding, to return. 601 */ 602 rpc SetBalancerRunning(SetBalancerRunningRequest) 603 returns(SetBalancerRunningResponse); 604 605 /** 606 * Query whether the Region Balancer is running. 607 */ 608 rpc IsBalancerEnabled(IsBalancerEnabledRequest) 609 returns(IsBalancerEnabledResponse); 610 611 /** 612 * Run region normalizer. Can NOT run for various reasons. Check logs. 613 */ 614 rpc Normalize(NormalizeRequest) 615 returns(NormalizeResponse); 616 617 /** 618 * Turn region normalizer on or off. 619 */ 620 rpc SetNormalizerRunning(SetNormalizerRunningRequest) 621 returns(SetNormalizerRunningResponse); 622 623 /** 624 * Query whether region normalizer is enabled. 625 */ 626 rpc IsNormalizerEnabled(IsNormalizerEnabledRequest) 627 returns(IsNormalizerEnabledResponse); 628 629 /** Get a run of the catalog janitor */ 630 rpc RunCatalogScan(RunCatalogScanRequest) 631 returns(RunCatalogScanResponse); 632 633 /** 634 * Enable the catalog janitor on or off. 635 */ 636 rpc EnableCatalogJanitor(EnableCatalogJanitorRequest) 637 returns(EnableCatalogJanitorResponse); 638 639 /** 640 * Query whether the catalog janitor is enabled. 641 */ 642 rpc IsCatalogJanitorEnabled(IsCatalogJanitorEnabledRequest) 643 returns(IsCatalogJanitorEnabledResponse); 644 645 /** 646 * Call a master coprocessor endpoint 647 */ 648 rpc ExecMasterService(CoprocessorServiceRequest) 649 returns(CoprocessorServiceResponse); 650 651 /** 652 * Create a snapshot for the given table. 653 */ 654 rpc Snapshot(SnapshotRequest) returns(SnapshotResponse); 655 656 /** 657 * Get completed snapshots. 658 * Returns a list of snapshot descriptors for completed snapshots 659 */ 660 rpc GetCompletedSnapshots(GetCompletedSnapshotsRequest) returns(GetCompletedSnapshotsResponse); 661 662 /** 663 * Delete an existing snapshot. This method can also be used to clean up an aborted snapshot. 664 */ 665 rpc DeleteSnapshot(DeleteSnapshotRequest) returns(DeleteSnapshotResponse); 666 667 /** 668 * Determine if the snapshot is done yet. 669 */ 670 rpc IsSnapshotDone(IsSnapshotDoneRequest) returns(IsSnapshotDoneResponse); 671 672 /** 673 * Restore a snapshot 674 */ 675 rpc RestoreSnapshot(RestoreSnapshotRequest) returns(RestoreSnapshotResponse); 676 677 /** 678 * Determine if the snapshot restore is done yet. 679 */ 680 rpc IsRestoreSnapshotDone(IsRestoreSnapshotDoneRequest) returns(IsRestoreSnapshotDoneResponse); 681 682 /** 683 * Execute a distributed procedure. 684 */ 685 rpc ExecProcedure(ExecProcedureRequest) returns(ExecProcedureResponse); 686 687 /** 688 * Execute a distributed procedure with return data. 689 */ 690 rpc ExecProcedureWithRet(ExecProcedureRequest) returns(ExecProcedureResponse); 691 692 /** 693 * Determine if the procedure is done yet. 694 */ 695 rpc IsProcedureDone(IsProcedureDoneRequest) returns(IsProcedureDoneResponse); 696 697 /** return true if master is available */ 698 /** rpc IsMasterRunning(IsMasterRunningRequest) returns(IsMasterRunningResponse); */ 699 700 /** Modify a namespace's metadata */ 701 rpc ModifyNamespace(ModifyNamespaceRequest) 702 returns(ModifyNamespaceResponse); 703 704 /** Creates a new namespace synchronously */ 705 rpc CreateNamespace(CreateNamespaceRequest) 706 returns(CreateNamespaceResponse); 707 708 /** Deletes namespace synchronously */ 709 rpc DeleteNamespace(DeleteNamespaceRequest) 710 returns(DeleteNamespaceResponse); 711 712 /** Get a namespace descriptor by name */ 713 rpc GetNamespaceDescriptor(GetNamespaceDescriptorRequest) 714 returns(GetNamespaceDescriptorResponse); 715 716 /** returns a list of namespaces */ 717 rpc ListNamespaceDescriptors(ListNamespaceDescriptorsRequest) 718 returns(ListNamespaceDescriptorsResponse); 719 720 /** returns a list of tables for a given namespace*/ 721 rpc ListTableDescriptorsByNamespace(ListTableDescriptorsByNamespaceRequest) 722 returns(ListTableDescriptorsByNamespaceResponse); 723 724 /** returns a list of tables for a given namespace*/ 725 rpc ListTableNamesByNamespace(ListTableNamesByNamespaceRequest) 726 returns(ListTableNamesByNamespaceResponse); 727 728 /** Apply the new quota settings */ 729 rpc SetQuota(SetQuotaRequest) returns(SetQuotaResponse); 730 731 /** Returns the timestamp of the last major compaction */ 732 rpc getLastMajorCompactionTimestamp(MajorCompactionTimestampRequest) 733 returns(MajorCompactionTimestampResponse); 734 735 /** Returns the timestamp of the last major compaction */ 736 rpc getLastMajorCompactionTimestampForRegion(MajorCompactionTimestampForRegionRequest) 737 returns(MajorCompactionTimestampResponse); 738 739 rpc getProcedureResult(GetProcedureResultRequest) 740 returns(GetProcedureResultResponse); 741 742 /** Returns the security capabilities in effect on the cluster */ 743 rpc getSecurityCapabilities(SecurityCapabilitiesRequest) 744 returns(SecurityCapabilitiesResponse); 745 746 /** Abort a procedure */ 747 rpc AbortProcedure(AbortProcedureRequest) 748 returns(AbortProcedureResponse); 749 750 /** returns a list of procedures */ 751 rpc ListProcedures(ListProceduresRequest) 752 returns(ListProceduresResponse); 753} 754