Spark bench 避雷指南

前言

本文旨在记录在spark分布式环境下运行sparkbench所遇到的各种各样的坑,以及如何去避免这些坑的产生。

安装spark分布式请参考:

基于docker的Spark分布式搭建

sparkbench安装请参考:

sparkbench中文安装指南

sparkbench英文原版readme

写这篇文档的原因

在运行sparkbench的时候,虽然安装sparkbench的流程在官方readme中以详细给出,但是在运行每个程序的过程中,文档明没有给出事无巨细的解答,同时由于sparkbench文档年代久远(2015年),在全新的spark环境下也出现的许多问题,所以写此文档,来达到避雷的目的。

具体问题

1.streaming applications

在运行流数据处理时,执行gen_data无需进行特别操作,但是在run.sh时,则需要在其后跟随参数
例如:
PageView 后需要跟随 <应用名称> <主机名> <端口号>
TwitterPopularTags 后需要跟随

同时一些流数据程序不需要生成数据,无需执行gen_data。

在TwitterPopularTags的run.sh中代码中用到了spark的example文件,但是版本号却时2.1.0,应当按照集群所安装的实际版本号进行相应的修改,否则将会无法读取。

2.Graph Computation Workloads

该处出现的问题具有特殊性,只有在docker环境下才可能出现

Master:yarn
[sudo] password for tank: 
sh: 1: cannot create /proc/sys/vm/drop_caches: Read-only file system
Connection to hadoop1 closed.
[sudo] password for tank: 
sh: 1: cannot create /proc/sys/vm/drop_caches: Read-only file system
Connection to hadoop2 closed.
[sudo] password for tank: 
sh: 1: cannot create /proc/sys/vm/drop_caches: Read-only file system
Connection to hadoop3 closed.
data purged on hadoop1 hadoop2 hadoop3

问题其实很简单,程序中有相应的代码在程序执行前想通过修改文件的方式释放缓存,但是在docker容器中,无法在容器内部对此文件/proc/sys/vm/drop_caches进行操作,因此出现了频繁要求sudo权限输入密码的情况(实际上并没有啥用),虽然其实并不会影响我们程序的执行,但这大大的阻碍了程序的自动化,解决这个问题其实只需要注释掉释放内存的代码即可,由人工在容器外部手动释放。

3.生成数据问题

其实这是官方文档的锅,官方说把测试结果放在了/report下,实则不然,具体的存放位置应该是/numbench-report.dat

你可能感兴趣的:(Spark bench 避雷指南)