当前位置: 首页 > news >正文

Spark大数据处理:技术、应用与性能优化【2.7】

7.3.2 使⽤TPC-DS

下⾯介绍TPC-DS(注:参⻅:http://www.tpc.org/tpcds/,TPC BenchmarkTMDS (TPC-DS):The New Decision Support Benchmark 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 Studio 2005。

2)双击打开整个解决⽅案dbgen2.sln(可能会看到报错“project file grammar.vcproj”,可以忽略这个错误)。

3)在项⽬列表中,右击dbgen2(是数据⽣成器),然后选择“build”(或者从顶层菜单单击Build→Build Solution)。

4)重复步骤3构建查询⽣成器qgen2。

5)针对X64 and IA64 on X86平台进⾏交叉编译,安装Microsoft Visual Studio 2005“Team Suite”SKU,然后选择from Build→Configuration Manager命令,并重复执⾏步骤3和步骤4,进⽽修改⽬标的运⾏平台。

(4)⽣成数据

1)运⾏“dbgen2–h”以获取帮助信息。注意:许多⾼级选项并不是必须的。

2)在⽬录/tmp下⽣成个100GB数据。

dbgen2 –scale 100 –dir /tmp

常⽤的数据规模参数可以有100GB、300GB、1TB、3TB、10TB、30TB和100TB。

3)可以通过配置参数“-delimiter‘<c>’”选项修改⽂件分隔。

4)当数据规模巨⼤时,可以通过并⾏⽅式⽣成。例如,⽣成100GB的数据,通过4路并⾏在Linux/Unix上运⾏。

dbgen2 –scale 100 –dir /tmp –parallel 4 –child 1 & dbgen2 –scale 100 –dir /tmp –parallel 4 –child 2 & dbgen2 –scale 100 –dir /tmp –parallel 4 –child 3 & dbgen2 –scale 100 –dir /tmp –parallel 4 –child 4 &

(5)加载数据

在Shark中需要先建表,然后加载数据,加载数据的⽅式和Hive是相近的。加载数据时候,需要注意使⽤的分隔符。

注意由于TPC-DS的数据类型在Shark中并不完全适⽤,所以可以修改数据类型为以下格式。

drop table customer_address; create table customer_address ( ca_address_sk bigint , ca_address_id string , ca_street_number string , ca_street_name string , ca_street_type string , ca_suite_number string , ca_city string , ca_county string , ca_state string , ca_zip string , ca_country string , ca_gmt_offset double , ca_location_type string ) row format delimited fields terminated by '|' lines terminated by '\n' stored as textfile ;在Shell中执⾏如下命令加载数据,或者这条命令在SQL中让Shark 执⾏。 LOAD DATA INPATH 'hdfs://hive01:9000/3t/customer.dat' INTO TABLE 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 –directory query_templates

–dialect oracle –scale 100

(7)运⾏查询

查询的运⾏依赖于当时正在运⾏的⼤数据系统。

Shark执⾏查询的命令和⽅式如下。

1)在Shark的Shell中执⾏,将query的SQL语句复制到Shell执⾏。

$ ./bin/shark # Start CLI for interactive session

2)在命令⾏后追加SQL语句执⾏查询。

$ ./bin/shark -e "SELECT * FROM foo" # Run a specific query and exit

3)在命令⾏后追加⽂件执⾏查询。

$ ./bin/shark -i queries.hql # Run queries from a 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 -xzf BigDataBench_Sprak_V3.0.tar.gz

2)打开⽬录。

cd BigDataBench_Sprak_V3.0.tar.gz /MicroBenchmarks/

3)⽣成数据。

sh genData_MicroBenchmarks.sh sh sort-transfer.sh

4)运⾏。

注意:如果运⾏的负载是排序,则需要提前运⾏sh⽂件sorttransfer进⾏转换。

第⼀步:sh genData_MicroBenchmarks.sh。

