1

我在 Drill 中设置了以下存储插件:

{
  "type": "hive",
  "enabled": true,
  "configProps": {
    "hive.metastore.uris": "thrift://hivemetastore.hostname.com:9083",
    "hive.metastore.sasl.enabled": "false"
  }
}

然而,一个简单的

SELECT * FROM hive.table LIMIT 5;

...

5 rows selected (35.383 seconds)
0: jdbc:drill:> 

响应时间超过 30 秒。我错过了什么/我应该从哪里开始故障排除?

Hive 元存储服务器现在与 Drill 相同。并且表中的记录不到 20,000 条。

4

1 回答 1

0

只有 MapR 沙箱上的 MapR Drill 应该使用您正在使用的稀疏存储插件配置。在沙箱中,事情是在幕后配置的。

嵌入式元存储服务

假设您使用的是 Drill 安装,而不是沙箱,并且您使用的是嵌入式 Metastore 服务(默认), configProps 需要看起来像这样(根据文档):

  "configProps": {
      "hive.metastore.uris": "",
      "javax.jdo.option.ConnectionURL": "jdbc:<database>://<host:port>/<metastore database>",
      "hive.metastore.warehouse.dir": "/tmp/drill_hive_wh",
      "fs.default.name": "file:///",
      "hive.metastore.sasl.enabled": "false"
    }

从存储插件配置中删除“hive.metastore.uris”:“thrift://:”。这是与远程配置单元元存储服务一起使用的。

“javax.jdo.option.ConnectionURL”可能是 MySQL 数据库。Hive 元存储服务提供对 MySQL 等物理数据库的访问。MySQL 存储元数据。“fs.default.name”是数据所在的文件系统位置。

嵌入式元存储配置仅用于测试,而不是根据文档在生产系统中使用。为了提高性能,请配置远程元存储。此外,请检查您使用的 Hive 版本的兼容性。开源 Apache Drill 1.0 支持 Hive 0.13。Drill 1.1 和更高版本支持 Hive 1.0。

远程元存储服务

如果您使用远程元存储,“fs.default.name”应该指向主控制节点。例如,指向一个 NameNode。如果您使用 MapR Drill,“fs.default.name”应该是 maprfs:///。MapR FileClient 从 mapr-clusters.conf 中找出 CLDB 位置。启动 metastore 服务,该服务作为单独的包安装在 Hive 之上:

hive --service metastore

如果您使用开源 Apache Drill,远程 Metastore 配置应该如下所示:

{
  "type": "hive",
  "enabled": true,
  "configProps": {
    "hive.metastore.uris": "thrift://mfs41.mystore:9083",
    "hive.metastore.sasl.enabled": "false",
    "fs.default.name": "maprfs://10.10.10.41/"
  }
}
于 2015-11-11T21:39:37.543 回答