[1/2] hbase git commit: HBASE-18236 [C++] Add batching and reporting to simple-client
Repository: hbase Updated Branches: refs/heads/HBASE-14850 0e07a547d -> a499d6a81 HBASE-18236 [C++] Add batching and reporting to simple-client Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bb107567 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bb107567 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bb107567 Branch: refs/heads/HBASE-14850 Commit: bb107567c1c9b395f066ffa797f37f5b7b84c937 Parents: 0e07a54 Author: Enis SoztutarAuthored: Mon Jun 26 12:28:42 2017 -0700 Committer: Enis Soztutar Committed: Mon Jun 26 14:28:48 2017 -0700 -- hbase-native-client/core/client-test.cc | 3 +- hbase-native-client/core/simple-client.cc | 53 -- 2 files changed, 43 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/bb107567/hbase-native-client/core/client-test.cc -- diff --git a/hbase-native-client/core/client-test.cc b/hbase-native-client/core/client-test.cc index 1a9fe11..ba213bd 100644 --- a/hbase-native-client/core/client-test.cc +++ b/hbase-native-client/core/client-test.cc @@ -298,8 +298,7 @@ TEST_F(ClientTest, CheckAndDelete) { // Perform Puts table->Put(Put{row}.AddColumn("d", "1", val1)); table->Put(Put{row}.AddColumn("d", "2", "value2")); - auto result = - table->CheckAndDelete(row, "d", "1", val1, hbase::Delete{row}.AddColumn("d", "2")); + auto result = table->CheckAndDelete(row, "d", "1", val1, hbase::Delete{row}.AddColumn("d", "2")); ASSERT_TRUE(result) << "CheckAndDelete didn't replace value"; // Perform the Get http://git-wip-us.apache.org/repos/asf/hbase/blob/bb107567/hbase-native-client/core/simple-client.cc -- diff --git a/hbase-native-client/core/simple-client.cc b/hbase-native-client/core/simple-client.cc index 2fd7108..d36689e 100644 --- a/hbase-native-client/core/simple-client.cc +++ b/hbase-native-client/core/simple-client.cc @@ -43,6 +43,7 @@ using hbase::Get; using hbase::HBaseConfigurationLoader; using hbase::Scan; using hbase::Put; +using hbase::Result; using hbase::Table; using hbase::pb::TableName; using hbase::pb::ServerName; @@ -53,6 +54,8 @@ DEFINE_string(row, "row_", "row prefix"); DEFINE_string(zookeeper, "localhost:2181", "What zk quorum to talk to"); DEFINE_string(conf, "", "Conf directory to read the config from (optional)"); DEFINE_uint64(num_rows, 1, "How many rows to write and read"); +DEFINE_uint64(batch_num_rows, 1, "How many rows batch for multi-gets and multi-puts"); +DEFINE_uint64(report_num_rows, 1, "How frequent we should report the progress"); DEFINE_bool(puts, true, "Whether to perform puts"); DEFINE_bool(gets, true, "Whether to perform gets"); DEFINE_bool(multigets, true, "Whether to perform multi-gets"); @@ -71,6 +74,13 @@ std::string Row(const std::string , uint64_t i) { return prefix + suf; } +void ValidateResult(const Result , const std::string ) { + CHECK(!result.IsEmpty()); + CHECK_EQ(result.Row(), row); + CHECK_EQ(result.Size(), 1); + CHECK_EQ(result.Value("f", "q").value(), row); +} + int main(int argc, char *argv[]) { google::SetUsageMessage("Simple client to get a single row from HBase on the comamnd line"); google::ParseCommandLineFlags(, , true); @@ -106,6 +116,10 @@ int main(int argc, char *argv[]) { LOG(INFO) << "Sending put requests"; for (uint64_t i = 0; i < num_puts; i++) { table->Put(*MakePut(Row(FLAGS_row, i))); + if (i != 0 && i % FLAGS_report_num_rows == 0) { +LOG(INFO) << "Sent " << i << " Put requests in " << TimeUtil::ElapsedMillis(start_ns) + << " ms."; + } } LOG(INFO) << "Successfully sent " << num_puts << " Put requests in " @@ -117,10 +131,15 @@ int main(int argc, char *argv[]) { LOG(INFO) << "Sending get requests"; start_ns = TimeUtil::GetNowNanos(); for (uint64_t i = 0; i < num_puts; i++) { - auto result = table->Get(Get{Row(FLAGS_row, i)}); + auto row = Row(FLAGS_row, i); + auto result = table->Get(Get{row}); if (FLAGS_display_results) { LOG(INFO) << result->DebugString(); + } else if (i != 0 && i % FLAGS_report_num_rows == 0) { +LOG(INFO) << "Sent " << i << " Get requests in " << TimeUtil::ElapsedMillis(start_ns) + << " ms."; } + ValidateResult(*result, row); } LOG(INFO) << "Successfully sent " << num_puts << " Get requests in " @@ -129,21 +148,29 @@ int main(int argc, char *argv[]) { // Do the Multi-Gets if (FLAGS_multigets) { -std::vector gets; -for (uint64_t i = 0; i < num_puts; ++i) { - hbase::Get
[1/2] hbase git commit: HBASE-18236 [C++] Add batching and reporting to simple-client
Repository: hbase Updated Branches: refs/heads/HBAES-14850 [created] a499d6a81 HBASE-18236 [C++] Add batching and reporting to simple-client Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bb107567 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bb107567 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bb107567 Branch: refs/heads/HBAES-14850 Commit: bb107567c1c9b395f066ffa797f37f5b7b84c937 Parents: 0e07a54 Author: Enis SoztutarAuthored: Mon Jun 26 12:28:42 2017 -0700 Committer: Enis Soztutar Committed: Mon Jun 26 14:28:48 2017 -0700 -- hbase-native-client/core/client-test.cc | 3 +- hbase-native-client/core/simple-client.cc | 53 -- 2 files changed, 43 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/bb107567/hbase-native-client/core/client-test.cc -- diff --git a/hbase-native-client/core/client-test.cc b/hbase-native-client/core/client-test.cc index 1a9fe11..ba213bd 100644 --- a/hbase-native-client/core/client-test.cc +++ b/hbase-native-client/core/client-test.cc @@ -298,8 +298,7 @@ TEST_F(ClientTest, CheckAndDelete) { // Perform Puts table->Put(Put{row}.AddColumn("d", "1", val1)); table->Put(Put{row}.AddColumn("d", "2", "value2")); - auto result = - table->CheckAndDelete(row, "d", "1", val1, hbase::Delete{row}.AddColumn("d", "2")); + auto result = table->CheckAndDelete(row, "d", "1", val1, hbase::Delete{row}.AddColumn("d", "2")); ASSERT_TRUE(result) << "CheckAndDelete didn't replace value"; // Perform the Get http://git-wip-us.apache.org/repos/asf/hbase/blob/bb107567/hbase-native-client/core/simple-client.cc -- diff --git a/hbase-native-client/core/simple-client.cc b/hbase-native-client/core/simple-client.cc index 2fd7108..d36689e 100644 --- a/hbase-native-client/core/simple-client.cc +++ b/hbase-native-client/core/simple-client.cc @@ -43,6 +43,7 @@ using hbase::Get; using hbase::HBaseConfigurationLoader; using hbase::Scan; using hbase::Put; +using hbase::Result; using hbase::Table; using hbase::pb::TableName; using hbase::pb::ServerName; @@ -53,6 +54,8 @@ DEFINE_string(row, "row_", "row prefix"); DEFINE_string(zookeeper, "localhost:2181", "What zk quorum to talk to"); DEFINE_string(conf, "", "Conf directory to read the config from (optional)"); DEFINE_uint64(num_rows, 1, "How many rows to write and read"); +DEFINE_uint64(batch_num_rows, 1, "How many rows batch for multi-gets and multi-puts"); +DEFINE_uint64(report_num_rows, 1, "How frequent we should report the progress"); DEFINE_bool(puts, true, "Whether to perform puts"); DEFINE_bool(gets, true, "Whether to perform gets"); DEFINE_bool(multigets, true, "Whether to perform multi-gets"); @@ -71,6 +74,13 @@ std::string Row(const std::string , uint64_t i) { return prefix + suf; } +void ValidateResult(const Result , const std::string ) { + CHECK(!result.IsEmpty()); + CHECK_EQ(result.Row(), row); + CHECK_EQ(result.Size(), 1); + CHECK_EQ(result.Value("f", "q").value(), row); +} + int main(int argc, char *argv[]) { google::SetUsageMessage("Simple client to get a single row from HBase on the comamnd line"); google::ParseCommandLineFlags(, , true); @@ -106,6 +116,10 @@ int main(int argc, char *argv[]) { LOG(INFO) << "Sending put requests"; for (uint64_t i = 0; i < num_puts; i++) { table->Put(*MakePut(Row(FLAGS_row, i))); + if (i != 0 && i % FLAGS_report_num_rows == 0) { +LOG(INFO) << "Sent " << i << " Put requests in " << TimeUtil::ElapsedMillis(start_ns) + << " ms."; + } } LOG(INFO) << "Successfully sent " << num_puts << " Put requests in " @@ -117,10 +131,15 @@ int main(int argc, char *argv[]) { LOG(INFO) << "Sending get requests"; start_ns = TimeUtil::GetNowNanos(); for (uint64_t i = 0; i < num_puts; i++) { - auto result = table->Get(Get{Row(FLAGS_row, i)}); + auto row = Row(FLAGS_row, i); + auto result = table->Get(Get{row}); if (FLAGS_display_results) { LOG(INFO) << result->DebugString(); + } else if (i != 0 && i % FLAGS_report_num_rows == 0) { +LOG(INFO) << "Sent " << i << " Get requests in " << TimeUtil::ElapsedMillis(start_ns) + << " ms."; } + ValidateResult(*result, row); } LOG(INFO) << "Successfully sent " << num_puts << " Get requests in " @@ -129,21 +148,29 @@ int main(int argc, char *argv[]) { // Do the Multi-Gets if (FLAGS_multigets) { -std::vector gets; -for (uint64_t i = 0; i < num_puts; ++i) { - hbase::Get get(Row(FLAGS_row,