关闭

Spark入门实战指南——Spark生态圈+第一个Spark程序

标签: spark生态圈大数据
1336人阅读 评论(0) 收藏 举报
分类:

一、Spark及其生态圈简介

1.目前大数据处理场景有以下几个类型:

1.  复杂的批量处理(BatchData Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;

2.  基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间

3. 基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间

目前对以上三种场景需求都有比较成熟的处理框架,第一种情况可以用Hadoop的MapReduce来进行批量海量数据处理,第二种情况可以Impala进行交互式查询,对于第三中情况可以用Storm分布式处理框架处理实时流式数据。以上三者都是比较独立,各自一套维护成本比较高,而Spark的出现能够一站式平台满意以上需求。

2.生态系统

2.1 Spark Core

2.2 SparkStreaming

2.3 Spark SQL

SharkHive on Spark,本质上是通过HiveHQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hivemetadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。Shark的最大特性就是快和与Hive的完全兼容,且可以在shell模式下使用rdd2sql()这样的API,把HQL得到的结果集,继续在scala环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对HQL结果进一步分析计算。

2.4 BlinkDB

和传统关系型数据库不同,BlinkDB是一个很有意思的交互式查询系统,就像一个跷跷板,用户需要在查询精度和查询时间上做一权衡;如果用户想更快地获取查询结果,那么将牺牲查询结果的精度;同样的,用户如果想获取更高精度的查询结果,就需要牺牲查询响应时间。用户可以在查询的时候定义一个失误边界。

2.5 MLBase/MLlib

MLBase分为四部分:MLlibMLIML OptimizerMLRuntime

l  MLOptimizer会选择它认为最适合的已经在内部实现好了的机器学习算法和相关参数,来处理用户输入的数据,并返回模型或别的帮助分析的结果;

l  MLI 是一个进行特征抽取和高级ML编程抽象的算法实现的API或平台;

l MLlib是Spark实现一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维以及底层优化,该算法可以进行可扩充; MLRuntime 基于Spark计算框架,将Spark的分布式计算应用到机器学习领域。

总的来说,MLBase的核心是他的优化器,把声明式的Task转化成复杂的学习计划,产出最优的模型和计算结果。与其他机器学习Weka和Mahout不同的是:

l  MLBase是分布式的,Weka是一个单机的系统;

l  MLBase是自动化的,Weka和Mahout都需要使用者具备机器学习技能,来选择自己想要的算法和参数来做处理;

l  MLBase提供了不同抽象程度的接口,让算法可以扩充

l  MLBase基于Spark这个平台

2.6 GraphX

GraphX是Spark中用于图和图并行计算的API

2.7 SparkR

SparkR是AMPLab发布的一个R开发包,使得R摆脱单机运行的命运,可以作为Spark的job运行在集群上,极大得扩展了R的数据处理能力

2.8 Tachyon

Tachyon是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享,就像Spark和 MapReduce那样。通过利用信息继承,内存侵入,Tachyon获得了高性能。

二、SparkWordCount程序

安装:安装Idea、安装本地JAVA 8 和Scala 2.10.4、为IDEA安装Scala
①新建项目,指定JDK1.80.X和Scala2.10.4
②设置工程的Libraries核心是添加Spark的jar
(File-->Project Structure-->libraries-->加号(java)-->spark-1.6.0-bin-hadoop2.6-->lib-->spark-assembly-1.6.0-hadoop2.6.0.jar--apply-->ok)

 

package idea.dt.spark

import org.apache.spark.{SparkConf, SparkContext}

/**
  * (本地测试的程序)
  * 统计一个文件中出现的单词计数
  * @author zzh
  * @time	 2016/8/23
  */

object WordCount {
  def main(args: Array[String]) {

    /*
     * 第一步:创建Spark的配置对象SparkConf,设置Spark程序运行时的配置信息
     * 例如说通过setMaster来设置程序焰莲劫的Spark集群的Master的URL,如果设置为
     * LOCAL,则代表Spark程序在本地运行,特别适合与机器配置条件差的初学者
     */
    val conf = new SparkConf() //创建SparkConf对象
    conf.setAppName("Wow,My First Spark App") //设置程序的名称,在程序运行的监控界面可以看到名称
    conf.setMaster("local") //程序本地运行不需要Spark集群

    /*
     *第二步:创建SparkContext对象<——Spark程序所有功能唯一的入口(无论是Scala、Java、Python、R都有一个SparkContext)
     * SparkContext的核心作用:初始化spark应用程序运行搜徐的核心组件,包括DAGScheduler、TaskScheduler、schedulerBackend
     * 同时还会负责Spark程序往Master注册程序等
     */
    val sc = new SparkContext(conf) //创建SparkContext对象,通过传入的SparkConf实例来定制Spark运行的具体参数和配置信息

    /*
     * 第三步:根据具体的数据来源(HDFS、Hbase、Local FS、DB、S3等)通过SparkContext来创建RDD
     * RDD的创建基本三种方式:通过外部的数据源(例如:HDFS)、根据Scala集合、由其他的RDD操作
     * 数据会被RDD划分成一系列的Partitions,分配到没法Partition的数据与一个数据Task的处理范畴
     */
    //并行度只有一个
    //    val lines:RDD[String] = sc.textFile("F:\\深入理解大数据Software\\大数据压缩文件\\spark-1.6.0-bin-hadoop2.6\\spark-1.6.0-bin-hadoop2.6\\README.md", 1)
    val lines = sc.textFile("F:\\深入理解大数据Software\\大数据压缩文件\\spark-1.6.0-bin-hadoop2.6\\spark-1.6.0-bin-hadoop2.6\\README.md", 1)

    /*
     * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数等的编程,来进行具体数据计算
     */
    //4.1对每一行进行拆分
    val words = lines.flatMap { line => line.split(" ") }
    //4.2对每个单词计数为1,
    val pairs = words.map { word => (word, 1) }
    //4.3统计每个单词在文件中的总数
    val wordCountsByOrder = pairs.reduceByKey(_ + _).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair=>(pair._2,pair._1))//对相同的Key,进行Value的累积(包括Local和Reduce级别的同时Reduce)

    wordCountsByOrder.foreach(wordNumberPair => println(wordNumberPair._1 + " : " + wordNumberPair._2) )
    wordCountsByOrder.saveAsTextFile()

    sc.stop()
  }
}

 

