FAQ
Author: brock
Date: Thu Jan 8 18:44:37 2015
New Revision: 1650353

URL: http://svn.apache.org/r1650353
Log:
HIVE-9300 - Make TCompactProtocol configurable (Prasanth J via Brock)

Modified:
     hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
     hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
     hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java

Modified: hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java?rev=1650353&r1=1650352&r2=1650353&view=diff
==============================================================================
--- hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (original)
+++ hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java Thu Jan 8 18:44:37 2015
@@ -412,6 +412,9 @@ public class HiveConf extends Configurat
          "If true, the metastore Thrift interface will be secured with SASL. Clients must authenticate with Kerberos."),
      METASTORE_USE_THRIFT_FRAMED_TRANSPORT("hive.metastore.thrift.framed.transport.enabled", false,
          "If true, the metastore Thrift interface will use TFramedTransport. When false (default) a standard TTransport is used."),
+ METASTORE_USE_THRIFT_COMPACT_PROTOCOL("hive.metastore.thrift.compact.protocol.enabled", false,
+ "If true, the metastore Thrift interface will use TCompactProtocol. When false (default) TBinaryProtocol will be used.\n" +
+ "Setting it to true will break compatibility with older clients running TBinaryProtocol."),
      METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_CLS("hive.cluster.delegation.token.store.class",
          "org.apache.hadoop.hive.thrift.MemoryTokenStore",
          "The delegation token store implementation. Set to org.apache.hadoop.hive.thrift.ZooKeeperTokenStore for load-balanced cluster."),

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java?rev=1650353&r1=1650352&r2=1650353&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java Thu Jan 8 18:44:37 2015
@@ -204,7 +204,9 @@ import org.apache.hadoop.util.Reflection
  import org.apache.hadoop.util.StringUtils;
  import org.apache.thrift.TException;
  import org.apache.thrift.TProcessor;
+import org.apache.thrift.protocol.TBinaryProtocol;
  import org.apache.thrift.protocol.TCompactProtocol;
+import org.apache.thrift.protocol.TProtocolFactory;
  import org.apache.thrift.server.TServer;
  import org.apache.thrift.server.TThreadPoolServer;
  import org.apache.thrift.transport.TFramedTransport;
@@ -5814,6 +5816,7 @@ public class HiveMetaStore extends Thrif
        int maxWorkerThreads = conf.getIntVar(HiveConf.ConfVars.METASTORESERVERMAXTHREADS);
        boolean tcpKeepAlive = conf.getBoolVar(HiveConf.ConfVars.METASTORE_TCP_KEEP_ALIVE);
        boolean useFramedTransport = conf.getBoolVar(ConfVars.METASTORE_USE_THRIFT_FRAMED_TRANSPORT);
+ boolean useCompactProtocol = conf.getBoolVar(ConfVars.METASTORE_USE_THRIFT_COMPACT_PROTOCOL);
        useSasl = conf.getBoolVar(HiveConf.ConfVars.METASTORE_USE_THRIFT_SASL);

        TServerTransport serverTransport = tcpKeepAlive ?
@@ -5821,6 +5824,15 @@ public class HiveMetaStore extends Thrif

        TProcessor processor;
        TTransportFactory transFactory;
+ final TProtocolFactory protocolFactory;
+ final TProtocolFactory inputProtoFactory;
+ if (useCompactProtocol) {
+ protocolFactory = new TCompactProtocol.Factory();
+ inputProtoFactory = new TCompactProtocol.Factory(maxMessageSize, maxMessageSize);
+ } else {
+ protocolFactory = new TBinaryProtocol.Factory();
+ inputProtoFactory = new TBinaryProtocol.Factory(true, true, maxMessageSize, maxMessageSize);
+ }
        HMSHandler baseHandler = new HiveMetaStore.HMSHandler("new db based metaserver", conf,
            false);
        IHMSHandler handler = newRetryingHMSHandler(baseHandler, conf);
@@ -5860,9 +5872,8 @@ public class HiveMetaStore extends Thrif
        TThreadPoolServer.Args args = new TThreadPoolServer.Args(serverTransport)
            .processor(processor)
            .transportFactory(transFactory)
- .protocolFactory(new TCompactProtocol.Factory())
- .inputProtocolFactory(
- new TCompactProtocol.Factory(maxMessageSize, maxMessageSize))
+ .protocolFactory(protocolFactory)
+ .inputProtocolFactory(inputProtoFactory)
            .minWorkerThreads(minWorkerThreads)
            .maxWorkerThreads(maxWorkerThreads);


Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java?rev=1650353&r1=1650352&r2=1650353&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java Thu Jan 8 18:44:37 2015
@@ -135,7 +135,9 @@ import org.apache.hadoop.security.UserGr
  import org.apache.hadoop.util.StringUtils;
  import org.apache.thrift.TApplicationException;
  import org.apache.thrift.TException;
+import org.apache.thrift.protocol.TBinaryProtocol;
  import org.apache.thrift.protocol.TCompactProtocol;
+import org.apache.thrift.protocol.TProtocol;
  import org.apache.thrift.transport.TFramedTransport;
  import org.apache.thrift.transport.TSocket;
  import org.apache.thrift.transport.TTransport;
@@ -349,6 +351,7 @@ public class HiveMetaStoreClient impleme
      TTransportException tte = null;
      boolean useSasl = conf.getBoolVar(ConfVars.METASTORE_USE_THRIFT_SASL);
      boolean useFramedTransport = conf.getBoolVar(ConfVars.METASTORE_USE_THRIFT_FRAMED_TRANSPORT);
+ boolean useCompactProtocol = conf.getBoolVar(ConfVars.METASTORE_USE_THRIFT_COMPACT_PROTOCOL);
      int clientSocketTimeout = (int) conf.getTimeVar(
          ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT, TimeUnit.MILLISECONDS);

@@ -390,8 +393,13 @@ public class HiveMetaStoreClient impleme
            } else if (useFramedTransport) {
              transport = new TFramedTransport(transport);
            }
-
- client = new ThriftHiveMetastore.Client(new TCompactProtocol(transport));
+ final TProtocol protocol;
+ if (useCompactProtocol) {
+ protocol = new TCompactProtocol(transport);
+ } else {
+ protocol = new TBinaryProtocol(transport);
+ }
+ client = new ThriftHiveMetastore.Client(protocol);
            try {
              transport.open();
              isConnected = true;

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 1 | next ›
Discussion Overview
groupcommits @
categorieshive, hadoop
postedJan 8, '15 at 6:44p
activeJan 8, '15 at 6:44p
posts1
users1
websitehive.apache.org

1 user in discussion

Brock: 1 post

People

Translate

site design / logo © 2021 Grokbase