热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用TPCH对Pig测试

2019独角兽企业重金招聘Python工程师标准在做完RunningTPC-HonHive后,又紧接着使用TPC-H对Pig进行了测试。有了对Hive测试的基础

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在做完Running TPC-H on Hive后,又紧接着使用TPC-H对Pig进行了测试。有了对Hive测试的基础,在Pig上进行测试就相对简单多了,基本上都是“拿来主义”,都是现成的。需要使用的8个测试表以及测试数据都已经在Hive测试中生成过了,所以在Pig上就跑一遍测试程序看看结果就可以啦。下面,就来说说TPC-H在Pig上测试的具体步骤。

 

系统环境:

    6个结点,ubuntu01为master结点,ubuntu02-ubuntu06为slave结点

    Ubuntu 12.04 LTS

    Hadoop-1.2.1

    Hive-0.13.1

    tpch_2_14_3

一、安装配置

1、下载TPC-H源码tpch_2_14_3.zip,用来生成测试数据

      网址:http://www.tpc.org/tpch/default.asp

2、将TPC-H压缩包解压,本文中解压目录为:/opt/

     命令:ubuntu@ubuntu01:~$ unzip tpch_2_14_3.zip -C /opt/

3、进入tpch目录下的dbgen子目录下,将makefile.suite文件拷贝为makefile,并对makefile进行修改

     命令:ubuntu@ubuntu01:/opt/dbgen$ cp makefile.suite makefile

     命令:ubuntu@ubuntu01:/opt/dbgen$ gedit makefile

     在makefile文件中的相应行进行如下修改:CC      = gcc

     # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)  

     #                                  SQLSERVER, SYBASE  

     # Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS, 

     #                                  SGI, SUN, U2200, VMS, LINUX, WIN32   

     # Current values for WORKLOAD are:  TPCH 

     DATABASE= SQLSERVER  

     MACHINE = LINUX  

     WORKLOAD = TPCH 

4、修改dbgen文件夹下的tpcd.h文件

     修改其中的SQLSERVER段:

     #ifdef  SQLSERVER
     #define GEN_QUERY_PLAN        "EXPLAIN;"
     #define START_TRAN                "START TRANSACTION;\n"
     #define END_TRAN                "COMMIT;\n"
     #define SET_OUTPUT                ""
     #define SET_ROWCOUNT                "limit %d;\n"
     #define SET_DBASE                "use %s;\n"
     #endif

5、执行makefile

     命令:ubuntu@ubuntu01:/opt/dbgen$ make

6、生成需要用的数据

     命令:ubuntu@ubuntu01:/opt/dbgen$ ./dbgen -s 1

     说明:-s 代表数据规模因子,1 代表产生1G的数据量

     在当前文件夹下生成的8个.tbl文件就是我们所需要的数据。

7、建立表,以及向表中加载数据

     在TPC-H_on_Hive/data目录下有个tpch_prepare_data.sh文件,通过查看这个文件中的语句可知,运行这个命令可以在HDFS上建立我们所需要的8个数据表,并且将本地产生的数据文件拷贝到HDFS中。

     命令:ubuntu@ubuntu01:/opt/TPC-H_on_Hive/data$ ./tpch_prepare_data.sh

--------------------------------分割线-------------------------------------

     如果已经进行过Hive测试的话,上边7个步骤都是可以省略的,就像我一开始说的,Pig上边的这套和Hive很大程度上是通用的 ( 不了解的可以看我的上一篇博客 )。从这开始,就要进入Pig测试正题了。

