Index: conf/hive-default.xml
===================================================================
--- conf/hive-default.xml (revision 5533)
+++ conf/hive-default.xml (working copy)
@@ -485,4 +485,15 @@
Whether sorting is enforced. If true, while inserting into the table, sorting is enforced.
+
+ hive.metastore.server.min.threads
+ 200
+ Minimum number of worker threads in the Thrift server's pool.
+
+
+
+ hive.metastore.server.max.threads
+ 100000
+ Maximum number of worker threads in the Thrift server's pool.
+
Index: metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
===================================================================
--- metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (revision 5533)
+++ metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (working copy)
@@ -110,6 +110,10 @@
init();
}
+ public HiveConf getConf() {
+ return hiveConf;
+ }
+
private ClassLoader classLoader;
private AlterHandler alterHandler;
{
@@ -960,12 +964,22 @@
port = new Integer(args[0]);
}
try {
+
+ HMSHandler handler = new HMSHandler("new db based metaserver");
+ HiveConf conf = handler.getConf();
+
+ // Server will create new threads up to max as necessary. After an idle
+ // period, it will destory threads to keep the number of threads in the
+ // pool to min.
+ int minWorkerThreads = conf.getIntVar(HiveConf.ConfVars.METASTORESERVERMINTHREADS);
+ int maxWorkerThreads = conf.getIntVar(HiveConf.ConfVars.METASTORESERVERMAXTHREADS);
+
TServerTransport serverTransport = new TServerSocket(port);
- Iface handler = new HMSHandler("new db based metaserver");
FacebookService.Processor processor = new ThriftHiveMetastore.Processor(
handler);
TThreadPoolServer.Options options = new TThreadPoolServer.Options();
- options.minWorkerThreads = 200;
+ options.minWorkerThreads = minWorkerThreads;
+ options.maxWorkerThreads = maxWorkerThreads;
TServer server = new TThreadPoolServer(processor, serverTransport,
new TTransportFactory(), new TTransportFactory(),
new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), options);
Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
===================================================================
--- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 5533)
+++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy)
@@ -51,7 +51,7 @@
public static final HiveConf.ConfVars[] metaVars = {
HiveConf.ConfVars.METASTOREDIRECTORY,
HiveConf.ConfVars.METASTOREWAREHOUSE,
- HiveConf.ConfVars.METASTOREURIS
+ HiveConf.ConfVars.METASTOREURIS,
};
/**
@@ -95,6 +95,8 @@
METASTOREURIS("hive.metastore.uris", ""),
METASTOREPWD("javax.jdo.option.ConnectionPassword", ""),
+ METASTORESERVERMINTHREADS("hive.metastore.server.min.threads", 200),
+ METASTORESERVERMAXTHREADS("hive.metastore.server.max.threads", Integer.MAX_VALUE),
// CLI
CLIIGNOREERRORS("hive.cli.errors.ignore", false),