《从0开始学大数据》之大数据基准测试

大数据作为一个生态体系,不但有各种直接进行大数据处理的平台和框架,比如 HDFS、MapReduce、Spark,还有很多周边的支撑工具,而大数据基准测试工具就是其中一个大类。

大数据基准测试的应用

2012 年,Intel 大数据团队用大数据基准测试工具 HiBench 对 Spark 和 MapReduce 做了对比测试后发现,Spark 运行性能有令人吃惊的表现。当时 Intel 大数据团队的负责人戴老师(Jason Dai)立即飞到美国,跟当时开发 Spark 的 UC Berkeley 的 AMP 实验室交流,表示 Intel 愿意参与到 Spark 的开发中。Spark 也极其希望有业界巨头能够参与其中,开发代码尚在其次,重要的是有了 Intel 这样的巨头背书,Spark 会进一步得到业界的认可和接受。

所以 Intel 成了 Spark 最早的参与者,加速了 Spark 的开发和发展。当 2013 年 Spark 加入 Apache 的开源计划,并迅速成为 Apache 的顶级项目,风靡全球的大数据圈子时,Intel 作为早期参与者,也得到了业界的肯定,使 Intel 在大数据领域可以保持持续的影响力。

在这个案例里,所有各方都是赢家,Spark、Intel、Apache,乃至整个大数据行业,老师提到关于工作的一个观点:好的工作不光是对公司有利,对员工也是有利的。工作不是公司在压榨员工的过程,而是公司创造价值,同时员工实现自我价值的过程。

而如何才能创造出好的工作也不只是公司的责任,主要还是要靠员工自己,去发现哪些事情能够让自己、公司、社会都获益,然后去推动这些事情的落实,虽然有的时候推动比发现更困难。同时拥有发现和推动能力的人,毫无例外都是一些出类拔萃的人,比如专栏前面也提到的 Intel 的戴老师,这些人都是我们工作的榜样。

大数据基准测试工具 HiBench

大数据基准测试工具有很多,今天重点介绍的是 Intel 推出的大数据基准测试工具HiBench

HiBench 内置了若干主要的大数据计算程序作为基准测试的负载(workload)。

  • Sort,对数据进行排序大数据程序。
  • WordCount,词频统计大数据计算程序。
  • TeraSort,对 1TB 数据进行排序,最早是一项关于软件和硬件的计算力的竞赛,所以很多大数据平台和硬件厂商进行产品宣传的时候会用 TeraSort 成绩作为卖点。
  • Bayes 分类,机器学习分类算法,用于数据分类和预测。
  • k-means 聚类,对数据集合规律进行挖掘的算法。
  • 逻辑回归,数据进行预测和回归的算法。
  • SQL,包括全表扫描、聚合操作(group by)、连接操作(join)几种典型查询 SQL。
  • PageRank,Web 排序算法。

此外还有十几种常用大数据计算程序,支持的大数据框架包括 MapReduce、Spark、Storm 等。

对于很多非大数据专业人士而言,HiBench 的价值不在于对各种大数据系统进行基准测试,而是学习大数据、验证自己大数据平台性能的工具。

对于做大数据平台的工程师,如果等到使用者来抱怨自己维护的大数据平台不稳定、性能差的时候,可能就有点晚了,因为这些消息可能已经传到老板那里了。所以必须自己不停地跑一些测试,了解大数据平台的状况。

有了 HiBench,这些问题都很容易就可以解决,HiBench 内置了主要的大数据程序,支持多种大数据产品。最重要的是使用特别简单,初学者可以把 HiBench 当作学习工具,可以很快运行起各种数据分析和机器学习大数据应用。大数据工程师也可以用 HiBench 测试自己的大数据平台,验证各种大数据产品的性能。

HiBench 使用

三个步骤

  1. 配置,配置要测试的数据量、大数据运行环境和路径信息等基本参数。
  2. 初始化数据,生成准备要计算的数据,比如要测试 1TB 数据的排序,那么就生成 1TB 数据。
  3. 执行测试,运行对应的大数据计算程序。

具体初始化和执行命令也非常简单,比如要生成数据,只需要运行 bin 目录下对应 workload 的 prepare.sh 就可以自动生成配置大小的数据。

bin/workloads/micro/terasort/prepare/prepare.sh

要执行大数据计算,运行 run.sh 就可以了。

