Spark简介及其在ubuntu下的安装使用
转:http://blog.csdn.net/pelick/article/details/9888311
Spark概述
Spark是一种与 Hadoop 相似的开源集群计算环境,在性能和迭代计算上很有看点,现在是Apache孵化的顶级项目吧。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架,而Scala的语言特点也铸就了大部分Spark的成功。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。
虽然 Spark 与 Hadoop 有相似之处,但它提供了具有有用差异的一个新的集群计算框架。首先,Spark 是为集群计算中的特定类型的工作负载而设计,即那些在并行操作之间重用工作数据集(比如机器学习算法)的工作负载。为了优化这些类型的工作负载,Spark 引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟。
Spark 还引进了名为 弹性分布式数据集 (RDD) 的抽象。RDD 是分布在一组节点中的只读对象集合。这些集合是弹性的,如果数据集一部分丢失,则可以对它们进行重建。重建部分数据集的过程依赖于容错机制,该机制可以维护 “血统”(即充许基于数据衍生过程重建部分数据集的信息)。RDD 被表示为一个 Scala 对象,并且可以从文件中创建它;一个并行化的切片(遍布于节点之间);另一个 RDD 的转换形式;并且最终会彻底改变现有 RDD 的持久性,比如请求缓存在内存中。
Spark 中的应用程序称为驱动程序,这些驱动程序可实现在单一节点上执行的操作或在一组节点上并行执行的操作。与 Hadoop 类似,Spark 支持单节点集群或多节点集群。对于多节点操作,Spark 依赖于 Mesos 集群管理器。Mesos 为分布式应用程序的资源共享和隔离提供了一个有效平台。该设置充许 Spark 与 Hadoop 共存于节点的一个共享池中。
Spark生态环境
是的,类似hadoop有HDFS,Hive,Pig等一套自己的生态环境,Spark也有一套生态环境,而这套蓝图应该也正是AMP实验室正在绘制的。
Spark在整个生态系统中的地位如图所示,他是基于Tachyon的。而对底层的Mesos类似与YARN调度框架,在其上也是可以搭载如Spark,Hadoop等环境。Shark类似Hadoop里的Hive,而其性能好撑比Hive要快成百上千倍,不过hadoop注重的不一定是最快的速度,而是廉价集群上离线批量的计算能力。此外,上图中还有图数据库,Spark Streaming以及machine learning的ML Base。也就是说,Spark这套生态环境把大数据这块领域的数据流计算和交互式计算都包含了,而另外一块批处理计算应该由hadoop占据,同时Spark又是可以同HDFS交互取得里面的数据文件的。还有一天,Spark的迭代,内存运算能力以及交互式计算,都为数据挖掘,机器学习提供了很必要的辅助。综上所述,Spark不容小觑,也正是笔者打算研究他的原因。
国内目前豆瓣有一位牛人,读了Spark源码后用python写了一个Dpark在豆瓣内部使用。性能方面应该不及Spark,因为Scala是模吸收了Erlang这样的天生分布式语言的一些优势,既面向对象又是函数式的,目前我也在熟悉之中。
Spark的开发者中有一位是中国的博士,这是他的微博。
Spark安装使用
我在win7下尝试了下,根本不能开启spark的shell或者run一下example,最终还是在ubuntu上实现了。在Spark的github上你可以得到源码,但是在ubuntu上使用的时候,我是从网上下载了个 spark-0.7.2-prebuilt-hadoop1.tar的包,解压之后,在$SPARK_HOME下执行
- ./spark-shell
就可以开启交互式spark命令环境,这是一个基于scala的环境,有点类似mongodb的cmd环境是V8引擎下的js环境,应该是spark自带的而不需要外部引用SCALA_HOME。
然后你就可以根据官方document里的quick-start进行一些文件读取操作,并对内容进行处理,做mapreduce呀之类的事情。同时,也是可以去读hdfs上的file的
- scala> val textFile = sc.textFile("README.md")
- scala> textFile.count() // Number of items in this RDD
- scala> textFile.first() // First item in this RDD
例子不举了。如果要跑例子,需要先下载并引用scala,然后用sbt构建下spark。sbt是scala的构建工具,相当于是java的maven。
下好的scala解压之后,是可以在SCALA_HOME/bin下执行scala进入scala命令环境的。完成构建之后(我下载的spark解压之后不需要sbt构建也可以直接run这些例子。),就可以跑例子了。
- sbt/sbt package
构建之后。还需要先在$SPARK_HOME/conf/ 下修改那个spark-env.sh,在文件内添加一行"SCALA_HOME=xxx"。
- ./run spark.examples.SparkPi local
在跑这个例子的时候,可能输出结果会有一个NULL什么的错误,原因在于run这个文件里写的匹配example的路径是xxx-example-xxx.jar,而在SPARK_HOME/example/target/scalaxxxx路径下的jar包是xxx-example_xxx.jar的格式,问题出在"-"和"_"上。我手动改了下jar包的名字,你也可以在run的144-146行里把那个匹配规则改一下,很简单的。
做了以上的事后,就可以慢慢试玩和探索Spark啦。当然这是本地一个standalone的部署,还可以加master和slave的集群部署。略了。
SparkPi这个例子的代码就不具体说了,下面我提供一些有帮助的文档链接,有助于spark的起步。就我今天网上google的结果看,好像也没有什么别的文档也可以参考了。基本上也就是我列举的这些,所以你看完这些应该就可以啦。
参考
同一个博客里的几篇:
淘宝博客里的几篇:
官网文档:
Spark简介及其在ubuntu下的安装使用的更多相关文章
- snort简介以及在Ubuntu下的安装
一.简介 Snort是一套开放源代码的网络入侵预防软件与网络入侵检测软件.Snort使用了以侦测签章(signature-based)与通信协议的侦测方法.Snort是一个免费的IDS(入侵监测系统) ...
- Torch7在Ubuntu下的安装与配置
Torch7的本系列教程的主要目的是介绍Torch的入门使用.今天首先分享一下Torch7的安装.(在Ubuntu14.04安装torch7) 为什么选择Torch Torch的目标是在建立科学算法的 ...
- ubuntu下git安装及使用
ubuntu下git安装及使用 其实,好几个月前,就已经安装好了,可是一直搁置在那儿,所以密码等一些其它细节都忘的差不多了,所以今天就重新部署了一下,并开始积极使用......... 1,git ...
- premake Ubuntu下的安装
premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...
- linux,windows,ubuntu下git安装与使用
ubuntu下git安装与使用:首先应该检查本地是否已经安装了git ,如果没有安装的话,在命令模式下输入 sudo apt-get install git 进行安装 输入git命令查看安装状态及常用 ...
- ubuntu下如何安装codeblocks集成开发环境
codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦. 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如s ...
- ubuntu下makeinfo安装,其实真正安装的是texinfo包
操作系统环境:ubuntu 在终端中执行命令:sudo apt-get install texinfo 今天在打包的时候有个包需要 makeinfo,当时就各种搜结果就没有 makeinfo 这个 ...
- Ubuntu下软件安装方式、PATH配置、查找安装位置
Ubuntu 18.04, 安装方式 目前孤知道的Ubuntu下安装软件方式有3种(命令): 1.make 2.apt/apt-get 3.dpkg 方式1基于软件源码安装,需要经历配置(可选).编译 ...
- ubuntu 下python安装及hello world
//@desn:ubuntu 下python安装及hello world //@desn:码字不宜,转载请注明出处 //@author:张慧源 <turing_zhy@163.com> ...
随机推荐
- @Transactional导致无法动态数据源切换
公司目前数据源为主从模式:主库可读写,从库只负责读.使用spring-jdbc提供的AbstractRoutingDataSource结合ThreadLocal存储key,实现数据源动态切换. 最近项 ...
- java:线上问题排查常用手段
一.jmap找出占用内存较大的实例 先给个示例代码: import java.util.ArrayList; import java.util.List; import java.util.concu ...
- 用.Net如何访问Linux下目录
很多Windows下的应用需要访问和监控Linux下的目录,本文便介绍如何实现. 只需要搭建配置samba服务,即可将Linux下的目录变得如同Windows下共享可写. 1.服务查询 默认情况下,L ...
- jeffy-vim-v3.2
jeffy-vim-v3.2 增加了vim-gutentags 插件,支持tags自动生成.
- future封装了callable,thread封装future。
三.使用Callable,Future返回结果 总结:future封装了callable,thread封装future.将callable的返回结果封装在future中,thread封装future, ...
- WordPress主题开发:get_term_by和get_term_link
学习目的: 某一个分类的名称.别名.和id都可以到后台自己去找,但这样找比较麻烦还容易看错,wordpress提供了下面两个函数get_term_by和get_term_link,只要提供别名.名称或 ...
- python测试开发django-33.admin后台一对一关系OneToOneField
前言 假如有一张表(Card)记录用户的卡号信息和用户名,现在需要新增一个小功能,记录用户的手机号,邮箱和住址等更多信息. 为了不影响原来的表设计,可以新增一张表(CardDetail),专门记录用户 ...
- [LNU.Machine Learning.Question.1]梯度下降方法的一些理解
曾经学习machine learning,在regression这一节,对求解最优化问题的梯度下降方法,理解总是处于字面意义上的生吞活剥. 对梯度的概念感觉费解?到底是标量还是矢量?为什么沿着负梯度方 ...
- Mybatis ResultMap Collection 复合主键
<resultMap type="XX" id="XXMap"> <id property="id" c ...
- 唐顿庄园第一至五季/全集Downton Abbey迅雷下载
本季Downton Abbey 1(2010)看点:ITV古装剧剧<唐顿庄园>由曾因<高斯福德庄园>而荣获奥斯卡的金牌编剧Julian Fellowes一手打造,明星云集的演员 ...