欢迎来到天天文库
浏览记录
ID:34725785
大小:249.68 KB
页数:16页
时间:2019-03-10
《spark入门(python)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Spark入门Hadoop是对大数据集进行分布式计算的标准工具,这也是为什么当你穿过机场时能看到”大数据(BigData)”广告的原因。它已经成为大数据的操作系统,提供了包括工具和技巧在内的丰富生态系统,允许使用相对便宜的商业硬件集群进行超级计算机级别的计算。2003和2004年,两个来自Google的观点使Hadoop成为可能:一个分布式存储框架(Google文件系统),在Hadoop中被实现为HDFS;一个分布式计算框架(MapReduce)。这两个观点成为过去十年规模分析(scalinganalytics)
2、、大规模机器学习(machinelearning),以及其他大数据应用出现的主要推动力!但是,从技术角度上讲,十年是一段非常长的时间,而且Hadoop还存在很多已知限制,尤其是MapReduce。对MapReduce编程明显是困难的。对大多数分析,你都必须用很多步骤将Map和Reduce任务串接起来。这造成类SQL的计算或机器学习需要专门的系统来进行。更糟的是,MapReduce要求每个步骤间的数据要序列化到磁盘,这意味着MapReduce作业的I/O成本很高,导致交互分析和迭代算法(iterativealgor
3、ithms)开销很大;而事实是,几乎所有的最优化和机器学习都是迭代的。为了解决这些问题,Hadoop一直在向一种更为通用的资源管理框架转变,即YARN(YetAnotherResourceNegotiator,又一个资源协调者)。YARN实现了下一代的MapReduce,但同时也允许应用利用分布式资源而不必采用MapReduce进行计算。通过将集群管理一般化,研究转到分布式计算的一般化上,来扩展了MapReduce的初衷。Spark是第一个脱胎于该转变的快速、通用分布式计算范式,并且很快流行起来。Spark使用函
4、数式编程范式扩展了MapReduce模型以支持更多计算类型,可以涵盖广泛的工作流,这些工作流之前被实现为Hadoop之上的特殊系统。Spark使用内存缓存来提升性能,因此进行交互式分析也足够快速(就如同使用Python解释器,与集群进行交互一样)。缓存同时提升了迭代算法的性能,这使得Spark非常适合数据理论任务,特别是机器学习。本文中,我们将首先讨论如何在本地机器上或者EC2的集群上设置Spark进行简单分析。然后,我们在入门级水平探索Spark,了解Spark是什么以及它如何工作(希望可以激发更多探索)。最后
5、两节我们开始通过命令行与Spark进行交互,然后演示如何用Python写Spark应用,并作为Spark作业提交到集群上。设置Spark在本机设置和运行Spark非常简单。你只需要下载一个预构建的包,只要你安装了Java6+和Python2.6+,就可以在Windows、MacOSX和Linux上运行Spark。确保java程序在PATH环境变量中,或者设置了JAVA_HOME环境变量。类似的,python也要在PATH中。假设你已经安装了Java和Python:1.访问Spark下载页2.选择Spark最新发布
6、版(本文写作时是1.2.0),一个预构建的Hadoop2.4包,直接下载。现在,如何继续依赖于你的操作系统,靠你自己去探索了。Windows用户可以在评论区对如何设置的提示进行评论。一般,我的建议是按照下面的步骤(在POSIX操作系统上):1.解压Spark1~$tar-xzfspark-1.2.0-bin-hadoop2.4.tgz2.将解压目录移动到有效应用程序目录中(如Windows上的1~$mvspark-1.2.0-bin-hadoop2.4/srv/spark-1.2.03.创建指向该Spark版本的
7、符号链接到8、OME/bin:$PATH5.source这些配置(或者重启终端)之后,你就可以在本地运行一个pyspark解释器。执行pyspark命令,你会看到以下结果:123456789101112~$pysparkPython2.7.8(default,Dec 22014,12:45:58)[GCC4.2.1CompatibleAppleLLVM6.0(clang-600.0.5
8、OME/bin:$PATH5.source这些配置(或者重启终端)之后,你就可以在本地运行一个pyspark解释器。执行pyspark命令,你会看到以下结果:123456789101112~$pysparkPython2.7.8(default,Dec 22014,12:45:58)[GCC4.2.1CompatibleAppleLLVM6.0(clang-600.0.5
此文档下载收益归作者所有