第⼆步:sh sort-transfer.sh。

第三步:运⾏。

./run-bigdatabench cn.ac.ict.bigdatabench.Sort <master> <data_file> <save_file>

[<slices>]

参数介绍:

·<master>:Spark服务器的URL,例如:spark://172.16.1.39: 7077。

·<data_file>:输⼊数据的HDFS路径,例如:/test/data.

·<save_file>:保存结果的HDFS路径。
·[<slices>]:可选参数(worker数量)。
(2)执⾏grep负载
./run-bigdatabench cn.ac.ict.bigdatabench.Grep <master> <data_file> <keyword>
<save_file>
[<slices>]
参数介绍:
·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
7077。
·<data_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
·<keyword>:过滤⽂本⽤的关键词。
·<save_file>:保存结果⽤的HDFS路径。
·[<slices>]:可选参数,Worker数量。
(3)执⾏wordcount负载
./run-bigdatabench cn.ac.ict.bigdatabench.WordCount <master> <data_file>
<save_file>
[<slices>]参数介绍:
·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
7077。
·<data_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
·<save_file>:保存结果的HDFS路径。
·[<slices>]:可选参数,worker数量。
2.分析型的⼯作负载
(1)PageRank
PageRank的程序和数据源⾃Hibench。
Spark-version
1)前期准备。
下载并解压⽂件:BigDataBench_Sprak_V3.0.tar.gz。
tar xzf BigDataBench_Sprak_V3.0tar.gz
2)打开⽬录。
cd BigDataBench_Sprak_V3.0.tar.gz /SearchEngine/ Pagerank

3)⽣成数据。
sh genData_PageRank.sh
4)运⾏。
./run-bigdatabenchorg.apache.spark.examples.PageRank
<master> <file> <number_of_iterations> <save_path> [<slices>]
参数介绍:
·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
7077。
·<file>:输⼊数据的HDFS路径,例如:/test/data.txt。
·<number_of_iterations>:运⾏算法的迭代次数。
·<save_path>:保存结果的路径。
·[<slices>]:可选参数,worker数量。
(2)Kmeans
Kmeans的⼯作负载来源于Mahout。
1)准备⼯作。下载并解压包:BigDataBench_Sprak_V3.0.tar.gz。
tar -xzf BigDataBench_Sprak_V3.0.tar.gz
2)打开根⽬录。
cd BigDataBench_Sprak_V3.0.tar.gz /SNS
3)⽣成数据。
sh genData_ Kmeans.sh
4)运⾏。
./run-bigdatabench org.apache.spark.mllib.clustering.KMeans <master> <input_file>
<k>
<max_iterations> [<runs>]
参数介绍:
·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
7077。
·<input_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
·[<k>]:数据中⼼的数量。
·<max_iterations>:运⾏算法的迭代次数。·[<runs>]:通过上述命令即可进⾏kMears基准测试。
(3)Connected Components
Connected Components程序源⾃PEGASUS。
1)准备⼯作。
①下载并解压包:BigDataBench_Sprak_V3.0.tar.gz。
tar xzf BigDataBench_Sprak_V3.0.tar.gz
②打开根⽬录。
cd BigDataBench_Sprak_V3.0.tar.gz/ SNS/connect/
③⽣成数据。
sh genData_ connectedComponents.sh
2)运⾏。
./run-bigdatabench cn.ac.ict.bigdatabench.ConnectedComponent <master> <data_file>
[<slices>]
参数介绍:·<master>:Spark服务器的URL,例如:spark://172.16.1.39:
7077。
·<data_file>:输⼊数据的HDFS路径,例如:/test/data.txt。
·[<slices>]:可选参数,worker数量。
通过上述命令即可运⾏Connected Components负载。
(4)Naive Bayes
Naive Bayes(朴素⻉叶斯)算法也是源⾃Mahout。通过下⾯命令
进⾏数据⽣成与测试。
1)下载并解压包:BigDataBench_Sprak_V2.2.tar.gz。
tar -xzf BigDataBench_Sprak_V2.2.tar.gz。
2)打开根⽬录。
cd BigDataBench_Sprak_V2.2.tar.gz / E-commerce
3)⽣成数据。
sh genData_ naivebayes.sh
4)运⾏。sh run_naivebayes.sh
[1] 参 ⻅ : http://prof.ict.ac.cn/BigDataBench/ , A Big Data Benchmark
Suite,ICT,Chinese Academy of Sciences。