0
0
查看评论

Spark-基础-Spark及其生态圈简介

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之...
  • youdianjinjin
  • youdianjinjin
  • 2016-05-24 11:43
  • 984

一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作...
  • soonfly
  • soonfly
  • 2016-04-15 10:32
  • 1273

spark的生态圈

Spark系统中,其核心框架是spark core,同时涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL和shark,提供机器学习功能的系统MLbase及底层的分布式机器学习库MLlib,并行图计算框架GraphX、流计算框架SparkStreaming。采样近似计算查询引擎Blink...
  • dsl200970
  • dsl200970
  • 2017-04-11 19:49
  • 303

Spark1.0.0 生态圈一览

Spark生态圈,也就是BDAS(伯克利数据分析栈),是伯克利APMLab实验室精心打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成,来展现大数据应用的一个平台,其核心引擎就是Spark,其计算基础是弹性分布式数据集,也就是RDD。通过Spa...
  • book_mmicky
  • book_mmicky
  • 2014-06-08 13:45
  • 5022

Spark Java程序案例入门

spark 安装模式: local(本地模式):常用于本地开发测试,本地还分为local单线程和local-cluster多线程 standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA on yarn(...
  • m0_37739193
  • m0_37739193
  • 2017-07-10 10:25
  • 925

spark入门详解

1. Spark中的基本概念 在Spark中,有下面的基本概念。 Application:基于Spark的用户程序,包含了一个driver program和集群中多个executor Driver Program:运行Application的main()函数并创建SparkContext。...
  • anningzhu
  • anningzhu
  • 2017-03-07 20:24
  • 2547

Spark生态圈介绍

Spark入门实战系列--1.Spark及其生态圈简介 1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache...
  • qq_31420401
  • qq_31420401
  • 2018-01-20 22:05
  • 19

Spark生态和Spark架构

Spark概览 Spark 是一个通用的大规模数据快速处理引擎。可以简单理解为 Spark 就是一个大数据分布式处理框架。 Spark是基于map reduce算法实现的分布式计算框架,但不同的是Spark的中间输出和结果输出可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地用于...
  • wwwxxdddx
  • wwwxxdddx
  • 2016-04-05 18:04
  • 4042

我的新书《Hadoop+Spark生态系统操作与实战指南》已经上架

致 青 春        赶在儿子1岁生日之际,赶在我30岁告别之际,我撰写《Hadoop+Spark生态系统操作与实战指南》一书,作为我儿子的生日礼物。我借【时光之手】合上我30年青春的最后一页,我借【此书】记录下我的青春,我借【清华大学出版社】将我青...
  • silentwolfyh
  • silentwolfyh
  • 2017-08-07 20:22
  • 3114

解读2015之Spark篇:新生态系统的形成

http://www.tuicool.com/articles/RJ7Vza   解读2015之Spark篇:新生态系统的形成 时间 2016-01-07 12:00:00 InfoQ 原文  http://www.infoq.com/cn/...
  • u013571243
  • u013571243
  • 2016-05-22 12:43
  • 864
    个人资料
    • 访问:29095次
    • 积分:641
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:7篇
    • 译文:0篇
    • 评论:4条
    文章分类