You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by cs...@apache.org on 2020/03/27 12:27:14 UTC

[impala] 02/02: IMPALA-8870: Bump up Guava to 28.1-jre and set DISABLE_SENTRY to true

This is an automated email from the ASF dual-hosted git repository.

csringhofer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git

commit 0167c5b4242fcebf6be19aba5ecfb440204278ad
Author: Fang-Yu Rao <fa...@cloudera.com>
AuthorDate: Tue Feb 11 14:58:55 2020 -0800

    IMPALA-8870: Bump up Guava to 28.1-jre and set DISABLE_SENTRY to true
    
    This patch bumps up the version of Guava libraries from 14.0.1 to
    28.1-jre. Due to some changes in Guava's API's, we modify the call
    sites accordingly.
    
    Moreover, in order to instruct the Java classes under the directory of
    $IMPALA_HOME/common/yarn-extras to use the new Guava libraries, we
    explicitly added a dependency in the corresponding pom.xml file.
    
    On the other hand, we set DISABLE_SENTRY to true regardless of
    $USE_CDP_HIVE since Sentry's Guava version has not been bumped up yet
    and thus run-sentry-service.sh cannot be successfully executed. Recall
    that by setting DISABLE_SENTRY to true we also disable every
    Sentry-related test, which is fine from now on since Impala 3.4 was
    recently branched. The plan is to drop support for Sentry in the Impala
    4 line.
    
    Change-Id: I9690a926953a8d3c3872277680b4be0551546c68
    Reviewed-on: http://gerrit.cloudera.org:8080/15214
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
    Reviewed-by: Csaba Ringhofer <cs...@cloudera.com>
---
 bin/impala-config.sh                                              | 3 +--
 common/yarn-extras/pom.xml                                        | 6 ++++++
 .../scheduler/fair/AllocationFileLoaderService.java               | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/AggregateInfo.java    | 4 ++--
 .../main/java/org/apache/impala/analysis/AggregateInfoBase.java   | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/AnalyticExpr.java     | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/AnalyticInfo.java     | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/ArithmeticExpr.java   | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/BinaryPredicate.java  | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/BoolLiteral.java      | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/CaseExpr.java         | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/CastExpr.java         | 4 ++--
 .../main/java/org/apache/impala/analysis/ColumnLineageGraph.java  | 3 ++-
 .../main/java/org/apache/impala/analysis/CompoundPredicate.java   | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/ComputeStatsStmt.java | 6 ++++--
 fe/src/main/java/org/apache/impala/analysis/Expr.java             | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/FunctionCallExpr.java | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/IsNullPredicate.java  | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/NullLiteral.java      | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/NumericLiteral.java   | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/Path.java             | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/SlotDescriptor.java   | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/SlotRef.java          | 3 ++-
 fe/src/main/java/org/apache/impala/analysis/StringLiteral.java    | 4 ++--
 fe/src/main/java/org/apache/impala/analysis/TupleDescriptor.java  | 4 ++--
 fe/src/main/java/org/apache/impala/catalog/Column.java            | 4 ++--
 fe/src/main/java/org/apache/impala/catalog/ColumnStats.java       | 4 ++--
 fe/src/main/java/org/apache/impala/catalog/DataSource.java        | 4 ++--
 .../main/java/org/apache/impala/catalog/FileMetadataLoader.java   | 4 ++--
 fe/src/main/java/org/apache/impala/catalog/HdfsPartition.java     | 6 +++---
 .../org/apache/impala/catalog/ParallelFileMetadataLoader.java     | 2 +-
 fe/src/main/java/org/apache/impala/catalog/Table.java             | 2 +-
 fe/src/main/java/org/apache/impala/catalog/TableLoader.java       | 6 +++---
 .../org/apache/impala/catalog/local/CatalogdMetaProvider.java     | 8 ++++----
 fe/src/main/java/org/apache/impala/planner/AnalyticEvalNode.java  | 4 ++--
 fe/src/main/java/org/apache/impala/planner/DataPartition.java     | 4 ++--
 .../main/java/org/apache/impala/planner/DataSourceScanNode.java   | 4 ++--
 fe/src/main/java/org/apache/impala/planner/HBaseScanNode.java     | 4 ++--
 fe/src/main/java/org/apache/impala/planner/HashJoinNode.java      | 6 +++---
 fe/src/main/java/org/apache/impala/planner/HdfsScanNode.java      | 6 +++---
 .../main/java/org/apache/impala/planner/NestedLoopJoinNode.java   | 4 ++--
 fe/src/main/java/org/apache/impala/planner/ScanNode.java          | 4 ++--
 fe/src/main/java/org/apache/impala/planner/SortNode.java          | 4 ++--
 fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java | 4 ++--
 fe/src/main/java/org/apache/impala/service/Frontend.java          | 2 +-
 fe/src/main/java/org/apache/impala/util/JvmPauseMonitor.java      | 6 +++---
 .../org/apache/impala/catalog/local/CatalogdMetaProviderTest.java | 2 +-
 impala-parent/pom.xml                                             | 2 +-
 48 files changed, 103 insertions(+), 94 deletions(-)

diff --git a/bin/impala-config.sh b/bin/impala-config.sh
index ceaf864..bd6360f 100755
--- a/bin/impala-config.sh
+++ b/bin/impala-config.sh
@@ -229,6 +229,7 @@ export CDP_RANGER_URL=${CDP_RANGER_URL-}
 export CDH_COMPONENTS_HOME="$IMPALA_TOOLCHAIN/cdh_components-$CDH_BUILD_NUMBER"
 export CDP_COMPONENTS_HOME="$IMPALA_TOOLCHAIN/cdp_components-$CDP_BUILD_NUMBER"
 export USE_CDP_HIVE=${USE_CDP_HIVE-false}
+export DISABLE_SENTRY=${DISABLE_SENTRY_OVERRIDE:-"true"}
 if $USE_CDP_HIVE; then
   # When USE_CDP_HIVE is set we use the CDP hive version to build as well as deploy in
   # the minicluster
