转: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下执行

  1. ./spark-shell

就可以开启交互式spark命令环境,这是一个基于scala的环境,有点类似mongodb的cmd环境是V8引擎下的js环境,应该是spark自带的而不需要外部引用SCALA_HOME。

然后你就可以根据官方document里的quick-start进行一些文件读取操作,并对内容进行处理,做mapreduce呀之类的事情。同时,也是可以去读hdfs上的file的

  1. scala> val textFile = sc.textFile("README.md")
  1. scala> textFile.count() // Number of items in this RDD
  2. scala> textFile.first() // First item in this RDD

例子不举了。如果要跑例子,需要先下载并引用scala,然后用sbt构建下spark。sbt是scala的构建工具,相当于是java的maven。

下好的scala解压之后,是可以在SCALA_HOME/bin下执行scala进入scala命令环境的。完成构建之后(我下载的spark解压之后不需要sbt构建也可以直接run这些例子。),就可以跑例子了。

  1. sbt/sbt package

构建之后。还需要先在$SPARK_HOME/conf/ 下修改那个spark-env.sh,在文件内添加一行"SCALA_HOME=xxx"。

  1. ./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安装与学习

centOS上安装spark集群

淘宝博客里的几篇:

Spark随谈-翻译指南

Spark随谈-整体架构

Spark随谈-安装攻略

官网文档:

quick-start

programming-guide

IBM的一篇介绍

Spark简介及其在ubuntu下的安装使用的更多相关文章

  1. snort简介以及在Ubuntu下的安装

    一.简介 Snort是一套开放源代码的网络入侵预防软件与网络入侵检测软件.Snort使用了以侦测签章(signature-based)与通信协议的侦测方法.Snort是一个免费的IDS(入侵监测系统) ...

  2. Torch7在Ubuntu下的安装与配置

    Torch7的本系列教程的主要目的是介绍Torch的入门使用.今天首先分享一下Torch7的安装.(在Ubuntu14.04安装torch7) 为什么选择Torch Torch的目标是在建立科学算法的 ...

  3. ubuntu下git安装及使用

    ubuntu下git安装及使用   其实,好几个月前,就已经安装好了,可是一直搁置在那儿,所以密码等一些其它细节都忘的差不多了,所以今天就重新部署了一下,并开始积极使用......... 1,git ...

  4. premake Ubuntu下的安装

    premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...

  5. linux,windows,ubuntu下git安装与使用

    ubuntu下git安装与使用:首先应该检查本地是否已经安装了git ,如果没有安装的话,在命令模式下输入 sudo apt-get install git 进行安装 输入git命令查看安装状态及常用 ...

  6. ubuntu下如何安装codeblocks集成开发环境

    codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦. 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如s ...

  7. ubuntu下makeinfo安装,其实真正安装的是texinfo包

    操作系统环境:ubuntu 在终端中执行命令:sudo apt-get install texinfo   今天在打包的时候有个包需要 makeinfo,当时就各种搜结果就没有 makeinfo 这个 ...

  8. Ubuntu下软件安装方式、PATH配置、查找安装位置

    Ubuntu 18.04, 安装方式 目前孤知道的Ubuntu下安装软件方式有3种(命令): 1.make 2.apt/apt-get 3.dpkg 方式1基于软件源码安装,需要经历配置(可选).编译 ...

  9. ubuntu 下python安装及hello world

    //@desn:ubuntu 下python安装及hello world //@desn:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> ...

随机推荐

  1. Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现

    前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...

  2. tesseract-ocr识别中文扫描图片实例讲解

    当我浏览http://code.google.com/p/tesseract-ocr并下载了几个文件下来之后顿时感到一头雾水,不知该如何下手.网上看到有人在linux操作系统下的实现, 如: 利用开源 ...

  3. Python包管理工具pip安装

    Python版本在2.7.9+以上的都自带pip无需安装,但在CentOS 7里面自带的Python是2.7.5,所以需要单独安装. 安装: curl https://bootstrap.pypa.i ...

  4. OpenVPN选项topology subnet实现子网掩码24的子网地址扩展

    首先,在国内的文章中都没有提及这个概念,到时很多人生成的VPN服务端配置分配的IP都采用net30这种形式,这就导致了在任何一台VPN客户端上无法实现路由指向,因为子网掩码30换算出来就两个地址. t ...

  5. SATA工作模式咋选?揭秘AHCI和IDE区别(全文)

    第1页:AHCI模式与Win7.SSD的不解之缘     AHCI这个注定和SATA接口结下不解之缘的接口模式,它担负着淘汰IDE模式的重任,从诞生开始就充满争议,它经历了整整7年时间.它伴随着SSD ...

  6. FTP主动模式与FTP被动模式所需的端口

    转载自:http://www.mofang.net/article/272/sort0963/2008/Article_11581.shtml FTP是仅基于TCP的服务,不支持UDP. 与众不同的是 ...

  7. ASP.NET Web API中通过ETag实现缓存

    通常情况下Server是无状态的,在ASP.NET Web API中,我们可以让服务端响应体中产生ETag属性,起到缓存的作用.大致实现原理是: 1.服务端的响应体中返回一个ETag属性2.客户端通过 ...

  8. Task Parallel Library02,更进一步

    在前一篇中,了解了Task的基本用法 如果一个方法返回Task,Task<T>,如何获取Task的返回值,获取值的过程会阻塞线程吗? static void Main(string[] a ...

  9. ASP.NET MVC中检测浏览器版本并提示下载更新

    如果网站使用html5.css3.自适应等新特性,可能有些浏览器版本不支持.这时候,需要提醒浏览者更新浏览器的版本到最新. 本篇用到的插件为:http://jreject.turnwheel.com/ ...

  10. 让DELPHI自带的richedit控件显示图片

    让DELPHI自带的richedit控件显示图片 unit RichEx; { 2005-03-04 LiChengbin Added: Insert bitmap or gif into RichE ...