[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-15 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 22: Code-Review+2

(1 comment)

Looks good to me!  Thank you very much for this useful contribution!

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@374
PS18, Line 374:   required consensus.RaftPeerPB.Role role = 2;
> > Adar has already pointed at this in prior review iterations, and I
Thanks a lot!!  I think it looks cleaner now.



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 22
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Tue, 16 Jul 2019 02:48:38 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-15 Thread Alexey Serbin (Code Review)
Alexey Serbin has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Reviewed-on: http://gerrit.cloudera.org:8080/13632
Tested-by: Kudu Jenkins
Reviewed-by: Adar Dembo 
Reviewed-by: Alexey Serbin 
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 642 insertions(+), 129 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Adar Dembo: Looks good to me, but someone else must approve
  Alexey Serbin: Looks good to me, approved

-- 
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 23
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-15 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 22: Code-Review+1


--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 22
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Mon, 15 Jul 2019 21:33:29 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-15 Thread Yao Xu (Code Review)
Yao Xu has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 22:

(18 comments)

http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG@7
PS18, Line 7: Place tablet replicas based on dimension
> BTW, what would you expect from the rebalancer with regard to
 > balancing the distribution of the replicas in each dimension?

Emmm, maybe we just need to be able to specify the dimension that we want to 
balance.


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h
File src/kudu/client/client.h:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1215
PS18, Line 1215:   KuduPartialRow* lower_bound,
   :   KuduPartialRow* upper_bound,
> remove
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1238
PS18, Line 1238:   ///   the lower bound is unbounded. If any of the columns 
are unset, the
   :   ///   logical minimum value for the column's type will be 
used by default.
   :   /// @param [in] upper_bound
   :   ///   The upper bound of the range partition to add. If the 
row is empty, then
   :   ///   the upper bound is unbounded. If any of the individual 
columns are
   :   ///   unset, the logical minimum value for the column' type 
will be used by
   :   ///   default.
> Could you replace this by:
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146
PS18, Line 146: the ta
> nit: the tablet
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146
PS18, Line 146: et. Used for dimension-specific
  :   // placement of the tablet's replicas.
> How about:
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@368
PS18, Line 368: /
  :
  : message TabletLocationsPB {
> This is just an implementation detail.  The information could be kept in ru
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@374
PS18, Line 374:   required consensus.RaftPeerPB.Role role = 2;
> Adar has already pointed at this in prior review iterations, and I
 > tend agree with him here. IMO, there is not much value in
 > introducing this field once there is explicit specification of
 > dimension labels for tables and extra tablets (partitions).
 >
 > What if we drop both this field and also the 
 > --master_place_tablet_replicas_based_on_dimension
 > master's flag?
 >
 > One additional argument to drop these is to think how we should
 > report on the status of tables' creation and adding extra
 > partitions to clients in case of they specify dimension labels when
 > master is run with --master_place_tablet_replicas_based_on_dimension=false
 > ?

Ok, I'm will drop this field and  
'--master_place_tablet_replicas_based_on_dimension'.


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@482
PS18, Line 482:
> Maybe: Used for dimension-specific placement of tablet replicas correspondi
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614
PS18, Line 614:
> the corresponding tablet
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614
PS18, Line 614:
  : optional StepType type = 1 [ default = UNKNOWN ];
> How about:
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc
File src/kudu/master/master_service.cc:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc@255
PS18, Line 255: std::move(TabletNumByDimensionMap(req->num_live_table
> Do you think we still need this even if the dimension labels are specified
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/placement_policy-test.cc
File src/kudu/master/placement_policy-test.cc:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/placement_policy-test.cc@261
PS18, Line 261:
> nit: I think this is not needed?  It will be initialized as empty if omitte
Done


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/placement_policy-test.cc@291
PS18, Line 291:   ASSERT_TRUE(extra_ts);
  :   ASSERT_EQ("ts2", extra_ts->permanent_uuid());
  : }
  :
  : {
  :   TSDescriptorVector existing(all.begin(), all.end());
  :   shared_ptr extra_ts;
  :   const auto s = policy.PlaceExtraTabletReplica(existing, 
label, _ts);
  :   ASSERT_TRUE(s.IsNotFound()) << s.ToString();
  :   ASSERT_FALSE(extra_ts);

[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-15 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#22).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 642 insertions(+), 129 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/22
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 22
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-15 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#21).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 642 insertions(+), 130 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/21
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 21
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-14 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#20).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 639 insertions(+), 128 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/20
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 20
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-14 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#19).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 638 insertions(+), 127 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/19
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 19
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-12 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 18:

(18 comments)

http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG@7
PS18, Line 7: Place tablet replicas based on dimension
BTW, what would you expect from the rebalancer with regard to balancing the 
distribution of the replicas in each dimension?


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h
File src/kudu/client/client.h:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1215
PS18, Line 1215:   /// @param [in] dimension_label
   :   ///   The dimension label for the tablet to be created. 
Defaults to empty.
remove


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1238
PS18, Line 1238:   /// @note By default (or if the cluster is configured without
   :   ///   '--master_place_tablet_replicas_based_on_dimension'), 
the master will try to place
   :   ///   newly created tablet replicas on tablet servers with a 
small number of tablet replicas.
   :   ///   If the dimension label is provided, newly created 
replicas will be evenly distributed
   :   ///   in the cluster based on the dimension label. In other 
words, the master will try to place
   :   ///   newly created tablet replicas on tablet servers with a 
small number of tablet replicas
   :   ///   belonging to this dimension label.
Could you replace this by:

See KuduTableCreator::dimension_label() for details on dimension label.


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146
PS18, Line 146: tablet
nit: the tablet


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146
PS18, Line 146: Used by the master to determine load when
  :   // creating new tablet replicas based on dimension.
How about:

Used for dimension-specific replica placement.


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@368
PS18, Line 368: NOTE: If the heartbeat request wants to send 
'num_live_tablets_by_dimension', then the tablet
  :   // server needs to count the number of tablet replicas in 
each dimension, which requires
  :   // traversing all the tablet replicas in the tablet server.
This is just an implementation detail.  The information could be kept in 
run-time structures, so there would be no need to traverse and re-evaluate that 
again and again each heartbeat.  Also, currently each tablet servers traverses 
its registry for finding the total number of alive and bootstrapping tablet 
replicas anyways.  That might be a small optimization piece (I think it's 
better to do that in a separate patch :) )


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@374
PS18, Line 374: optional bool needs_num_live_tablets_by_dimension = 10 [ 
default = false ];
Adar has already pointed at this in prior review iterations, and I tend agree 
with him here. IMO, there is not much value in introducing this field once 
there is explicit specification of dimension labels for tables and extra 
tablets (partitions).

What if we drop both this field and also the 
--master_place_tablet_replicas_based_on_dimension master's flag?

One additional argument to drop these is to think how we should report on the 
status of tables' creation and adding extra partitions to clients in case of 
they specify dimension labels when master is run with 
--master_place_tablet_replicas_based_on_dimension=false ?


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@482
PS18, Line 482: Used by the master to determine load when creating new tablet 
replicas based on dimension.
Maybe: Used for dimension-specific placement of tablet replicas corresponding 
to the partitions of the newly created table.


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614
PS18, Line 614: tablet
the corresponding tablet


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614
PS18, Line 614: Used by the master to determine load when
  : // creating new tablet replicas based on dimension.
How about:

Used for dimension-specific placement of the tablet's replicas.


http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc
File src/kudu/master/master_service.cc:

http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc@255
PS18, Line 255: FLAGS_master_place_tablet_replicas_based_on_dimension
Do you think we still need this even if the dimension labels are specified 
explicitly?



[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-12 Thread Yao Xu (Code Review)
Yao Xu has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 18:

Add some unit tests for a few scenarios.


--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 18
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Fri, 12 Jul 2019 16:31:37 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-12 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#18).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

You can decide whether to use this feature by setting
'--master_place_tablet_replicas_based_on_dimension'.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 674 insertions(+), 76 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/18
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 18
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-11 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 17:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/13632/10/src/kudu/master/placement_policy-test.cc
File src/kudu/master/placement_policy-test.cc:

http://gerrit.cloudera.org:8080/#/c/13632/10/src/kudu/master/placement_policy-test.cc@904
PS10, Line 904:   { "ts2", 1000, { { "labelA", 1000 }, } },
  : }
> > It would be nice to add a few scenarios where:
Ah, that's just about distribution of tablet replicas per tablet server 
regardless of whether they belong to particular table or not.  I.e., if using 
two tables "A" and "B", that's about how many replicas (regardless whether they 
are replicas of a tablet of table "A" or "B") are at each tablet server.



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 17
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Fri, 12 Jul 2019 01:03:35 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-11 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 17: Code-Review+1

OK sure.

I think Alexey should take another look though; I didn't review the placement 
policy changes.


--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 17
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Thu, 11 Jul 2019 23:25:47 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-11 Thread Yao Xu (Code Review)
Yao Xu has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 17:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365
PS12, Line 365:   // Indicates that the tablet server needs to report the 
number of tablets
> The docs are helpful, but I still don't fully understand the
 > motivation. Can you make a reasonable argument that the code
 > complexity of making this behavior optional is worth the
 > optimization?

How about now? :)



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 17
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Thu, 11 Jul 2019 13:45:01 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-11 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#17).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

You can decide whether to use this feature by setting
'--master_place_tablet_replicas_based_on_dimension'.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 595 insertions(+), 74 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/17
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 17
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-10 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 16:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365
PS12, Line 365:   // Indicates that the tablet server needs to report the 
number of tablets
> > Still not clear on why this is necessary. Why not have tservers
The docs are helpful, but I still don't fully understand the motivation. Can 
you make a reasonable argument that the code complexity of making this behavior 
optional is worth the optimization?



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 16
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Thu, 11 Jul 2019 04:45:57 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-10 Thread Yao Xu (Code Review)
Yao Xu has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 16:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h
File src/kudu/client/client.h:

http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h@879
PS15, Line 879:   /// @note By default (or if the cluster is configured without
  :   /// '--master_place_tablet_replicas_based_on_dimension'), the 
master will try to place
  :   /// newly created tablet replicas on tablet servers with a 
small number of tablet replicas.
  :   /// If the dimension label is provided, newly created 
replicas will be evenly distributed
  :   /// in the cluster based on the dimension label. In other 
words, the master will try t
> Thanks, this is useful. I'd rewrite it though:
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365
PS12, Line 365:   // Indicates that the tablet server needs to report the 
number of tablets
> Still not clear on why this is necessary. Why not have tservers
 > always report this information?

I added some docs, I hope this will be clearer.



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 16
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Thu, 11 Jul 2019 02:34:17 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-10 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#16).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

You can decide whether to use this feature by setting
'--master_place_tablet_replicas_based_on_dimension'.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 593 insertions(+), 74 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/16
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 16
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-10 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 15:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h
File src/kudu/client/client.h:

http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h@879
PS15, Line 879:   /// @note By default or masters doesn't set 
'--master_place_tablet_replicas_based_on_dimension',
  :   /// it will select a tablet server with a smaller number of 
tablet replicas to place newly
  :   /// created tablet replicas. If set the dimension label, the 
newly created tablet will be
  :   /// evenly distributed in the cluster distribution based on 
dimension. In other words, it will
  :   /// select a tablet server with a smaller number of tablet 
replicas in this dimension.
Thanks, this is useful. I'd rewrite it though:

'By default (or if the cluster is configured without '--master_place...'), the 
master will try to place newly created tablet replicas on tablet servers with a 
small number of tablet replicas. If the dimension label is provided, newly 
created replicas will be evenly distributed in the cluster based on the 
dimension label. In other words, the master will try to place newly created 
tablet replicas on tablet servers with a small number of tablet replicas 
belonging to this dimension label.'


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365
PS12, Line 365:   // Indicates that the tablet server needs to report the 
number of tablets
> Done
Still not clear on why this is necessary. Why not have tservers always report 
this information?



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 15
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Wed, 10 Jul 2019 14:44:36 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-10 Thread Yao Xu (Code Review)
Yao Xu has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 15:

(12 comments)

> (12 comments)
 >
 > Just passing through; didn't look at the placement policy or
 > testing changes.
 >
 > Do you intend to roll this out for the Java client API in a
 > follow-on patch?

Yes, I will support the Java client API in a follow-on patch.

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h
File src/kudu/client/client.h:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@877
PS12, Line 877:   /// Set the dimension label for all tablets created at table 
creation time.
> "Set the dimension label for all tablets created at table creation time".
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@879
PS12, Line 879:   /// @note By default or masters doesn't set 
'--master_place_tablet_replicas_based_on_dimension',
> This needs a more thorough explanation. Reading this, I have no idea what "
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@1217
PS12, Line 1217:   KuduPartialRow* lower_bound,
> This is a backwards incompatible change. See 
> https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B
 > for details on what sort of changes are permitted to retain
 > backwards compatibility.
 >
 > In this case, you'll need to add a new variant of AddRangePartition()
 > with the additional argument. You can't add an overload, because
 > the existing AddRangePartition did not have any overloads, and
 > adding one now would make existing usages of 
 > ambiguous.

Thanks for pointing this out, I think we need to add a new interface to fix 
this issue.


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3713
PS12, Line 3713: enable
> enabled
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3715
PS12, Line 3715: optional Elsewhere you use optional without the boost:: prefix. Pick one approach an
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3716
PS12, Line 3716: if (FLAGS_master_place_tablet_replicas_based_on_dimension 
&&
   : tablet_->metadata().state().pb.has_dimension_label()) {
> Combine into one if statement.
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4668
PS12, Line 4668: one.
> enabled
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4671
PS12, Line 4671:   tablet->metadata().state().pb.has_dimension_label()) {
   : dimension = tablet->metadata().state().pb.dimension_label(
> Combine
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365
PS12, Line 365:   // Indicates that the tablet server needs to report the 
number of tablets
> Doc what this means. Also, why does it exist at all? What value does select
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@472
PS12, Line 472:
> "The dimension label for tablets that were created during table creation."
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h
File src/kudu/master/ts_descriptor.h:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h@138
PS12, Line 138:   int num_live_replicas(const boost::optional& 
dimension = boost::none) const {
> Odd that the optional isn't passed by cref, given that we're not std::move'
Done


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h
File src/kudu/tserver/ts_tablet_manager.h:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h@205
PS12, Line 205:   TabletNumByDimensionMap GetNumLiveTabletsByDimension() const;
> Could we just return the map?
Done



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 15
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Wed, 10 Jul 2019 10:32:36 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-10 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd 
Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#15).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

You can decide whether to use this feature by setting
'--master_place_tablet_replicas_based_on_dimension'.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 586 insertions(+), 74 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/15
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 15
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-08 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/13632 )

Change subject: KUDU-2823 Place tablet replicas based on dimension
..


Patch Set 14:

(12 comments)

Just passing through; didn't look at the placement policy or testing changes.

Do you intend to roll this out for the Java client API in a follow-on patch?

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h
File src/kudu/client/client.h:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@877
PS12, Line 877:   /// Set the dimension label for the tablet that was created 
when the table creating.
"Set the dimension label for all tablets created at table creation time".


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@879
PS12, Line 879:   /// Used by the master to determine load when creating new 
tablet replicas based on dimension.
This needs a more thorough explanation. Reading this, I have no idea what 
"load" means, nor what "creating new replicas based on dimension" means.


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@1217
PS12, Line 1217:   const std::string& dimension_label = "");
This is a backwards incompatible change. See 
https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B for 
details on what sort of changes are permitted to retain backwards compatibility.

In this case, you'll need to add a new variant of AddRangePartition() with the 
additional argument. You can't add an overload, because the existing 
AddRangePartition did not have any overloads, and adding one now would make 
existing usages of  ambiguous.


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3713
PS12, Line 3713: enable
enabled


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3715
PS12, Line 3715: boost::optional
Elsewhere you use optional without the boost:: prefix. Pick one approach and 
use it consistently.


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3716
PS12, Line 3716: if (FLAGS_master_place_tablet_replicas_based_on_dimension) 
{
   :   if 
(tablet_->metadata().state().pb.has_dimension_label()) {
Combine into one if statement.


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4668
PS12, Line 4668: enable
enabled


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4671
PS12, Line 4671:   if (FLAGS_master_place_tablet_replicas_based_on_dimension) {
   : if (tablet->metadata().state().pb.has_dimension_label()) {
Combine


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto
File src/kudu/master/master.proto:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365
PS12, Line 365:   optional bool needs_num_live_tablets_by_dimension = 10 [ 
default = false ];
Doc what this means. Also, why does it exist at all? What value does 
selectively enabling/disabling this portion of the heartbeat add?


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@472
PS12, Line 472:   // The dimension label for tablet that was created when the 
table creating.
"The dimension label for tablets that were created during table creation."


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h
File src/kudu/master/ts_descriptor.h:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h@138
PS12, Line 138:   int num_live_replicas(boost::optional dimension 
= boost::none) const {
Odd that the optional isn't passed by cref, given that we're not std::move'ing 
it into a class member.


http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h
File src/kudu/tserver/ts_tablet_manager.h:

http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h@205
PS12, Line 205:   void GetNumLiveTabletsByDimension(TabletNumByDimensionMap* 
num_live_tablets_by_dimension) const;
Could we just return the map?



--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 14
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 
Gerrit-Comment-Date: Tue, 09 Jul 2019 03:49:28 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-08 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Todd Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#14).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect replicas
of the newly created tablet to be evenly distributed across all
available tablet servers.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

You can decide whether to use this feature by setting
'--master_place_tablet_replicas_based_on_dimension'.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 533 insertions(+), 76 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/14
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 14
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu 


[kudu-CR] KUDU-2823 Place tablet replicas based on dimension

2019-07-08 Thread Yao Xu (Code Review)
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Todd Lipcon,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/13632

to look at the new patch set (#13).

Change subject: KUDU-2823 Place tablet replicas based on dimension
..

KUDU-2823 Place tablet replicas based on dimension

When we add a new range to the fact table, we expect the newly
created tablet to be evenly distributed on each tablet server.

This is especially important when we use time as the range key.
The more recent the data, the hotter it gets. We expect hot tablets
on the cluster to be evenly distributed.

Unfortunately, after we add some new tablet servers to the cluster,
creating a new tablet replica will prioritize the new tablet server for
placement according to the current placement policy. This is because
we prefer to select tablet server which a smaller number of tablet
replicas. This will cause hot tablets to be concentrated on these new
tablet servers.

So, I added a new placement policy. When creating a new tablet replica,
we prefer to select tablet server which a smaller number of tablet
replicas in the dimension. You can set dimensions when creating tables
and adding partitions, this will ensure that the new tablets are evenly
distributed in the cluster based on dimension.

You can decide whether to use this feature by setting
'--master_place_tablet_replicas_based_on_dimension'.

Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
---
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/table_alterer-internal.cc
M src/kudu/client/table_alterer-internal.h
M src/kudu/client/table_creator-internal.h
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
M src/kudu/master/master.proto
M src/kudu/master/master_service.cc
M src/kudu/master/placement_policy-test.cc
M src/kudu/master/placement_policy.cc
M src/kudu/master/placement_policy.h
M src/kudu/master/sys_catalog.cc
M src/kudu/master/ts_descriptor.cc
M src/kudu/master/ts_descriptor.h
M src/kudu/tablet/metadata.proto
M src/kudu/tablet/tablet-harness.h
M src/kudu/tablet/tablet_bootstrap-test.cc
M src/kudu/tablet/tablet_metadata.cc
M src/kudu/tablet/tablet_metadata.h
M src/kudu/tools/kudu-tool-test.cc
M src/kudu/tserver/heartbeater.cc
M src/kudu/tserver/mini_tablet_server.cc
M src/kudu/tserver/tablet_copy_client.cc
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/ts_tablet_manager-test.cc
M src/kudu/tserver/ts_tablet_manager.cc
M src/kudu/tserver/ts_tablet_manager.h
M src/kudu/tserver/tserver_admin.proto
31 files changed, 533 insertions(+), 76 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/13
--
To view, visit http://gerrit.cloudera.org:8080/13632
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42
Gerrit-Change-Number: 13632
Gerrit-PatchSet: 13
Gerrit-Owner: Yao Xu 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Andrew Wong 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Tidy Bot (241)
Gerrit-Reviewer: Todd Lipcon 
Gerrit-Reviewer: Yao Xu