7.4 本章⼩结

本章主要介绍了⼤数据Benchmark,包括Benchmark的原理和常⽤Benchmark的使⽤。

Benchmark标准尚未形成统⼀,但⼀些Benchmark已经崭露头⾓。⽤户可以根据系统需求有针对性地选⽤。Benchmark包含三⼤组件,读者通过了解三⼤组件可以理解Benchmark的原理和作⽤。

最后本章介绍了Hibench、BigDataBench、TPC-DS这三个⼴泛使⽤的Benchmark的使⽤⽅法,读者可以采⽤需要的Benchmark进⾏实践。

相信通过之前⼏章的介绍,读者已经对Spark有了⼀定程度的了解。Spark发展得如⽕如荼发展的⼀个重要原因就是⽣态系统的完善,下⾯通过介绍BDAS的主要组件,使读者全⾯了解Spark⽣态系统。

http://www.jsqmd.com/news/389970/

相关文章:

  • Android Studio 中 Activity 的五种启动模式
  • 微信小程序查看备案号
  • 题解:洛谷 P1223 排队接水
  • 2026年市场上可靠的下水道疏通企业有哪些,下水道疏通排行榜行业优质排行榜亮相 - 品牌推荐师
  • Spark大数据处理:技术、应用与性能优化【2.6】
  • 前端必备:NVM管理Node版本不翻车,新手老手都能用
  • 题解:洛谷 P2240 【深基12.例1】部分背包问题
  • 写作压力小了,AI论文工具千笔 VS 万方智搜AI,研究生专属高效之选!
  • OpenClaw,重新定义AI Agent,一款真正可用的个人智能助手操作系统
  • ▲8FSK调制解调+扩频解扩通信链路matlab误码率仿真
  • 题解:洛谷 P1010 [NOIP 1998 普及组] 幂次方
  • 题解:洛谷 P1259 黑白棋子的移动
  • 完整教程:CI/CD 核心原则 + 制品管理全解析:落地要求 + 存储方案
  • 题解:洛谷 P3612 [USACO17JAN] Secret Cow Code S
  • 题解:洛谷 P1498 南蛮图腾
  • 题解:洛谷 P1228 地毯填补问题
  • 探索CNN - BILSTM - Attention多特征分类预测:Matlab实现与分析
  • 实测才敢推!更贴合研究生需求的降AIGC软件 千笔·专业降AI率智能体 VS 灵感风暴AI
  • 真的太省时间! 降AIGC工具 千笔·专业降AI率智能体 VS 学术猹 本科生专属
  • 题解:洛谷 P1990 覆盖墙壁
  • 写作小白救星:AI论文工具 千笔AI VS Checkjie,专科生专属神器!
  • 生产环境【Kotlin系列15】多平台开发实战:一次编写,多端运行最佳实践与性能优化
  • 关闭Edge浏览器的“两指在触控板上往左滑是后退;往右划是前进”
  • 【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(13):単語文法】
  • 题解:洛谷 P2437 蜜蜂路线
  • 题解:洛谷 P1928 外星密码
  • 题解:洛谷 P1164 小A点菜
  • 深入解析:Hologres Dynamic Table 在淘天价格力的业务实践
  • 题解:洛谷 P1464 Function
  • 标准 Hough 变换、修正 Hough 变换和序列 Hough 变换三种典型航迹起始算法研究附Matlab代码