Hadoop Gridmix是针对hadoop系统的基准测试程序。它具备评测大规模数据处理系统所需的各个功能模块,包括:产生数据,生成并提交作业,统计作业完成时间等。在此以hadoop-0.20.2-cdh3u1为例,简单说明gridmix的编辑执行基准测试的过程。
Gridmix相关文件说明
在HADOOP_HOME目录下找到src\benchmarks,可以看到gridmix,gridmix2两个目录。
- gridmix目录下为javasort、maxent等8种测试类型的运行脚本,每种测试目录下包含后缀为.large、.medium、.small的3个文件。从文件名可以看出是不同数据量的测试方案。generateData.sh生成测试数据。gridmix_env被generateData.sh调用,设置HADOOP_HOME等环境变量。
- gridmix2目录下src目录及build.xml,用ant编译生成gridmix.jar,用于执行测试;gridmix-env-2和generateGridmix2data.sh与gridmix下的同类型文件作用类似,部分配置不同;gridmix_config.xml详细配置了各项测试执行时的参数;rungridmix_2用来运行测试的启动脚本;README.gridmix2是关于gridmix2的说明。
编译gridmix.jar
在gridmix2目录下执行ant命令,会生成build目录,在build目录下生成gridmix.jar。将gridmix.jar拷贝到gridmix2下,用于后面的测试过程。
设置、修改的环境变量
编译完gridmix.jar之后直接运行./rungridmix_2会出错。错误原因是gridmix-env-2中的环境变量设置不适合当前的版本,打开gridmix-env-2可看到,版本信息及jar的命令方式与当前版本不符(疑问:CDH3版本发布没做Gridmix测试吧,完全运行不了的代码也这样留在这里,有够混乱啊。。。)修改结果如下:
HADOOP_VERSION=hadoop-0.20.2-cdh3u1 //这里是版本信息不对,0.18-dev,汗。
HADOOP_HOME=修改为你的Hadoop安装目录 //以install_home+version拼出的home得不到目录,直接设置比较简单。
HADOOP_CONF_DIR= 配置hadoop-site.xml所在的目录
USE_REAL_DATA=设置为true的时候创建一个大的数据集用来测试。
//下面三项为jar包命名格式错误,jar包名不是${HADOOP_VERSION}-*(test/examples/streaming).jar格式
APP_JAR=${HADOOP_HOME}/hadoop-test-0.20.2-cdh3u1.jar
EXAMPLE_JAR=${HADOOP_HOME}/hadoop-examples-0.20.2-cdh3u1.jar
STREAMING_JAR=${HADOOP_HOME}/contrib/streaming/hadoop-streaming-0.20.2-cdh3u1.jar
运行标准测试
修改运行设置(可选):打开默认的gridmix_conf.xml,修改job参数设置。
生成测试数据:执行 ./generateGridmix2Data.sh可生成测试数据。默认需要4TB空间生成测试数据,可以修改 (COMPRESSED_DATA_BYTES, UNCOMPRESSED_DATA_BYTES,INDIRECT_DATA_BYTES)。默认压缩比例为4x。
执行./rungridmix_2,运行标准测试,在shell执行情况及hadoop的jobtracker查看执行情况。