暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DLA Presto支持自建HiveMetastore数据源

云原生数据湖 2021-02-28
307

背景介绍

阿里云数据湖分析(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。


          5.建表

          可以通过create table或msck两种方式修表。

          • 创建表映射

            CREATE EXTERNAL TABLE if not exists dladb.testTable(
            id int,
            name string);
              说明 表名testTable需要和HiveMetastore中对于的db的表名相同。
            • msck创建表映射

              msck repair database dladb;

              6.查询表

              查询或访问数据由于只有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

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


                文章转载自云原生数据湖,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论