@@ -244,7 +245,6 @@ if $USE_CDP_HIVE; then
   export IMPALA_TEZ_URL=${CDP_TEZ_URL-}
   export IMPALA_KNOX_VERSION=${CDP_KNOX_VERSION}
   export HADOOP_HOME="$CDP_COMPONENTS_HOME/hadoop-${IMPALA_HADOOP_VERSION}/"
-  export DISABLE_SENTRY=${DISABLE_SENTRY_OVERRIDE:-"true"}
 else
   # CDH hive version is used to build and deploy in minicluster when USE_CDP_HIVE is
   # false
@@ -256,7 +256,6 @@ else
   export IMPALA_HBASE_VERSION=${CDH_HBASE_VERSION}
   export IMPALA_HBASE_URL=${CDH_HBASE_URL-}
   export HADOOP_HOME="$CDH_COMPONENTS_HOME/hadoop-${IMPALA_HADOOP_VERSION}/"
-  export DISABLE_SENTRY="false"
 fi
 
 # Ozone always uses the CDP version
diff --git a/common/yarn-extras/pom.xml b/common/yarn-extras/pom.xml
index 48a609a..9222ef6 100644
--- a/common/yarn-extras/pom.xml
+++ b/common/yarn-extras/pom.xml
@@ -44,6 +44,12 @@
     </dependency>
 
     <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <version>28.1-jre</version>
+    </dependency>
+
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-common</artifactId>
       <version>${hadoop.version}</version>
