美文网首页
Spark大数据平台

Spark大数据平台

作者: EmmaQin | 来源:发表于2019-01-08 16:04 被阅读0次

    1. Spark简述

    Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。项目是用Scala进行编写。

    • Apache Spark™ is a unified analytics engine for large-scale data processing.

    • 扩展了MapReduce的计算模型

    • 高效支持多种计算模式
      MapReduce只支持离线运算,Spark可以做流式运算

    • 统一的软件栈


    • Spark Core实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统 交互等模块。Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的 API 定义。

    • Spark SQL是 Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比 如 Hive 表、Parquet 以及 JSON 等。

    • Spark Streaming 是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。

    • Spark MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。

    • 集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(cluster manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度 器,叫作独立调度器。

    • GraphX 是Spark提供的图计算和图挖掘的工具
      特点:看官网

    用途:

    我们大致把Spark的用例分为两类:数据科学应用和数据处理应用。也就对应的有两种人群:数据科学家和工程师。

    • 数据科学任务
      主要是数据分析领域,数据科学家要负责分析数据并建模,具备 SQL、统计、预测建模(机器学习)等方面的经验,以及一定的使用 Python、 Matlab 或 R 语言进行编程的能力。
    • 数据处理应用
      工程师定义为使用 Spark 开发 生产环境中的数据处理应用的软件开发者,通过对接Spark的API实现对处理的处理和转换等任务。

    2. Standalone集群安装


    从物理部署层面上来看,Spark主要分为两种类型的节点,Master节点和Worker节点,Master节点主要运行集群管理器的中心化部分,所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。Worker节点负责具体的业务运行。

    从Spark程序运行的层面来看,Spark主要分为驱动器节点和执行器节点。

    2.1 下载安装

    http://spark.apache.org/downloads.html
    解压安装:
    tar -xf spark-2.1.1-bin-hadoop2.7.tgz -C ~/software/Hadoop

    2.2 配置

    Spark的部署模式有Local、Local-Cluster、Standalone、Yarn、Mesos,我们选择最具代表性的Standalone集群部署模式。

    • 进入conf文件夹:
      将slaves.template复制为slaves
      将spark-env.sh.template复制为spark-env.sh
    • 修改slave文件,将work的hostname输入:


    • 修改spark-env.sh文件,添加如下配置:

    SPARK_MASTER_HOST=master01
    SPARK_MASTER_PORT=7077

    • 将配置好的Spark文件拷贝到其他节点上
    • 启动:spark_home/sbin/start-all.sh
    • 启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://master01:8080/

    注意:如果遇到 “JAVA_HOME not set” 异常,可以在sbin目录下的spark-config.sh 文件中加入如下配置:
    export JAVA_HOME=XXXX

    2.3 执行第一个spark程序

    2.3.1 启动Spark shell

    spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。

    /home/bigdata/hadoop/spark-2.1.1-bin-hadoop2.7/bin/spark-shell
    --master spark://master01:7077
    --executor-memory 2g
    --total-executor-cores 2
    注意:
    如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

    2.3.2 Spark-shell中编写WordCount程序

    Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可
    sc.textFile("README.md").filter(_.contains("Spark")).count

    3. Spark SQL

    Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。
    由于MapReduce这种计算模型执行效率比较慢。所有Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!

    4. Spark Streaming

    Spark Streaming类似于Apache Storm,用于流式数据的处理。根据其官方文档介绍,Spark Streaming有高吞吐量和容错能力强等特点。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。另外Spark Streaming也能和MLlib(机器学习)以及Graphx完美融合。

    和Spark基于RDD的概念很相似,Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为 RDD 存在,而 DStream 是由这些 RDD 所组成的序列(因此 得名“离散化”)。

    相关文章

      网友评论

          本文标题:Spark大数据平台

          本文链接:https://www.haomeiwen.com/subject/uekelqtx.html