- 论坛徽章:
- 6
|
这两个问题基本可以去看看spark官方的faq和history/changelog。
这些文档都是最适合初学者迅速了解spark,其中changelog比较适合有经验的开发者跟进项目,对新的feature能够有个快速了解。
spark.apache.org/faq.html
1. 有人说Spark就是内存版的MapReduce,对此你怎么看?
Spark is:
1). fast/快速
2). a general processing engine/处理引擎
3). compatible with hadoop data/与hadoop格式数据兼容,也就是说兼容hadoop生态系统的产品,如hive,hbase等
4). designed to perform both batch processing(similar to mapreduce) and new workloads(streaming, interactive queries and machine learning)/批处理(与mapreduce相似),流处理,交互式查询和机器学习。
以上从faq中第一个答案中抽出来的,大致就可以了解spark是个什么玩意,可以做些什么事情了。
再往下看你就能看到,用scala编写,提供python,java api,和一些学习资源。
值得注意的是streaming中的micro-batching,比较新哈,接着答案对这个新词进行了一番解释,应用场景及原理。
好了,说正题:
hadoop要解决的问题,简单说就是数据大得单台机器没办法存储,没办法处理。而hadoop的思想就是把计算进行传输,数据不动,因为数据很大,计算程序很小,网络开销自然小。mapreduce框架能并行处理数据,只有少数数据在网络中传输,所以能提高数据处理效率和速度。
关于Spark这里有篇论文,3w.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf (发不了链接,把3w换成www)
看到Introduction第二段第一、二句:
Although current frameworks provide numerous abstractions for accessing a cluster’s computational resources, they lack abstractions for leveraging distributed memory. This makes them inefficient for an important class of emerging applications: those that reuse intermediate
results across multiple computations.
随便翻译一下,中文组织能力不是很强,见笑
尽管当前框架提供了大量访问集群计算资源的抽象层(接口),但却缺乏利用分布式内存的抽象层(接口)。对于某些类型的应用却不是那么高效,这些应用需要重复利用分布式计算的中间值。
可见spark解决hadoop的痛点是,hadoop的计算数据都是要存hdfs中的,也就是要写到硬盘中,而有些应用要重复利用这些数据,那么要重复从硬盘读取速度自然会比较慢。spark数据模型时rdd,论文中将得非常详细,这里就不瞎扯了。
我个人也觉得内存计算是今后的趋势,也很推崇。记得年初的时候特别欣赏sap的hana内存数据库,还投了sap的简历,把自己对内存数据库的一些想法和面试官聊了,顺利的通过了几轮面试,不过最后一轮还是败下阵了。
2. 有人说Spark将来会替代Hadoop,你又怎么看?
技术领域里,永远都会有极端分子,什么语言是最好的,什么框架是最好的。
我觉得Spark和Hadoop就像docker和openstack,各有各的优势,各有各的应用场景和市场。
也许有一天,又会有人出来说xxx将会替代spark。 |
|