为Presto和AWS S3设置独立的Hive Metastore服务

mha*_*ken 5 hive presto hive-metastore

我的工作环境是将S3服务用作数据湖,但没有AWS Athena。我正在尝试设置Presto以能够查询S3中的数据,并且我知道我需要通过Hive Metastore服务将数据结构定义为Hive表。我正在Docker中部署每个组件,所以我想使容器的尺寸尽可能的小。我需要从Hive的哪些组件开始运行Metastore服务?我实际上并不真正在乎运行Hive,而只是在关心Metastore。我可以减少所需的东西,还是已经为此预先配置了软件包?我没有找到任何在线内容,其中不包括下载所有Hadoop和Hive。我想做的事可能吗?

Jar*_*red 11

它现在可以/hive-standalone-metastore-3.0.0/在 Apache Hive 发行版中独立使用。

从 Hive 3.0 开始,Metastore 作为单独的包发布,可以在没有 Hive 其余部分的情况下运行。这称为独立模式。

默认情况下,Metastore 配置为与 Hive 一起使用,因此必须在此配置中更改一些配置参数。

metastore.task.threads.always -> org.apache.hadoop.hive.metastore.events.EventCleanerTask,org.apache.hadoop.hive.metastore.MaterializationsCacheCleanerTask
metastore.expression.proxy -> org.apache.hadoop.hive.metastore.DefaultPartitionExpressionProxy
Run Code Online (Sandbox Code Playgroud)

链接到文档


kok*_*ing 5

有一种解决方法,您不需要配置单元即可运行presto。但是我还没有尝试过像s3这样的任何分布式文件系统,但是代码建议它应该可以工作(至少与HDFS一起工作)。我认为值得尝试,因为您根本不需要任何新的docker映像来配置单元。

这个想法是使用内置的FileHiveMetastore。它既没有记录也没有建议用于生产中,但您可以使用它。模式信息存储在文件系统中数据旁边。显然,它有其优点和缺点。我不知道您的用例的详细信息,所以不知道它是否适合您的需求。

组态:

connector.name=hive-hadoop2
hive.metastore=file
hive.metastore.catalog.dir=file:///tmp/hive_catalog
hive.metastore.user=cox
Run Code Online (Sandbox Code Playgroud)

演示:

presto:tiny> create schema hive.default;
CREATE SCHEMA
presto:tiny> use hive.default;
USE
presto:default> create table t (t bigint);
CREATE TABLE
presto:default> show tables;
 Table
-------
 t
(1 row)

Query 20180223_202609_00009_iuchi, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:00 [1 rows, 18B] [11 rows/s, 201B/s]

presto:default> insert into t (values 1);
INSERT: 1 row

Query 20180223_202616_00010_iuchi, FINISHED, 1 node
Splits: 51 total, 51 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

presto:default> select * from t;
 t
---
 1
(1 row)
Run Code Online (Sandbox Code Playgroud)

完成上述操作后,我可以在我的机器上找到以下内容:

/tmp/hive_catalog/
/tmp/hive_catalog/default
/tmp/hive_catalog/default/t
/tmp/hive_catalog/default/t/.prestoPermissions
/tmp/hive_catalog/default/t/.prestoPermissions/user_cox
/tmp/hive_catalog/default/t/.prestoPermissions/.user_cox.crc
/tmp/hive_catalog/default/t/.20180223_202616_00010_iuchi_79dee041-58a3-45ce-b86c-9f14e6260278.crc
/tmp/hive_catalog/default/t/.prestoSchema
/tmp/hive_catalog/default/t/20180223_202616_00010_iuchi_79dee041-58a3-45ce-b86c-9f14e6260278
/tmp/hive_catalog/default/t/..prestoSchema.crc
/tmp/hive_catalog/default/.prestoSchema
/tmp/hive_catalog/default/..prestoSchema.crc
Run Code Online (Sandbox Code Playgroud)