diff --git a/common/yarn-extras/src/main/java/org/apache/impala/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java b/common/yarn-extras/src/main/java/org/apache/impala/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java
index ed9943a..dc80c07 100644
--- a/common/yarn-extras/src/main/java/org/apache/impala/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java
+++ b/common/yarn-extras/src/main/java/org/apache/impala/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java
@@ -414,8 +414,8 @@ public class AllocationFileLoaderService extends AbstractService {
       Map<FSQueueType, Set<String>> configuredQueues,
       Set<String> nonPreemptableQueues)
       throws AllocationConfigurationException {
-    String queueName = CharMatcher.WHITESPACE.trimFrom(
-        element.getAttribute("name"));
+
+    String queueName = CharMatcher.whitespace().trimFrom(element.getAttribute("name"));
 
     if (queueName.contains(".")) {
       throw new AllocationConfigurationException("Bad fair scheduler config "
diff --git a/fe/src/main/java/org/apache/impala/analysis/AggregateInfo.java b/fe/src/main/java/org/apache/impala/analysis/AggregateInfo.java
index 7069bb5..865d1d1 100644
--- a/fe/src/main/java/org/apache/impala/analysis/AggregateInfo.java
+++ b/fe/src/main/java/org/apache/impala/analysis/AggregateInfo.java
@@ -28,7 +28,7 @@ import org.apache.impala.common.InternalException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -697,7 +697,7 @@ public class AggregateInfo extends AggregateInfoBase {
   @Override
   public String debugString() {
     StringBuilder out = new StringBuilder(super.debugString());
-    out.append(Objects.toStringHelper(this)
+    out.append(MoreObjects.toStringHelper(this)
         .add("phase", aggPhase_)
         .add("intermediate_smap", intermediateTupleSmap_.debugString())
         .add("output_smap", outputTupleSmap_.debugString())
diff --git a/fe/src/main/java/org/apache/impala/analysis/AggregateInfoBase.java b/fe/src/main/java/org/apache/impala/analysis/AggregateInfoBase.java
index a3fc5ed..5125024 100644
--- a/fe/src/main/java/org/apache/impala/analysis/AggregateInfoBase.java
+++ b/fe/src/main/java/org/apache/impala/analysis/AggregateInfoBase.java
@@ -25,7 +25,7 @@ import org.apache.impala.catalog.Type;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -211,7 +211,7 @@ public abstract class AggregateInfoBase {
 
   public String debugString() {
     StringBuilder out = new StringBuilder();
-    out.append(Objects.toStringHelper(this)
+    out.append(MoreObjects.toStringHelper(this)
         .add("grouping_exprs", Expr.debugString(groupingExprs_))
         .add("aggregate_exprs", Expr.debugString(aggregateExprs_))
         .add("intermediate_tuple", (intermediateTupleDesc_ == null)
diff --git a/fe/src/main/java/org/apache/impala/analysis/AnalyticExpr.java b/fe/src/main/java/org/apache/impala/analysis/AnalyticExpr.java
index 3bfe86e..6ca8809 100644
--- a/fe/src/main/java/org/apache/impala/analysis/AnalyticExpr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/AnalyticExpr.java
@@ -36,7 +36,7 @@ import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.util.TColumnValueUtil;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -174,7 +174,7 @@ public class AnalyticExpr extends Expr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("fn", getFnCall())
         .add("window", window_)
         .addValue(super.debugString())
diff --git a/fe/src/main/java/org/apache/impala/analysis/AnalyticInfo.java b/fe/src/main/java/org/apache/impala/analysis/AnalyticInfo.java
index 2ce3461..0d8e3bc 100644
--- a/fe/src/main/java/org/apache/impala/analysis/AnalyticInfo.java
+++ b/fe/src/main/java/org/apache/impala/analysis/AnalyticInfo.java
@@ -24,7 +24,7 @@ import org.apache.impala.catalog.Type;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -172,7 +172,7 @@ public class AnalyticInfo extends AggregateInfoBase {
   @Override
   public String debugString() {
     StringBuilder out = new StringBuilder(super.debugString());
-    out.append(Objects.toStringHelper(this)
+    out.append(MoreObjects.toStringHelper(this)
         .add("analytic_exprs", Expr.debugString(analyticExprs_))
         .add("smap", analyticTupleSmap_.debugString())
         .toString());
diff --git a/fe/src/main/java/org/apache/impala/analysis/ArithmeticExpr.java b/fe/src/main/java/org/apache/impala/analysis/ArithmeticExpr.java
index 9f25469..5b9dd16 100644
--- a/fe/src/main/java/org/apache/impala/analysis/ArithmeticExpr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/ArithmeticExpr.java
@@ -25,7 +25,7 @@ import org.apache.impala.catalog.Type;
 import org.apache.impala.common.AnalysisException;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -126,7 +126,7 @@ public class ArithmeticExpr extends Expr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("op", op_)
         .addValue(super.debugString())
         .toString();
diff --git a/fe/src/main/java/org/apache/impala/analysis/BinaryPredicate.java b/fe/src/main/java/org/apache/impala/analysis/BinaryPredicate.java
index c7f0e87..86d5a04 100644
--- a/fe/src/main/java/org/apache/impala/analysis/BinaryPredicate.java
+++ b/fe/src/main/java/org/apache/impala/analysis/BinaryPredicate.java
@@ -32,7 +32,7 @@ import org.apache.impala.extdatasource.thrift.TComparisonOp;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Lists;
@@ -162,7 +162,7 @@ public class BinaryPredicate extends Predicate {
 
   @Override
   public String debugString() {
-    Objects.ToStringHelper toStrHelper = Objects.toStringHelper(this);
+    MoreObjects.ToStringHelper toStrHelper = MoreObjects.toStringHelper(this);
     toStrHelper.add("op", op_).addValue(super.debugString());
     if (isAuxExpr()) toStrHelper.add("isAux", true);
     if (isInferred_) toStrHelper.add("isInferred", true);
diff --git a/fe/src/main/java/org/apache/impala/analysis/BoolLiteral.java b/fe/src/main/java/org/apache/impala/analysis/BoolLiteral.java
index ba65c8e..79ccc22 100644
--- a/fe/src/main/java/org/apache/impala/analysis/BoolLiteral.java
+++ b/fe/src/main/java/org/apache/impala/analysis/BoolLiteral.java
@@ -23,7 +23,7 @@ import org.apache.impala.thrift.TBoolLiteral;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 
 public class BoolLiteral extends LiteralExpr {
   private final boolean value_;
@@ -54,7 +54,7 @@ public class BoolLiteral extends LiteralExpr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("value", value_)
         .toString();
   }
diff --git a/fe/src/main/java/org/apache/impala/analysis/CaseExpr.java b/fe/src/main/java/org/apache/impala/analysis/CaseExpr.java
index 7f74955..1483b5a 100644
--- a/fe/src/main/java/org/apache/impala/analysis/CaseExpr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/CaseExpr.java
@@ -31,7 +31,7 @@ import org.apache.impala.thrift.TCaseExpr;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
@@ -445,7 +445,7 @@ public class CaseExpr extends Expr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("decodeExpr_", decodeExpr_ == null ? "null" : decodeExpr_.debugString())
         .add("hasCaseExpr", hasCaseExpr_)
         .add("hasElseExpr", hasElseExpr_)
diff --git a/fe/src/main/java/org/apache/impala/analysis/CastExpr.java b/fe/src/main/java/org/apache/impala/analysis/CastExpr.java
index 67fedec..5410435 100644
--- a/fe/src/main/java/org/apache/impala/analysis/CastExpr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/CastExpr.java
@@ -31,7 +31,7 @@ import org.apache.impala.thrift.TExpr;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -257,7 +257,7 @@ public class CastExpr extends Expr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("isImplicit", isImplicit_)
         .add("target", type_)
         .add("format", castFormat_)
diff --git a/fe/src/main/java/org/apache/impala/analysis/ColumnLineageGraph.java b/fe/src/main/java/org/apache/impala/analysis/ColumnLineageGraph.java
index ec401b3..767a340 100644
--- a/fe/src/main/java/org/apache/impala/analysis/ColumnLineageGraph.java
+++ b/fe/src/main/java/org/apache/impala/analysis/ColumnLineageGraph.java
@@ -17,6 +17,7 @@
 
 package org.apache.impala.analysis;
 
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -761,7 +762,7 @@ public class ColumnLineageGraph {
 
   private String getQueryHash(String queryStr) {
     Hasher hasher = Hashing.md5().newHasher();
-    hasher.putString(queryStr);
+    hasher.putUnencodedChars(queryStr);
     return hasher.hash().toString();
   }
 
diff --git a/fe/src/main/java/org/apache/impala/analysis/CompoundPredicate.java b/fe/src/main/java/org/apache/impala/analysis/CompoundPredicate.java
index 085cd65..bd8c042 100644
--- a/fe/src/main/java/org/apache/impala/analysis/CompoundPredicate.java
+++ b/fe/src/main/java/org/apache/impala/analysis/CompoundPredicate.java
@@ -27,7 +27,7 @@ import org.apache.impala.common.AnalysisException;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -94,7 +94,7 @@ public class CompoundPredicate extends Predicate {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("op", op_)
         .addValue(super.debugString())
         .toString();
diff --git a/fe/src/main/java/org/apache/impala/analysis/ComputeStatsStmt.java b/fe/src/main/java/org/apache/impala/analysis/ComputeStatsStmt.java
index 895e2bb..57c4015 100644
--- a/fe/src/main/java/org/apache/impala/analysis/ComputeStatsStmt.java
+++ b/fe/src/main/java/org/apache/impala/analysis/ComputeStatsStmt.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.impala.authorization.Privilege;
@@ -648,7 +649,7 @@ public class ComputeStatsStmt extends StatementBase {
     Preconditions.checkNotNull(partitions);
     Preconditions.checkState(!RuntimeEnv.INSTANCE.isTestEnv());
     if (partitions.isEmpty()) return Collections.emptyMap();
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     int numCompressedBytes = 0;
     int totalPartitions = 0;
     int numPartitionsWithStats = 0;
@@ -708,7 +709,8 @@ public class ComputeStatsStmt extends StatementBase {
     profile.addToCounter(STATS_FETCH_TOTAL_PARTITIONS, TUnit.NONE, totalPartitions);
     profile.addToCounter(STATS_FETCH_NUM_PARTITIONS_WITH_STATS, TUnit.NONE,
         numPartitionsWithStats);
-    profile.addToCounter(STATS_FETCH_TIME, TUnit.TIME_MS, stopwatch.elapsedMillis());
+    profile.addToCounter(STATS_FETCH_TIME, TUnit.TIME_MS,
+        stopwatch.elapsed(TimeUnit.MILLISECONDS));
   }
 
   /**
diff --git a/fe/src/main/java/org/apache/impala/analysis/Expr.java b/fe/src/main/java/org/apache/impala/analysis/Expr.java
index 628e0c5..6ef5715 100644
--- a/fe/src/main/java/org/apache/impala/analysis/Expr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/Expr.java
@@ -50,7 +50,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Iterables;
@@ -1449,7 +1449,7 @@ abstract public class Expr extends TreeNode<Expr> implements ParseNode, Cloneabl
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this.getClass())
+    return MoreObjects.toStringHelper(this.getClass())
         .add("id", id_)
         .add("type", type_)
         .add("toSql", toSql(ToSqlOptions.SHOW_IMPLICIT_CASTS))
diff --git a/fe/src/main/java/org/apache/impala/analysis/FunctionCallExpr.java b/fe/src/main/java/org/apache/impala/analysis/FunctionCallExpr.java
index ccc3c3e..1566775 100644
--- a/fe/src/main/java/org/apache/impala/analysis/FunctionCallExpr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/FunctionCallExpr.java
@@ -37,7 +37,7 @@ import org.apache.impala.thrift.TFunctionBinaryType;
 import org.apache.impala.thrift.TQueryOptions;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -223,7 +223,7 @@ public class FunctionCallExpr extends Expr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("name", fnName_)
         .add("isStar", params_.isStar())
         .add("isDistinct", params_.isDistinct())
diff --git a/fe/src/main/java/org/apache/impala/analysis/IsNullPredicate.java b/fe/src/main/java/org/apache/impala/analysis/IsNullPredicate.java
index 7af3688..180209e 100644
--- a/fe/src/main/java/org/apache/impala/analysis/IsNullPredicate.java
+++ b/fe/src/main/java/org/apache/impala/analysis/IsNullPredicate.java
@@ -28,7 +28,7 @@ import org.apache.impala.common.AnalysisException;
 import org.apache.impala.common.Reference;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -89,7 +89,7 @@ public class IsNullPredicate extends Predicate {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("notNull", isNotNull_)
         .addValue(super.debugString())
         .toString();
diff --git a/fe/src/main/java/org/apache/impala/analysis/NullLiteral.java b/fe/src/main/java/org/apache/impala/analysis/NullLiteral.java
index e27f28a..65ceefe 100644
--- a/fe/src/main/java/org/apache/impala/analysis/NullLiteral.java
+++ b/fe/src/main/java/org/apache/impala/analysis/NullLiteral.java
@@ -21,7 +21,7 @@ import org.apache.impala.catalog.Type;
 import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 public class NullLiteral extends LiteralExpr {
@@ -57,7 +57,7 @@ public class NullLiteral extends LiteralExpr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this).addValue(super.debugString()).toString();
+    return MoreObjects.toStringHelper(this).addValue(super.debugString()).toString();
   }
 
   @Override
diff --git a/fe/src/main/java/org/apache/impala/analysis/NumericLiteral.java b/fe/src/main/java/org/apache/impala/analysis/NumericLiteral.java
index 2469174..3725df1 100644
--- a/fe/src/main/java/org/apache/impala/analysis/NumericLiteral.java
+++ b/fe/src/main/java/org/apache/impala/analysis/NumericLiteral.java
@@ -30,7 +30,7 @@ import org.apache.impala.thrift.TExprNodeType;
 import org.apache.impala.thrift.TFloatLiteral;
 import org.apache.impala.thrift.TIntLiteral;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -205,7 +205,7 @@ public class NumericLiteral extends LiteralExpr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("value", value_)
         .add("type", type_)
         .toString();
diff --git a/fe/src/main/java/org/apache/impala/analysis/Path.java b/fe/src/main/java/org/apache/impala/analysis/Path.java
index 3049382..475410e 100644
--- a/fe/src/main/java/org/apache/impala/analysis/Path.java
+++ b/fe/src/main/java/org/apache/impala/analysis/Path.java
@@ -20,7 +20,7 @@ package org.apache.impala.analysis;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import org.apache.impala.catalog.ArrayType;
 import org.apache.impala.catalog.Column;
 import org.apache.impala.catalog.FeTable;
@@ -468,7 +468,7 @@ public class Path {
   }
 
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("rootTable", rootTable_)
         .add("rootDesc", rootDesc_)
         .add("rawPath", rawPath_)
diff --git a/fe/src/main/java/org/apache/impala/analysis/SlotDescriptor.java b/fe/src/main/java/org/apache/impala/analysis/SlotDescriptor.java
index 4495f19..e24caf7 100644
--- a/fe/src/main/java/org/apache/impala/analysis/SlotDescriptor.java
+++ b/fe/src/main/java/org/apache/impala/analysis/SlotDescriptor.java
@@ -30,7 +30,7 @@ import org.apache.impala.catalog.Type;
 import org.apache.impala.thrift.TSlotDescriptor;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -303,7 +303,7 @@ public class SlotDescriptor {
   public String debugString() {
     String pathStr = (path_ == null) ? "null" : path_.toString();
     String typeStr = (type_ == null ? "null" : type_.toString());
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("id", id_.asInt())
         .add("path", pathStr)
         .add("label", label_)
diff --git a/fe/src/main/java/org/apache/impala/analysis/SlotRef.java b/fe/src/main/java/org/apache/impala/analysis/SlotRef.java
index 0fe4d8b..e9911f2 100644
--- a/fe/src/main/java/org/apache/impala/analysis/SlotRef.java
+++ b/fe/src/main/java/org/apache/impala/analysis/SlotRef.java
@@ -32,6 +32,7 @@ import org.apache.impala.thrift.TSlotRef;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 public class SlotRef extends Expr {
@@ -168,7 +169,7 @@ public class SlotRef extends Expr {
 
   @Override
   public String debugString() {
-    Objects.ToStringHelper toStrHelper = Objects.toStringHelper(this);
+    MoreObjects.ToStringHelper toStrHelper = MoreObjects.toStringHelper(this);
     if (label_ != null) toStrHelper.add("label", label_);
     if (rawPath_ != null) toStrHelper.add("path", Joiner.on('.').join(rawPath_));
     toStrHelper.add("type", type_.toSql());
diff --git a/fe/src/main/java/org/apache/impala/analysis/StringLiteral.java b/fe/src/main/java/org/apache/impala/analysis/StringLiteral.java
index 37fdd45..d0b93ef 100644
--- a/fe/src/main/java/org/apache/impala/analysis/StringLiteral.java
+++ b/fe/src/main/java/org/apache/impala/analysis/StringLiteral.java
@@ -29,7 +29,7 @@ import org.apache.impala.thrift.TExprNode;
 import org.apache.impala.thrift.TExprNodeType;
 import org.apache.impala.thrift.TStringLiteral;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 import java_cup.runtime.Symbol;
@@ -142,7 +142,7 @@ public class StringLiteral extends LiteralExpr {
 
   @Override
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("value", value_)
         .toString();
   }
diff --git a/fe/src/main/java/org/apache/impala/analysis/TupleDescriptor.java b/fe/src/main/java/org/apache/impala/analysis/TupleDescriptor.java
index 557874d..3bdac15 100644
--- a/fe/src/main/java/org/apache/impala/analysis/TupleDescriptor.java
+++ b/fe/src/main/java/org/apache/impala/analysis/TupleDescriptor.java
@@ -33,7 +33,7 @@ import org.apache.impala.catalog.StructType;
 import org.apache.impala.thrift.TTupleDescriptor;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -196,7 +196,7 @@ public class TupleDescriptor {
     for (SlotDescriptor slot : slots_) {
       slotStrings.add(slot.debugString());
     }
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("id", id_.asInt())
         .add("name", debugName_)
         .add("tbl", tblStr)
diff --git a/fe/src/main/java/org/apache/impala/catalog/Column.java b/fe/src/main/java/org/apache/impala/catalog/Column.java
index 8acbe79..1930253 100644
--- a/fe/src/main/java/org/apache/impala/catalog/Column.java
+++ b/fe/src/main/java/org/apache/impala/catalog/Column.java
@@ -29,7 +29,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Function;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -81,7 +81,7 @@ public class Column {
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this.getClass())
+    return MoreObjects.toStringHelper(this.getClass())
                   .add("name_", name_)
                   .add("type_", type_)
                   .add("comment_", comment_)
diff --git a/fe/src/main/java/org/apache/impala/catalog/ColumnStats.java b/fe/src/main/java/org/apache/impala/catalog/ColumnStats.java
index 414cd6e..85fda27 100644
--- a/fe/src/main/java/org/apache/impala/catalog/ColumnStats.java
+++ b/fe/src/main/java/org/apache/impala/catalog/ColumnStats.java
@@ -31,7 +31,7 @@ import org.apache.impala.analysis.Expr;
 import org.apache.impala.analysis.SlotRef;
 import org.apache.impala.thrift.TColumnStats;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Sets;
 import com.google.common.math.LongMath;
@@ -461,7 +461,7 @@ public class ColumnStats {
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this.getClass())
+    return MoreObjects.toStringHelper(this.getClass())
         .add("avgSize_", avgSize_)
         .add("avgSerializedSize_", avgSerializedSize_)
         .add("maxSize_", maxSize_)
diff --git a/fe/src/main/java/org/apache/impala/catalog/DataSource.java b/fe/src/main/java/org/apache/impala/catalog/DataSource.java
index 043902d..2af1a2e 100644
--- a/fe/src/main/java/org/apache/impala/catalog/DataSource.java
+++ b/fe/src/main/java/org/apache/impala/catalog/DataSource.java
@@ -20,7 +20,7 @@ package org.apache.impala.catalog;
 import org.apache.impala.thrift.TCatalogObject;
 import org.apache.impala.thrift.TCatalogObjectType;
 import org.apache.impala.thrift.TDataSource;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 
 /**
  * Represents a data source in the catalog. Contains the data source name and all
@@ -65,7 +65,7 @@ public class DataSource extends CatalogObjectImpl implements FeDataSource {
   }
 
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("name", dataSrcName_)
         .add("location", location_)
         .add("className", className_)
diff --git a/fe/src/main/java/org/apache/impala/catalog/FileMetadataLoader.java b/fe/src/main/java/org/apache/impala/catalog/FileMetadataLoader.java
index 59d9a95..ac0a2c4 100644
--- a/fe/src/main/java/org/apache/impala/catalog/FileMetadataLoader.java
+++ b/fe/src/main/java/org/apache/impala/catalog/FileMetadataLoader.java
@@ -16,7 +16,7 @@
 // under the License.
 package org.apache.impala.catalog;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
@@ -285,7 +285,7 @@ public class FileMetadataLoader {
     public int unknownDiskIds = 0;
 
     public String debugString() {
-      return Objects.toStringHelper("")
+      return MoreObjects.toStringHelper("")
         .add("path", partDir_)
         .add("loaded files", loadedFiles)
         .add("hidden files", nullIfZero(hiddenFiles))
diff --git a/fe/src/main/java/org/apache/impala/catalog/HdfsPartition.java b/fe/src/main/java/org/apache/impala/catalog/HdfsPartition.java
index 45a0a83..2069756 100644
--- a/fe/src/main/java/org/apache/impala/catalog/HdfsPartition.java
+++ b/fe/src/main/java/org/apache/impala/catalog/HdfsPartition.java
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Strings;
@@ -252,7 +252,7 @@ public class HdfsPartition implements FeFsPartition, PrunablePartition {
       for (int i = 0; i < numFileBlocks; ++i) {
         blocks.add(FileBlock.debugString(getFbFileBlock(i)));
       }
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
           .add("RelativePath", getRelativePath())
           .add("Length", getFileLength())
           .add("Compression", getFileCompression())
@@ -1005,7 +1005,7 @@ public class HdfsPartition implements FeFsPartition, PrunablePartition {
 
   @Override
   public String toString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
       .add("fileDescriptors", getFileDescriptors())
       .toString();
   }
diff --git a/fe/src/main/java/org/apache/impala/catalog/ParallelFileMetadataLoader.java b/fe/src/main/java/org/apache/impala/catalog/ParallelFileMetadataLoader.java
index 03fbf7f..e2f3881 100644
--- a/fe/src/main/java/org/apache/impala/catalog/ParallelFileMetadataLoader.java
+++ b/fe/src/main/java/org/apache/impala/catalog/ParallelFileMetadataLoader.java
@@ -139,7 +139,7 @@ public class ParallelFileMetadataLoader {
     poolSize = Math.min(numLoaders, poolSize);
 
     if (poolSize == 1) {
-      return MoreExecutors.sameThreadExecutor();
+      return MoreExecutors.newDirectExecutorService();
     } else {
       LOG.info(logPrefix_ + " using a thread pool of size {}", poolSize);
       return Executors.newFixedThreadPool(poolSize);
diff --git a/fe/src/main/java/org/apache/impala/catalog/Table.java b/fe/src/main/java/org/apache/impala/catalog/Table.java
index db9fe3e..9e2f02f 100644
--- a/fe/src/main/java/org/apache/impala/catalog/Table.java
+++ b/fe/src/main/java/org/apache/impala/catalog/Table.java
@@ -409,7 +409,7 @@ public abstract class Table extends CatalogObjectImpl implements FeTable {
    */
   protected void loadValidWriteIdList(IMetaStoreClient client)
       throws TableLoadingException {
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     Preconditions.checkState(msTable_ != null && msTable_.getParameters() != null);
     if (MetastoreShim.getMajorVersion() > 2 &&
         AcidUtils.isTransactionalTable(msTable_.getParameters())) {
diff --git a/fe/src/main/java/org/apache/impala/catalog/TableLoader.java b/fe/src/main/java/org/apache/impala/catalog/TableLoader.java
index 634741b..b826085 100644
--- a/fe/src/main/java/org/apache/impala/catalog/TableLoader.java
+++ b/fe/src/main/java/org/apache/impala/catalog/TableLoader.java
@@ -54,7 +54,7 @@ public class TableLoader {
    * an IncompleteTable will be returned that contains details on the error.
    */
   public Table load(Db db, String tblName, String reason) {
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     String fullTblName = db.getName() + "." + tblName;
     String annotation = "Loading metadata for: " + fullTblName + " (" + reason + ")";
     LOG.info(annotation);
@@ -64,7 +64,7 @@ public class TableLoader {
          MetaStoreClient msClient = catalog_.getMetaStoreClient()) {
       org.apache.hadoop.hive.metastore.api.Table msTbl = null;
       // All calls to getTable() need to be serialized due to HIVE-5457.
-      Stopwatch hmsLoadSW = new Stopwatch().start();
+      Stopwatch hmsLoadSW = Stopwatch.createStarted();
       synchronized (metastoreAccessLock_) {
         msTbl = msClient.getHiveClient().getTable(db.getName(), tblName);
       }
@@ -101,7 +101,7 @@ public class TableLoader {
           "'invalidate metadata " + fullTblName + "' may resolve this problem.", e));
     }
     LOG.info("Loaded metadata for: " + fullTblName + " (" +
-        sw.elapsedTime(TimeUnit.MILLISECONDS) + "ms)");
+        sw.elapsed(TimeUnit.MILLISECONDS) + "ms)");
     return table;
   }
 }
diff --git a/fe/src/main/java/org/apache/impala/catalog/local/CatalogdMetaProvider.java b/fe/src/main/java/org/apache/impala/catalog/local/CatalogdMetaProvider.java
index b43c2c2..618c2e9 100644
--- a/fe/src/main/java/org/apache/impala/catalog/local/CatalogdMetaProvider.java
+++ b/fe/src/main/java/org/apache/impala/catalog/local/CatalogdMetaProvider.java
@@ -375,7 +375,7 @@ public class CatalogdMetaProvider implements MetaProvider {
       throws TException {
     TGetPartialCatalogObjectResponse resp;
     byte[] ret = null;
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     try {
       ret = FeSupport.GetPartialCatalogObject(new TSerializer().serialize(req));
     } catch (InternalException e) {
@@ -482,7 +482,7 @@ public class CatalogdMetaProvider implements MetaProvider {
     // NOTE: we don't need to perform this dance for cache keys which embed a version
     // number, because invalidation is not handled by removing cache entries, but
     // rather by bumping top-level version numbers.
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     boolean hit = false;
     boolean isPiggybacked = false;
     try {
@@ -712,7 +712,7 @@ public class CatalogdMetaProvider implements MetaProvider {
   @Override
   public List<ColumnStatisticsObj> loadTableColumnStatistics(final TableMetaRef table,
       List<String> colNames) throws TException {
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     List<ColumnStatisticsObj> ret = Lists.newArrayListWithCapacity(colNames.size());
     // Look up in cache first, keeping track of which ones are missing.
     // We can't use 'loadWithCaching' since we need to fetch several entries batched
@@ -815,7 +815,7 @@ public class CatalogdMetaProvider implements MetaProvider {
       throws MetaException, TException {
     Preconditions.checkArgument(table instanceof TableMetaRefImpl);
     TableMetaRefImpl refImpl = (TableMetaRefImpl)table;
-    Stopwatch sw = new Stopwatch().start();
+    Stopwatch sw = Stopwatch.createStarted();
     // Load what we can from the cache.
     Map<PartitionRef, PartitionMetadata> refToMeta = loadPartitionsFromCache(refImpl,
         hostIndex, partitionRefs);
diff --git a/fe/src/main/java/org/apache/impala/planner/AnalyticEvalNode.java b/fe/src/main/java/org/apache/impala/planner/AnalyticEvalNode.java
index 82e0f87..1b39d50 100644
--- a/fe/src/main/java/org/apache/impala/planner/AnalyticEvalNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/AnalyticEvalNode.java
@@ -43,7 +43,7 @@ import org.apache.impala.thrift.TPlanNode;
 import org.apache.impala.thrift.TPlanNodeType;
 import org.apache.impala.thrift.TQueryOptions;
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -244,7 +244,7 @@ public class AnalyticEvalNode extends PlanNode {
     for (OrderByElement element: orderByElements_) {
       orderByElementStrs.add(element.toSql());
     }
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("analyticFnCalls", Expr.debugString(analyticFnCalls_))
         .add("partitionExprs", Expr.debugString(partitionExprs_))
         .add("subtitutedPartitionExprs", Expr.debugString(substitutedPartitionExprs_))
diff --git a/fe/src/main/java/org/apache/impala/planner/DataPartition.java b/fe/src/main/java/org/apache/impala/planner/DataPartition.java
index b2a3cca..a5d9316 100644
--- a/fe/src/main/java/org/apache/impala/planner/DataPartition.java
+++ b/fe/src/main/java/org/apache/impala/planner/DataPartition.java
@@ -26,7 +26,7 @@ import org.apache.impala.analysis.ExprSubstitutionMap;
 import org.apache.impala.thrift.TDataPartition;
 import org.apache.impala.thrift.TPartitionType;
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -102,7 +102,7 @@ public class DataPartition {
   }
 
   public String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("type_", type_)
         .addValue(Expr.debugString(partitionExprs_))
         .toString();
diff --git a/fe/src/main/java/org/apache/impala/planner/DataSourceScanNode.java b/fe/src/main/java/org/apache/impala/planner/DataSourceScanNode.java
index 90a9e90..1860baa 100644
--- a/fe/src/main/java/org/apache/impala/planner/DataSourceScanNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/DataSourceScanNode.java
@@ -59,7 +59,7 @@ import org.apache.impala.thrift.TScanRangeLocationList;
 import org.apache.impala.thrift.TScanRangeSpec;
 import org.apache.impala.thrift.TStatus;
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
@@ -283,7 +283,7 @@ public class DataSourceScanNode extends ScanNode {
 
   @Override
   protected String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("tid", desc_.getId().asInt())
         .add("tblName", table_.getFullName())
         .add("dataSource", DataSource.debugString(table_.getDataSource()))
diff --git a/fe/src/main/java/org/apache/impala/planner/HBaseScanNode.java b/fe/src/main/java/org/apache/impala/planner/HBaseScanNode.java
index 99dfb56..bcfbc00 100644
--- a/fe/src/main/java/org/apache/impala/planner/HBaseScanNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/HBaseScanNode.java
@@ -62,7 +62,7 @@ import org.apache.impala.util.ExecutorMembershipSnapshot;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -376,7 +376,7 @@ public class HBaseScanNode extends ScanNode {
   @Override
   protected String debugString() {
     FeHBaseTable tbl = (FeHBaseTable) desc_.getTable();
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("tid", desc_.getId().asInt())
         .add("hiveTblName", tbl.getFullName())
         .add("hbaseTblName", tbl.getHBaseTableName())
diff --git a/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java b/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java
index 211cb13..8ee860e 100644
--- a/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java
@@ -39,7 +39,7 @@ import org.apache.impala.thrift.TQueryOptions;
 import org.apache.impala.util.BitUtil;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -118,14 +118,14 @@ public class HashJoinNode extends JoinNode {
 
   @Override
   protected String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("eqJoinConjuncts_", eqJoinConjunctsDebugString())
         .addValue(super.debugString())
         .toString();
   }
 
   private String eqJoinConjunctsDebugString() {
-    Objects.ToStringHelper helper = Objects.toStringHelper(this);
+    MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(this);
     for (Expr entry: eqJoinConjuncts_) {
       helper.add("lhs" , entry.getChild(0)).add("rhs", entry.getChild(1));
     }
diff --git a/fe/src/main/java/org/apache/impala/planner/HdfsScanNode.java b/fe/src/main/java/org/apache/impala/planner/HdfsScanNode.java
index 4ef381c..bf7bfbb 100644
--- a/fe/src/main/java/org/apache/impala/planner/HdfsScanNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/HdfsScanNode.java
@@ -89,8 +89,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
@@ -334,7 +334,7 @@ public class HdfsScanNode extends ScanNode {
 
   @Override
   protected String debugString() {
-    ToStringHelper helper = Objects.toStringHelper(this);
+    ToStringHelper helper = MoreObjects.toStringHelper(this);
     for (FeFsPartition partition: partitions_) {
       helper.add("Partition " + partition.getId() + ":", partition.toString());
     }
diff --git a/fe/src/main/java/org/apache/impala/planner/NestedLoopJoinNode.java b/fe/src/main/java/org/apache/impala/planner/NestedLoopJoinNode.java
index da5d1ff..5fc26a0 100644
--- a/fe/src/main/java/org/apache/impala/planner/NestedLoopJoinNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/NestedLoopJoinNode.java
@@ -32,7 +32,7 @@ import org.apache.impala.thrift.TPlanNode;
 import org.apache.impala.thrift.TPlanNodeType;
 import org.apache.impala.thrift.TQueryOptions;
 
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -132,7 +132,7 @@ public class NestedLoopJoinNode extends JoinNode {
 
   @Override
   protected String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .addValue(super.debugString())
         .toString();
   }
diff --git a/fe/src/main/java/org/apache/impala/planner/ScanNode.java b/fe/src/main/java/org/apache/impala/planner/ScanNode.java
index 1547320..c47ff0a 100644
--- a/fe/src/main/java/org/apache/impala/planner/ScanNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/ScanNode.java
@@ -42,7 +42,7 @@ import org.apache.impala.thrift.TScanRangeSpec;
 import org.apache.impala.thrift.TTableStats;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -163,7 +163,7 @@ abstract public class ScanNode extends PlanNode {
 
   @Override
   protected String debugString() {
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("tid", desc_.getId().asInt())
         .add("tblName", desc_.getTable().getFullName())
         .add("keyRanges", "")
diff --git a/fe/src/main/java/org/apache/impala/planner/SortNode.java b/fe/src/main/java/org/apache/impala/planner/SortNode.java
index fe8e9ef..22b0f6e 100644
--- a/fe/src/main/java/org/apache/impala/planner/SortNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/SortNode.java
@@ -39,7 +39,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 
 /**
@@ -181,7 +181,7 @@ public class SortNode extends PlanNode {
     for (Boolean isAsc : info_.getIsAscOrder()) {
       strings.add(isAsc ? "a" : "d");
     }
-    return Objects.toStringHelper(this)
+    return MoreObjects.toStringHelper(this)
         .add("type_", type_)
         .add("ordering_exprs", Expr.debugString(info_.getSortExprs()))
         .add("is_asc", "[" + Joiner.on(" ").join(strings) + "]")
diff --git a/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java b/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
index 098f2e9..16d0501 100644
--- a/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
+++ b/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
@@ -1839,7 +1839,7 @@ public class CatalogOpExecutor {
       org.apache.hadoop.hive.metastore.api.Table msTbl = existingTbl.getMetaStoreTable();
       if (msTbl == null) {
         Preconditions.checkState(existingTbl instanceof IncompleteTable);
-        Stopwatch hmsLoadSW = new Stopwatch().start();
+        Stopwatch hmsLoadSW = Stopwatch.createStarted();
         long hmsLoadTime;
         try (MetaStoreClient msClient = catalog_.getMetaStoreClient()) {
           msTbl = msClient.getHiveClient().getTable(tableName.getDb(),
@@ -3996,7 +3996,7 @@ public class CatalogOpExecutor {
     Preconditions.checkNotNull(msClient);
     Db db = tbl.getDb();
     org.apache.hadoop.hive.metastore.api.Table msTbl = null;
-    Stopwatch hmsLoadSW = new Stopwatch().start();
+    Stopwatch hmsLoadSW = Stopwatch.createStarted();
     long hmsLoadTime;
     try {
       msTbl = msClient.getHiveClient().getTable(db.getName(), tbl.getName());
diff --git a/fe/src/main/java/org/apache/impala/service/Frontend.java b/fe/src/main/java/org/apache/impala/service/Frontend.java
index 8189222..02cd626 100644
--- a/fe/src/main/java/org/apache/impala/service/Frontend.java
+++ b/fe/src/main/java/org/apache/impala/service/Frontend.java
@@ -308,7 +308,7 @@ public class Frontend {
       Preconditions.checkState(numThreads > 0
         && numThreads <= MAX_CHECK_AUTHORIZATION_POOL_SIZE);
       if (numThreads == 1) {
-        checkAuthorizationPool_ = MoreExecutors.sameThreadExecutor();
+        checkAuthorizationPool_ = MoreExecutors.newDirectExecutorService();
       } else {
         LOG.info("Using a thread pool of size {} for authorization", numThreads);
         checkAuthorizationPool_ = Executors.newFixedThreadPool(numThreads);
diff --git a/fe/src/main/java/org/apache/impala/util/JvmPauseMonitor.java b/fe/src/main/java/org/apache/impala/util/JvmPauseMonitor.java
index 2c09b45..6c43cfd 100644
--- a/fe/src/main/java/org/apache/impala/util/JvmPauseMonitor.java
+++ b/fe/src/main/java/org/apache/impala/util/JvmPauseMonitor.java
@@ -184,8 +184,8 @@ public class JvmPauseMonitor {
   private class Monitor implements Runnable {
     @Override
     public void run() {
-      Stopwatch sw = new Stopwatch();
-      Stopwatch timeSinceDeadlockCheck = new Stopwatch().start();
+      Stopwatch sw = Stopwatch.createUnstarted();
+      Stopwatch timeSinceDeadlockCheck = Stopwatch.createStarted();
       Map<String, GcTimes> gcTimesBeforeSleep = getGcTimes();
       LOG.info("Starting JVM pause monitor");
       while (shouldRun) {
@@ -197,7 +197,7 @@ public class JvmPauseMonitor {
           return;
         }
         sw.stop();
-        long extraSleepTime = sw.elapsedTime(TimeUnit.MILLISECONDS) - SLEEP_INTERVAL_MS;
+        long extraSleepTime = sw.elapsed(TimeUnit.MILLISECONDS) - SLEEP_INTERVAL_MS;
         Map<String, GcTimes> gcTimesAfterSleep = getGcTimes();
 
         if (extraSleepTime > warnThresholdMs_) {
diff --git a/fe/src/test/java/org/apache/impala/catalog/local/CatalogdMetaProviderTest.java b/fe/src/test/java/org/apache/impala/catalog/local/CatalogdMetaProviderTest.java
index dcc922a..cb6c5a3 100644
--- a/fe/src/test/java/org/apache/impala/catalog/local/CatalogdMetaProviderTest.java
+++ b/fe/src/test/java/org/apache/impala/catalog/local/CatalogdMetaProviderTest.java
@@ -285,7 +285,7 @@ public class CatalogdMetaProviderTest {
     ExecutorService exec = Executors.newFixedThreadPool(kNumThreads);
     try {
       // Run for at least 60 seconds to try to provoke the desired behavior.
-      Stopwatch sw = new Stopwatch().start();
+      Stopwatch sw = Stopwatch.createStarted();
       while (sw.elapsed(TimeUnit.SECONDS) < 60) {
         // Submit a wave of parallel tasks which all fetch the same table, concurently.
         // One of these should win whereas the others are likely to piggy-back on the
diff --git a/impala-parent/pom.xml b/impala-parent/pom.xml
index adb8158..4947497 100644
--- a/impala-parent/pom.xml
+++ b/impala-parent/pom.xml
@@ -59,7 +59,7 @@ under the License.
     <eclipse.output.directory>eclipse-classes</eclipse.output.directory>
     <!-- hive-exec seems to leak this version of guava onto our classpath,
          so it's important to depend on the same one -->
-    <guava.version>14.0.1</guava.version>
+    <guava.version>28.1-jre</guava.version>
     <derby.version>10.14.2.0</derby.version>
     <jackson-databind.version>2.10.0</jackson-databind.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>