bin/workloads/micro/terasort/hadoop/run.sh
bin/workloads/micro/terasort/spark/run.sh

小结

同一类技术问题的解决方案绝不会只有一个,技术产品也不会只有一个,比如大数据领域,从 Hadoop 到 Spark 再到 Flink,各种大数据产品层出不穷,那么如何对比测试这些大数据产品,在不同的应用场景中它们各自的优势是什么?这个时候就需要用到基准测试工具,通过基准测试工具,用最小的成本得到我们想测试的结果。

所以除了大数据,在很多技术领域都有基准测试,比如数据库、操作系统、计算机硬件等。前几年手机领域的竞争聚焦在配置和性能上,各路发烧友们比较手机优劣的时候,口头禅就是“跑个分试试”,这也是一种基准测试。

因此基准测试对这些产品而言至关重要,甚至攸关生死。得到业界普遍认可的基准测试工具就是衡量这些产品优劣的标准,如果能使基准测试对自己的产品有利,更是涉及巨大的商业利益。有时候我们想要了解一个大数据产品的性能和用法,看了各种资料花了很多时间,最后得到的可能还是一堆不靠谱的 N 手信息。但自己跑一个基准测试,也许就几分钟的事,再花点时间看看测试用例,从程序代码到运行脚本,很快就能了解其基本用法,更加省时、高效。

思考题

今天文章的 Impala VS Hive 的基准测试报告里,发现当数量很大的时候做 join 查询,Impala 会失去响应,是因为 Impala 比 Hive 更消耗内存,当内存不足时,就会失去响应。你能否从 Impala 的架构和技术原理角度分析为什么 Impala 比 Hive 更消耗内存?

来自极客时间精选留言,本思考题比较开放

大神1

当时有好友在Cloudera工作,聊起过Impala开发。Impala其实就是一个MPP的database execution engine, 但很多地方不成熟。最大的问题就是不支持spilling. 所以才导致很多operation会吃光内存,比如hash join, group by aggregation或sorting (一个趣事,Impala在执行order by语句会强制要求有limit语句)。但Hive是mapreduce engine本质对内存需求不大。

大神2

作者回复:spark的内存策略更多样,可以在内存不足时使用磁盘。最重要的,spark的rdd lineage,可以使spark针对一个分片进行溯源重建,容错能力非常强。

该笔记摘录自极客时间课程
《从0开始学大数据》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程背景       人工智能的基础在于大数据大数据的基础核心是数据采集,数据采集的主力是爬虫技术。因此,爬虫技术作为大数据最基层的应用,其重要性毋庸置疑,伴随大数据技术及应用的普及,对我们日常生活产生的影响极期深远无用置疑,同时对测试保障亦提出较高的跳战:l 技术门槛高 技术复杂、多样,自动化成本高、周期长难以投入。 l 测试效率低 数据链路长、回归测试难等 l 质量评价难 数据存在局部特征、验收标准比较模糊,场景缺乏统一的标准 l 数据复杂多样、环境问题多、数据验收难、团队成就感低l 业界缺少成熟系统的爬虫或数据测试方面的经验与解决方案等。。。       本课程宗旨是解决或缓解上述问题,截止目前上述所涉内容均为本人在实际业务项目团队近一年不断习、探索研究成果(其中有多项测试技术、方法为本人首创,目前正在申请相关专利),并且在现项目团队实施推广应用并取得较好效果,团队目标、合作意识、质量意识更强;测试效率得到数十倍提升,有效避免一定程度的测试资源浪费现象,降低测试工作枯燥感;测试策略更加合理,问题命中率高,数据质量评价更加科,有据有依等方面得到有效改善,数据质量显著提升,得到下游业务团队及公司领导的充分认可。课程结构 本课程虽以爬数据测试作为切入点,但实际很多内容非常仅限适用爬虫测试工作,比如团队管理章节普遍适用于敏捷团队作为参考、习与讨论;爬虫质量保障中的采样/抽样策略、三步难证法及数据质量评估方法章节亦普适于数据类相关测试工作参考、习与讨论。本课程具体课程结构按排如下: 授课方式 本课程偏向理论,其于数据测试方向的实战工作经验总结,需要同习了解本课程的核心问题解决思路,结合实现项目归纳演义符合业务团队的工作方式方法,同时针对核技术、算法等采用在线板书方式逐步引导、加深同理解与思考,提升习效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值