DLA Presto支持自建HiveMetastore数据源

背景介绍

阿里云数据湖分析(DLA)产品提供一站式的数据湖分析与计算服务。DLA Presto可以实现高效的在线分析,主要面向用户探索式分析、报表以及轻量ETL的场景。


DLA Presto已经支持比较多的数据源,但对于用户自建的大数据集群(它元数据存储在HiveMetastore,数据存储在HDFS),有时也希望和OSS、RDS、AnalyticsDB、MaxCompute、TableStore、ElasticSearch等数据关联查询,但却较难实现。因此DLA近期发布了支持访问用户自建HiveMetastore的功能,可以通过DLA分析自建HiveMetastore的数据。此外还能通过DLA Presto加速查询性能。


操作步骤

1. 准备数据。

  • 在自建的HiveMetastore中创建库,表,并插入一条记录。
CREATE DATABASE testdb;

CREATE EXTERNAL TABLE if not exists testdb.testTable(
                id int,
                name string);

insert into testdb.testTable(id, name) values (1, "jack");

2. 开通DLA Presto CU版

3. 绑定数据源网络。注意这里绑定的数据源网络和HiveMetastore要在同一个vpc下面,确保网络可以联通。

4. 连接DLA,创建库:

CREATE DATABASE `dladb`
WITH DBPROPERTIES (
    catalog = 'customer_hive',
    database = 'testdb',
    location = '172.16.199.34:9083',
    vpc_id = 'xxx',
    hdfs_properties = 'fs.defaultFS=hdfs://172.16.199.41:9000'
)

说明 您也可以通过MySQL客户端或者程序代码等方式链接DLA,然后执行SQL命令创建库。参数说明:

  • catalog 固定为customer_hive,表示数据源是用户的HiveMetastore数据。
  • database 指定用户HiveMetastore的HiveServer中的库名。
  • location 指定用户HiveMetastore的HiveServer地址。
  • vpc_id 指定HiveMetastore所在的vpc。
  • hdfs_properties 指定HiveMetastore中默认的hdfs配置。包括两种情况:
    • 非HA的HDFS:
hdfs_properties='fs.defaultFS=hdfs://172.16.199.41:9000'

注释,这里的hdfs的配置为自建HDFS的地址,需要指定为IP或域名,不能为hostname。
    • HA的HDFS:
hdfs_properties='fs.defaultFS=hdfs://emr-cluster;dfs.nameservices=emr-cluster;dfs.client.failover.proxy.provider.emr-cluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider;dfs.ha.namenodes.emr-cluster=nn1,nn2;dfs.nameservice.id=emr-cluster;dfs.namenode.rpc-address.emr-cluster.nn1=172.16.199.34:8020;dfs.namenode.rpc-address.emr-cluster.nn2=172.16.199.35:8020'

注释,这里的hdfs的配置为自建HA HDFS的配置,需要指定为IP或域名,不能为hostname。
  1. 建表,可以通过create table或msck两种方式修表。
  • 创建表映射
CREATE EXTERNAL TABLE if not exists dladb.testTable(
                id int,
                name string);

说明 表名testTable需要和HiveMetastore中对于的db的表名相同。

  • msck创建表映射
msck repair database dladb;


  1. 查询表

查询或访问数据由于只有CU的计算资源和HiveMetastore网络可以联通,因此所有访问HiveMetastore表的SQL语句都需要指定hint: /*+cluster=your-vc-name*/ ,这样SQL就会在CU中执行。

示例:

mysql> /*+ cluster=vc-test */ select * from  dladb.testTable;
+------+------+
| id   | name |
+------+------+
|    1 | jack |
+------+------+
1 row in set (1.74 sec)

更多信息可参考DLA帮助文档。

使用DLA Presto的优势

DLA Presto(兼容Presto)的目标是提供比开源自建更高的性价比、开箱即用的体验、方便的数据摄入、MySQL生态带来的简单易用、内置各种优化的数据湖分析计算服务。用户可以先通过使用Serverless版本低成本试用,然后根据使用频率的高低、对资源是否有强独占的需求来决定生产环境使用Serverless版本还是CU版本。DLA Presto还在不断发展中,目前规划中的一些特性包含:

  • 按照时间段或者工作负载进行自动扩缩容,帮助用户节省成本。
  • 支持文件缓存机制,提升查询性能
  • 内置大数据最佳实践,自动拦截Bad SQL

欢迎大家关注我们的钉钉群获取最新的信息:

DLA Presto支持自建HiveMetastore数据源



上一篇:阿里云服务器IP测试一下哪个地域比较好?


下一篇:阿里云服务器降级配置的方法