鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

使用OmniCache物化视图推荐视图

本次任务示例使用TPC-DS的数据表作为测试表。

  1. 生成测试数据。
    1. 使用hive-testbench工具生成tpcds-8T数据。该工具是hortonworks开源的Hive测试工具。下载网址:https://github.com/hortonworks/hive-testbench,或者使用如下命令下载。
      wget https://github.com/hortonworks/hive-testbench/archive/hdp3.zip --no-check-certificate
    2. 安装Maven。下载并安装到指定目录(此处以指定“/opt/tools/installed/”目录为例)。
      wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
      tar -zxf apache-maven-3.5.4-bin.tar.gz
      mv apache-maven-3.5.4 /opt/tools/installed/
    3. 修改Maven环境变量。
      1. 打开“/etc/profile”文件。
        vim /etc/profile
      2. “i”进入编辑模式,在文件末尾增加下面代码。
        export MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4
        export PATH=$MAVEN_HOME/bin:$PATH
      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
      4. 使环境变量生效。
        source /etc/profile
    4. 检查Maven是否安装成功。
      mvn -v
  2. TPC-DS编译。
    1. 进入“tpcds-gen”目录。
      cd tpcds-gen
    2. 打开pom文件。
      vim pom.xml
    3. “i”进入编辑模式,将<dependencies>标签内的Hadoop版本修改成环境的版本进行编译。例如:本文档使用的是Hadoop版本为3.1.1(开源自带的版本为2.2.0)。

      在进行编译前需要保证自己的环境是联网的,能下载各种包,也可以先在联网环境编译成功后,放到非联网环境。

    4. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    5. 编译TPC-DS。如果安装的时候,证书引起报错,请参见编译TPC-DS时证书引起报错解决。
      cd /opt/hive-testbench-hdp3/
      sh tpcds-build.sh
  3. TPC-DS脚本修改。

    由于该脚本是针对HDP3版本的,所以当用户使用的是Apache的版本时,需要对tpcds-setup.sh做如下修改。

    1. 修改Beeline命令。
      1. 打开“/opt/hive-testbench-hdp3/tpcds-setup.sh”脚本。
        vim /opt/hive-testbench-hdp3/tpcds-setup.sh
      2. “i”进入编辑模式,脚本指定了HIVE的命令为Beeline,这里需要根据自己的环境修改,为了测试方便,此处修改为HIVE="hive "

      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    2. 注释hive.optimize.sort.dynamic.partition.threshold参数。
      1. 打开/opt/hive-testbench-hdp3/settings/load-partitioned.sql文件。
        vim /opt/hive-testbench-hdp3/settings/load-partitioned.sql
      2. “i”进入编辑模式,“#”注释最后一行。
      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    3. 注释set hive.optimize.sort.dynamic.partition.threshold=0;参数。
      1. 打开/opt/hive-testbench-hdp3/settings/load-flat.sql文件。
        vim /opt/hive-testbench-hdp3/settings/load-flat.sql
      2. “i”进入编辑模式,“#”注释最后一行。

        注释后如下所示:

      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. TPC-DS数据生成。

    测试生成8TB数据(一般进行Hive性能测试时可以选8000GB的数据量)。

    sh tpcds-setup.sh 8000
  5. 修改配置文件。
    1. 打开文件。
      vim config/omnicache_config.cfg
    2. “i”进入编辑模式,修改如下参数。
      # 数据库名称
      database = tpcds_bin_partitioned_decimal_orc_8000
      # 日志解析的JAR包路径
      logparser_jar_path = /opt/omnicache/boostkit-omnicache-logparser-spark-3.1.1-1.0.0-aarch64.jar
      # OmniCache Plugin的路径
      cache_plugin_jar_path = /opt/omnicache/boostkit-omnicache-spark-3.1.1-1.0.0-aarch64.jar
      # spark-defaults.conf路径下面配置的spark history输出的路径
      hdfs_input_path = hdfs://server1:9000/spark2-history
      # SQL语句的存放路径,这里以tpcds sql为例
      sqls_path = hdfs://server1:9000/omnicache_0919/tpcds
      表1 OmniCache物化视图部分配置

      配置项

      含义

      参考值

      database

      用于测试的数据库名称

      -

      logparser_jar_path

      日志解析JAR包路径

      /opt/omnicache/boostkit-omnicache-logparser-spark-3.1.1-1.0.0-aarch64.jar

      cache_plugin_jar_path

      OmniCache物化视图的JAR包路径

      /opt/omnicache/boostkit-omnicache-spark-3.1.1-1.0.0-aarch64.jar

      hdfs_input_path

      Spark任务运行日志在HDFS上的访问地址

      hdfs://server1:9000/spark2-history

      sqls_path

      测试SQL在HDFS上的访问地址

      hdfs://server1:9000/omnicache_0919/tpcds

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  6. 获取测试SQL(以tpcds为例)。
    1. 下载Spark源码并解压,在“spark-master/sql/core/src/test/resources/tpcds/”路径下获取TPC-DS测试SQL。
    2. 将测试SQL传到HDFS上(路径为配置文件中sqls_path的值)。
      hdfs dfs -mkdir -p hdfs://server1:9000/omnicache_0919/tpcds
      hdfs dfs -put /spark源码目录/sql/core/src/test/resources/tpcds/* hdfs://server1:9000/omnicache_0919/tpcds/
  7. 初始化数据库。这一步主要是获取目标表的建表信息,用于后续创建推荐视图。

    屏幕打印“init_database succeed!”说明执行成功。

    python3 main.pyc init_database

  8. 运行测试SQL(以TPC-DS测试SQL为例)。

    屏幕打印“run_original_sqls succeed!”说明执行成功。

    python3 main.pyc run_original_sqls

  9. 解析运行日志。
    1. 通过http://ip:18080地址访问Spark History Server查看原生SQL任务起止时间。
    2. 打开配置文件“config/omnicache_config.cfg”
      vim config/omnicache_config.cfg
    3. “i”进入编辑模式,修改如下参数。
      # 测试sql运行开始时间
      q_log_start_time = 2022-09-15 11:58
      # 测试sql运行结束时间
      q_log_end_time = 2022-09-15 17:15
    4. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    5. 运行日志解析脚本。

      屏幕打印“parse_query_logs succeed!”说明执行成功。

      python3 main.pyc parse_query_logs

  10. 生成候选视图。
    1. 可选:修改配置文件“config/omnicache_config.cfg”
      1. 可选:打开文件。
        vim config/omnicache_config.cfg
      2. “i”进入编辑模式,在文件中修改以下内容。
        # 候选TOP mv的数量限制,实际推荐数量小于等于该值
        cnt_limit = 40
      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    2. 运行脚本。
      屏幕打印“generate_candidate_view_spark succeed!”说明执行成功。
      python3 main.pyc generate_views

  11. 运行创建topN视图(需要人为确认,是否可以真实的创建这个候选的视图)。

    屏幕打印“create_top_views succeed!”说明执行成功。

    python3 main.pyc create_top_views

  12. 运行物化视图重写任务。

    屏幕打印“run_rewrite_sqls succeed!”说明执行成功。

    python3 main.pyc run_rewrite_sqls

  13. 解析重写任务日志。
    1. 通过http://ip:18080地址访问Spark History Server查看重写任务起止时间。
    2. 修改配置文件“config/omnicache_config.cfg”
      1. 打开文件。
        vim config/omnicache_config.cfg
      2. “i”进入编辑模式,在文件中修改以下内容。
        # 重写任务开始时间
        q_mv_log_start_time = 2022-09-15 20:18
        # 重写任务结束时间
        q_mv_log_end_time = 2022-09-15 21:17
      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    3. 运行脚本。

      屏幕打印“parse_query_mv_logs succeed!”说明执行成功。

      python3 main.pyc parse_query_mv_logs

  14. 训练代价评估模型。

    屏幕打印“train_cost_estimation_model succeed!”说明执行成功。

    python3 main.pyc cost_estimation

  15. 训练推荐模型。

    屏幕打印“train_recommend_model succeed!”说明执行成功。

    python3 main.pyc recommend

  16. 获取推荐的物化视图。
    屏幕打印“get_recommend_mvs succeed!”说明执行成功。
    python3 main.pyc get_recommend_mvs
  17. 创建推荐的物化视图(需要人为确认,是否可以真实的创建这个推荐的视图)。
    屏幕打印“create_recommend_views succeed!”说明执行成功。
    python3 main.pyc create_recommend_views