Hadoop炙手可热。但是它的近亲火花更性感。
其实Spark和五年前的Apache Hadoop一样火。Spark,诞生于加州大学伯克利分校AMPLab,是一个工作在Hadoop生态系统中的快速数据处理引擎,替代MapReduce。它旨在执行批处理(类似于MapReduce)和新的工作负载,如流、交互式查询和迭代算法,如机器学习和图形处理中常见的那些算法。
总部位于旧金山的Typesafe是我去年写的一份关于Java开发人员的调查的发起者。Scala、Play Framework和Akka的商业支持者最近对Spark开发者进行了一项调查。超过2000名(准确地说是2136名)开发者做出了回应。调查结果:有三个结论
我和Typesafe的大数据产品和服务架构师Dean Wampler (@deanwampler)聊了聊他对Spark崛起的看法。Wampler最近录制了一个演讲,内容是他认为Spark/Scala正在迅速取代MapReduce/Java,成为企业中最受欢迎的大数据计算引擎。
读写网3360创业星火的人最常见的障碍是什么?
Wampler:它主要是获取专业知识,有很好的文档和深入的、非平凡的例子。许多人不确定如何管理、监控和优化他们的工作和集群。对Spark的商业支持仍然有限,尤其是对非纱线部署。然而,即使在Hadoop供应商之间,支持仍然不均衡。
Spark在很多方面还是需要成熟的,尤其是较新的模块,比如Spark SQL和Spark Stream。老一点的工具,比如Hadoop和MapReduce,发展空间更长,所以有更多的时间去强化,有更多的专业知识去记录。这些问题都在解决,应该很快就能解决。
我听到有人问:“你往哪里跑?”“始终建议一个相当广泛的资源管理策略,例如,独立集群、yarn、Mesos。您认为行业将倾向于单独运行大数据集群,还是您认为行业最终将与其他生产应用程序一起运行大数据集群?
DW:我觉得大部分组织还是会使用更少更大的集群,这样他们的运营团队就可以观察到更少的集群。Mesos和yarn真的让这个方法很吸引人。相反,Spark更容易为特定问题构建小型专用集群。假设你在吞Twitter的软管。您可能需要一个专门针对流挑战而优化的集群。也许它会将“计划好的”数据转发到另一个集群,比如用于数据仓库的大型集群。
Spark的操作端和MapReduce的操作端有区别吗?
对于批处理作业,DW:基本相同。然而,流媒体带来了新的挑战。
对于一个典型的批处理作业,无论是用Spark还是MapReduce编写的,都必须提交一个作业才能运行。它从yarn或者Mesos那里获取资源,一旦完成,资源就会被释放。但是,在Spark流中,作业是连续运行的,因此如果作业终止,您可能需要更健壮的恢复,这样流数据就不会丢失。
另一个问题是资源分配。对于批处理作业,可以为其提供一组资源,并在作业的生命周期中锁定这些资源。(不过请注意,YARN和Mesos已经做了一些动态管理。长时间运行的作业确实需要更多的动态资源管理,所以相对静态期不会有闲置的资源,高峰期也不会有不堪重负的资源。
因此,您确实需要增加和减少资源分配的能力,并且这种能力是自动可伸缩的。这不是一个小问题要解决,不能靠人工干预。
RW:我们来说说Scala/Spark连接。Spark需要Scala知识吗?大部分用Spark的人都精通Scala吗?Scala用户更倾向于支持Spark,还是Spark在Scala中产生了“拉动”效应?
DW: Spark是用Scala写的,把人拉到Scala。通常,他们来自大数据生态系统。如果是开发人员,习惯用Java如果他们是数据科学家,他们习惯使用Python和r之类的语言。
幸运的是,Spark支持多种语言——Scala、Java、Python和即将推出的R。这样人们就不用转用Scala了。
其他语言的API覆盖有滞后,但是Spark团队几乎弥补了这个差距。经验法则是,如果你使用Scala或Java,你将获得最好的运行时性能;如果你使用Scala或者Python,你会得到最简洁的代码。所以,Spark实际上是在吸引人们使用Scala,但并不要求你是Scala专家。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!