二、Pig测试

     8、下载TPC-H_on_Pig

     网址:https://issues.apache.org/jira/browse/PIG-2397

     下载之后,同样解压到/opt/目录下,将之前生成的8个表拷贝到TPC-H_on_Pig文件夹中。

     9、测试

     Pig测试命令:ubuntu@ubuntu01:/opt/TPC_H_on_Pig/$ ./run_tpch.sh hdfs://ubuntu01:9000/tpch/ hdfs://ubuntu01:9000/user/ 5

     逐个解释一下每个参数的含义:

     第一个:./run_tpch.sh,这个就不多说了;

     第二个:hdfs://ubuntu01:9000/tpch/ 这是输入数据的路径,但要注意的是这个路径是HDFS上的路径;

     第三个:hdfs://ubuntu01:9000/user/ 这是输出数据的路径,同样也是HDFS上的文件路径;

     第四个:5 这个参数表示的是reducers的个数,可以根据自己系统环境的情况来决定

     运行这个命令就万事大吉了,但由于测试时间可能会达到3个小时左右,所以最好将terminal中打印的信息输入到一个文本文件,这样可以方便查看。实现这种输出其实很简单,只需要使用tee命令就可以,在这里我们采用追加的方式向文本文件输出,命令如下:

命令:ubuntu@ubuntu01:/opt/TPC_H_on_Pig/$ ./run_tpch.sh hdfs://ubuntu01:9000/tpch/ hdfs://ubuntu01:9000/user/ 5 | tee -a q1~q22_Pig.txt

      其中,q1~q22_Pig.txt 代表输出文本文件名。

三、总结

     由于之前对Pig也是十分不了解,所以就跑去看README。对README里边的命令解释真心无语。原文中对于单个SQL脚本文件的给出的运行命令是

     ${PIG_HOME}/bin/pig $hadoop_opts -param input= -param output= -param reducers= -f queries/

     其他参数都好理解,唯独-param这个参数我是真不明白啥意思。看了一天都毫无进展,实在不了解它到底代表什么。就在准备撒手不干的时候,抱着试一试的心态就直接使用了 '-param',结果还真是这样,直接用,当场就一脸黑线啊有木有,可怜我一整天的时间啊,都浪费在这上面了。以后就吸取教训了,管他知不知道,都试试,没准就碰上了呢。


转:https://my.oschina.net/u/1412751/blog/353951



推荐阅读
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • Django框架下的对象关系映射(ORM)详解
    在Django框架中,对象关系映射(ORM)技术是解决面向对象编程与关系型数据库之间不兼容问题的关键工具。通过将数据库表结构映射到Python类,ORM使得开发者能够以面向对象的方式操作数据库,从而简化了数据访问和管理的复杂性。这种技术不仅提高了代码的可读性和可维护性,还增强了应用程序的灵活性和扩展性。 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • 优化Oracle数据库日志功能的关闭方法与实践
    在优化Oracle数据库日志功能的过程中,关闭不必要的日志记录是一项重要任务。本文探讨了Oracle 11g中日志路径的配置和管理,特别是针对常用的警报日志(alert log)。通过合理配置 `alert_$ORACLE_SID.log` 文件,可以有效减少日志文件的大小和提高系统性能。此外,文章还介绍了如何通过调整参数和使用脚本自动化日志管理,进一步提升数据库的稳定性和维护效率。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 本指南详细介绍了如何使用 `apt-get` 命令在 Ubuntu 系统上部署 MySQL 5、Apache 2、PHP 5 及 phpMyAdmin。首先,建议读者查阅 Ubuntu 的官方文档以获取更多背景信息。通过本文,您将逐步了解每个软件包的安装过程及其配置方法,确保系统环境的稳定性和安全性。此外,还将提供一些常见问题的解决方案,帮助用户顺利完成部署。 ... [详细]
  • 深入解析Web.xml中Servlet与Filter的URL模式匹配机制 ... [详细]
  • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 在Hive中执行复杂SQL查询时,可能会遇到返回代码2的运行时错误。该问题通常发生在使用HiveServer2启动服务端并使用Beeline客户端进行连接的情况下。具体原因可能包括资源不足、配置不当或数据倾斜等。为了解决这一问题,建议检查集群资源分配、调整相关配置参数,并优化查询逻辑以减少数据倾斜。此外,还可以通过启用调试日志来获取更多错误信息,从而更好地定位和解决问题。 ... [详细]
author-avatar
落单鸟人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有