只有 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/"
}
}