决胜云计算大数据时代”
Spark亚太研究院100期公益大讲堂 【第3期互动问答分享】
Q1: groupbykey是排好序的吗?分组排序怎么实现?
groupByKey在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[V])对的数据集,所以是没有排序的;
要想分组排序,首先要使用groupByKey完成分组功能,然后使用sortWith这个函数对指完成排序实现;
完整代码如下所示:
spark.textFile(...).groupByKey().map{p =>
val sortArray = p._2.sortWith(_ < _)//排序
(p._1, sortArray)
}
Q2:spark 会替代Hadoop 吗?
Hadoop在云计算大数据发展的早期做出了卓越的贡献,其MapReduce模型极大的简化了海量数据的分析。随着大数据多重处理例如迭代计算、机器学习、图计算等和低延迟交互式查询的需求爆发式的增长,Hadoop在架构的先天缓慢性导致了其无法满足人们在处理大数据时候的复杂计算和快速响应,Spark应运而生。
Hadoop的HDFS已经成为大数据存储的实施标准,例如淘宝内部有多带大数据处理系统,但是存储系统统一采用HDFS,其HDFS集群规模超过5000台,现在的Spark一般情况下都是从HDFS上获取数据并把计算后的数据交给HDFS。
Yarn这个资源管理框架也正在成为事实的群集资源管理标准,极大的简化了多套系统下资源的管理和数据的共享。
Spark会取代Hadoop的计算框架MapReduce,现在Hadoop的世界上最知名的四大发行商都正在由MapReduce转向Spark。
Spark会成为大数据时代通用的计算平台。
Q3:spark做大规模高性能数值计算可以吗?我是做高性能计算的。
Spark是高性能计算目前最佳的选择大数据计算平台;
Spark的内存计算、快速迭代、DAG等都为大规模高性能数值计算提供了天然优势;
尤其值得一提的Spark框架的编写使用Scala,应用程序开发也主要是Scala,而Scala是分布式多核编程的核心语言,其Function编程模型、Actor和并发的能力让大规模高性能数值计算如虎添翼;
Spark配合Tachyon可以极大的提升大规模高性能数值计算的效率;
Q4:一个worker上会有多个executor?executor个数是一个app一个吗?还是只有一个?
一个Worker会有多个executor,一个executor会运行多个task;
一个executor只能为一个app实例服务,一个app可以有多个executor;
Executor的配置要根据硬件和app处理的数据进行适当调优;
Q5:只有一台机器能学习吗?
只有一台机器学习Spark是没有问题的;
在一台机器上,可以使用local模式运行spark程序;
在一台机器上也可以通过VMware等虚拟机机制虚拟出多台Linux机器,从而在多台机器上搭建集群;