7.3.2

使⽤TPC-DS
下⾯介绍TPC-DS(注:参⻅:http://www.tpc.org/tpcds/,TPC
BenchmarkTMDS
Standard。
)的使⽤⽅式。
(1)下载最新的包
⽤户可以到TPC主⻚进⾏下载:http://www.tpc.org。
(2)Make⽣成可执⾏⽂件[1]
1)将Makefile.suite⽂件复制为Makefile。
2)编辑修改Makefile,找到含有“OS=”的⾏。
3)阅读注释并增加指定的OS,如“OS=LINUX”。
4)执⾏make。
(3)Windows操作系统编译TPC-DS,⽣成可执⾏⽂件
1)安装Microsoft
Visual
2005。
2)双击打开整个解决⽅案dbgen2.sln(可能会看到报错“project
file
grammar.vcproj”,可以忽略这个错误)。
3)在项⽬列表中,右击dbgen2(是数据⽣成器),然后选择“build”(或者从顶层菜单单击Build→Build
Solution)。
4)重复步骤3构建查询⽣成器qgen2。
5)针对X64
and
Manager命令,并重复执⾏步骤3和步骤4,进⽽修改⽬标的运⾏平台。
(4)⽣成数据
1)运⾏“dbgen2–h”以获取帮助信息。
注意:许多⾼级选项并不是必须的。
2)在⽬录/tmp下⽣成个100GB数据。
dbgen2
–scale
/tmp
常⽤的数据规模参数可以有100GB、300GB、1TB、3TB、10TB、30TB和100TB。
3)可以通过配置参数“-delimiter‘<c>’”选项修改⽂件分隔。
4)当数据规模巨⼤时,可以通过并⾏⽅式⽣成。
例如,⽣成100GB的数据,通过4路并⾏在Linux/Unix上运⾏。
dbgen2
–scale
&
(5)加载数据
在Shark中需要先建表,然后加载数据,加载数据的⽅式和Hive是相近的。
加载数据时候,需要注意使⽤的分隔符。
注意由于TPC-DS的数据类型在Shark中并不完全适⽤,所以可以修改数据类型为以下格式。
droptable
;在Shell中执⾏如下命令加载数据,或者这条命令在SQL中让Shark
LOAD
'hdfs://hive01:9000/3t/customer.dat'
INTO
customer_address;
(6)通过模板⽣成查询
query_templates⽂件夹下有99个查询模板,⽤户可以到其中查询模板并⽣成指定的查询。
由于不同⼚家的SQL并不是全部遵循ANSI标准。
例
如“LIMIT”和“BEGIN/COMMIT”,qgen2需要指定⽅⾔“dialect”。
现在⽀持⼏类模板:db2.tpl、netezza.tpl、oracle.tpl、sqlserver.tpl。
下⾯是⽣成oracle⽅⾔,针对100GB数据规模,使⽤query99模板查询的例⼦。
qgen2
–query99.tpl
100
(7)运⾏查询
查询的运⾏依赖于当时正在运⾏的⼤数据系统。
Shark执⾏查询的命令和⽅式如下。
1)在Shark的Shell中执⾏,将query的SQL语句复制到Shell执⾏。
$
./bin/shark
session
2)在命令⾏后追加SQL语句执⾏查询。
$
./bin/shark
exit
3)在命令⾏后追加⽂件执⾏查询。
$
./bin/shark
file
关于其他的⾼级选项,感兴趣的⽤户可以通过查看⽂档了解。
[1]
针对AIX、LINUX、HPUX、NCR和Solaris操作系统。
7.3.3
使⽤BigDataBench
BigDataBench[1]针对不同的负载,⽤户可以使⽤下⾯的⽅式⽣成数据和使⽤⼯作负载。
在Spark的Shell中已经默认设置了数据⽣成的命令和配置,感兴趣的读者或者有特定数据规模需求的读者可以修改对应的Shell调整负载。
1.离线分析(offline
analytics)
Spark版本的⼯作负载包含3个:sort、grep、wordcount。
(1)sort
⽤户在运⾏之前需要将Spark复制到各个节点。
1)准备⼯作。
在官⽹下载指定的包后,解压压缩包。
BigDataBench_Sprak_V3.0.tar.gz
tar
BigDataBench_Sprak_V3.0.tar.gz
2)打开⽬录。
cd
/MicroBenchmarks/
3)⽣成数据。
sh
sort-transfer.sh
4)运⾏。
注意:如果运⾏的负载是排序,则需要提前运⾏sh⽂件sorttransfer进⾏转换。
第⼀步:sh
genData_MicroBenchmarks.sh。
第⼆步:sh
sort-transfer.sh。
第三步:运⾏。
./run-bigdatabench
<master>
<save_file>
[<slices>]
参数介绍:
·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
7077。
·<data_file>:输⼊数据的HDFS路径,例如:/test/data.
·<save_file>:保存结果的HDFS路径。
/>·[<slices>]:可选参数(worker数量)。
/>./run-bigdatabench
/>·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
/>·<data_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
/>·<keyword>:过滤⽂本⽤的关键词。
/>·<save_file>:保存结果⽤的HDFS路径。
/>·[<slices>]:可选参数,Worker数量。
/>(3)执⾏wordcount负载
/>./run-bigdatabench
cn.ac.ict.bigdatabench.WordCount
<master>
/>[<slices>]参数介绍:
/>·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
/>·<data_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
/>·<save_file>:保存结果的HDFS路径。
/>·[<slices>]:可选参数,worker数量。
/>Spark-version
/>下载并解压⽂件:BigDataBench_Sprak_V3.0.tar.gz。
/>tar
BigDataBench_Sprak_V3.0tar.gz
/>cd
Pagerank
3)⽣成数据。
/>sh
/>./run-bigdatabenchorg.apache.spark.examples.PageRank
/><master>
/>·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
/>·<file>:输⼊数据的HDFS路径,例如:/test/data.txt。
/>·<number_of_iterations>:运⾏算法的迭代次数。
/>·<save_path>:保存结果的路径。
/>·[<slices>]:可选参数,worker数量。
/>1)准备⼯作。
下载并解压包:BigDataBench_Sprak_V3.0.tar.gz。
/>tar
BigDataBench_Sprak_V3.0.tar.gz
/>cd
org.apache.spark.mllib.clustering.KMeans
<master>
/>·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
/>·<input_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
/>·[<k>]:数据中⼼的数量。
/>·<max_iterations>:运⾏算法的迭代次数。
·[<runs>]:通过上述命令即可进⾏kMears基准测试。
Components
/>①下载并解压包:BigDataBench_Sprak_V3.0.tar.gz。
/>tar
BigDataBench_Sprak_V3.0.tar.gz
/>cd
BigDataBench_Sprak_V3.0.tar.gz/
SNS/connect/
cn.ac.ict.bigdatabench.ConnectedComponent
<master>
/>参数介绍:·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
/>·<data_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
/>·[<slices>]:可选参数,worker数量。
Bayes
Bayes(朴素⻉叶斯)算法也是源⾃Mahout。
通过下⾯命令
/>1)下载并解压包:BigDataBench_Sprak_V2.2.tar.gz。
/>tar
BigDataBench_Sprak_V2.2.tar.gz。
/>cd
http://prof.ict.ac.cn/BigDataBench/
,
本章⼩结
本章主要介绍了⼤数据Benchmark,包括Benchmark的原理和常⽤Benchmark的使⽤。
Benchmark标准尚未形成统⼀,但⼀些Benchmark已经崭露头⾓。
⽤户可以根据系统需求有针对性地选⽤。
Benchmark包含三⼤组件,读者通过了解三⼤组件可以理解Benchmark的原理和作⽤。
最后本章介绍了Hibench、BigDataBench、TPC-DS这三个⼴泛使⽤的Benchmark的使⽤⽅法,读者可以采⽤需要的Benchmark进⾏实践。
相信通过之前⼏章的介绍,读者已经对Spark有了⼀定程度的了解。
Spark发展得如⽕如荼发展的⼀个重要原因就是⽣态系统的完善,下⾯通过介绍BDAS的主要组件,使读者全⾯了解Spark⽣态系统。


