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> ...
随机推荐
- 允许mysql远程用户连接。
默认mysql是禁止远程用户连接的.连接提示: 1045,“Access denied for user 'root'@'192.168.100.1' (using password:YES)&quo ...
- ICO如此疯狂为哪般?
编者语: 独角兽一词起源于硅谷,是投资行业,尤其是风险投资业的术语,指的是那些估值超过十亿美元的创业公司.独角兽凤毛麟角,占创业公司总数的0.1%都不到.鑫根资本认为,一个独角兽能达到如此估值,肯定是 ...
- swap文件查看
建议 Swap 使用单独的分区: a swap file a combination of swap partitions and swap files. Swap 大小的计算公式: M 等于物理内存 ...
- Delphi 设置快捷键
= 'Repeat %s(&' + #32 + ')'; //设置快捷键 这个是设置空格的 如果设置字符, 就可以这样写= 'Repeat %s(&H)‘ const SRep ...
- delphi shr和shl的作用
x:=x shl 1 二进制数向左移1位,尾部补1个零,相当于x:=x*2;x:=x shl 2 二进制数向左移2位,尾部补2个零,相当于x:=x*4;...x:=x shl n 二进制数向左移n位, ...
- Mybatis配置返回为修改影响条数
mybatis配置返回为修改影响条数,修改jdbc连接如下即可:添加useAffectedRows=true配置. jdbc:mysql://jdbc.host/{jdbc.db}?useAffect ...
- Property's synthesized getter follows Cocoa naming convention for returning
Property's synthesized getter follows Cocoa naming convention for returning. 今天早上在整理代码的时候发现了如上警告. ...
- c++中 extern
用例子给你示范 // 1.cpp int x = 10; // 2.cpp 注意没有包含1.cpp #include <iostream> using namespace std; ext ...
- C++点和箭头操作符用
http://www.cnblogs.com/ManMonth/archive/2013/09/05/3302873.html C++点和箭头操作符用法区别 变量是对象的时候用“.”访问 变量是对象指 ...
- C++笔记:头文件的作用和写法
from://http://ceeji.net/blog/c%E7%AC%94%E8%AE%B0%EF%BC%9A%E5%A4%B4%E6%96%87%E4%BB%B6%E7%9A%84%E4%BD% ...