热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark认识&环境搭建&运行第一个Spark程序

摘要:Spark作为新一代大数据计算引擎,因为内存计算的特性,具有比hadoop更快的计算速度。这里总结下对Spark的认识、虚拟机Spark安装、Spark开发环境搭建及编写第一

摘要:Spark作为新一代大数据计算引擎,因为内存计算的特性,具有比hadoop更快的计算速度。这里总结下对Spark的认识、虚拟机Spark安装、Spark开发环境搭建及编写第一个scala程序、运行第一个Spark程序。

1.Spark是什么

Spark是一个快速且通用的集群计算平台

2.Spark的特点

1)Spark是快速的

   Spark扩充了流行的Mapreduce计算模型

   Spark是基于内存的计算

2)Spark是通用的

    Spark的设计容纳了其它分布式系统拥有的功能

    批处理,迭代式计算,交互查询和流处理等

3)Spark是高度开放的

    Spark提供了Python,Java,Scala,SQL的API和丰富的内置库。

    Spark和其它的大数据工具整合的很好,包括hadoop,kafka等

3.Spark的组件

Spark包括多个紧密集成的组件

《Spark认识&环境搭建&运行第一个Spark程序》

 Spark Core:

  包含Spark的基本功能,包含任务调度,内存管理,容错机制等

  内部定义了RDDs(弹性分布式数据集)

  提供了很多APIs来创建和操作这些RDDs

  应用场景,为其他组件提供底层的服务

Spark SQL:

   是Spark处理结构化数据的库,就像Hive SQL,Mysql一样

  应用场景,企业中用来做报表统计

Spark Streaming:

  是实时数据流处理组件,类似Storm

  Spark Streaming提供了API来操作实时流数据

  应用场景,企业中用来从Kafka接收数据做实时统计

MLlib:

       一个包含通用机器学习功能的包,Machine learning lib

       包含分类,聚类,回归等,还包括模型评估和数据导入。

  MLlib提供的上面这些方法,都支持集群上的横向扩展。

  应用场景,机器学习。

Graphx:

  是处理图的库(例如,社交网络图),并进行图的并行计算。

  像Spark Streaming,Spark SQL一样,它也继承了RDD API。

  它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

  应用场景,图计算。

Cluster Managers:

  就是集群管理,Spark自带一个集群管理是单独调度器。

  常见集群管理包括Hadoop YARN,Apache Mesos

4.紧密集成的优点

  Spark底层优化了,基于Spark底层的组件也得到了相应的优化。

  紧密集成,节省了各个组件组合使用时的部署、测试等时间。

  向Spark增加新的组件时,其它组件,可立刻享用新组件的功能。

5.Spark与Hadoop的比较

  Hadoop应用场景:离线处理、对时效性要求不高

  Spark应用场景:时效性要求高的场景、机器学习等领域

  Doug Cutting的观点:这是生态系统,每个组件都有其作用,各善其职即可。Spark不具有HDFS的存储能力,要借助HDFS等持久化数据。大数据将会孕育出更多的新技术。

6.Spark运行环境

  Spark是Scala写的,运行在JVM上,所以运行环境Java7+

  如果使用Python API,需要安装Python2.6+或者Python3.4+

  版本对应:Spark1.6.2 –  Scala2.10    Spark2.0.0 –  Scala2.11

7.Spark安装

  Spark下载地址:http://spark.apache.org/downloads.html     注:搭Spark不需要Hadoop,如有hadoop集群,可下载相应的版本。

  《Spark认识&环境搭建&运行第一个Spark程序》

  这里安装在CentOS6.5虚拟机上,将下载好的文件上传虚拟机,并执行解压:tar -zxvf spark-2.0.1-bin-hadoop2.6.tgz

  Spark目录:

    bin包含用来和Spark交互的可执行文件,如Spark shell。

    examples包含一些单机Spark job,可以研究和运行这些例子。

  Spark的Shell:

    Spark的shell能够处理分布在集群上的数据。

    Spark把数据加载到节点的内存中,因此分布式处理可在秒级完成。

    快速使用迭代式计算,实时查询、分析一般能够在shells中完成。

    Spark提供了Python shells和Scala shells。

  这里以Scala shell为例,演示读取本地文件并进行操作:

    进入Scala shell:./spark-shell

    《Spark认识&环境搭建&运行第一个Spark程序》

    创建测试文件helloSpark并输入内容:

    《Spark认识&环境搭建&运行第一个Spark程序》

    输入val lines=sc.textFile(“/home/lucy/hellospark”) 加载文件内容,输入lines.count()进行统计行数:    ( 注:sc为spark content)

     《Spark认识&环境搭建&运行第一个Spark程序》

  ssh的配置:(ssh localhost需要输入密码,这在运行spark程序时是不可以的)

    ssh-keygen (生成秘钥)

    .ssh目录下cat xxx_rsa.pub> authorized_keys

    chmod 600 authorized_keys

8.Spark开发环境搭建

  Scala 下载地址: http://www.scala-lang.org/download/2.11.6.html   注:默认安装选项会自动配置环境变量,安装路径不能有空格

  IntelliJ IDEA 下载地址:https://www.jetbrains.com/idea/

  注册码地址:http://idea.lanyus.com

  由于这里下载的ideaIU-15.0.2.exe,已经包含有Scala插件,如果不包含需要下载。查看是否已有scala插件可以新建项目,打开Files->settings选择Plugins,输入scala查看:

  《Spark认识&环境搭建&运行第一个Spark程序》

9.编写第一个Scala程序

  依次点击File->New->Project,选择Scala->SBT,下一步,打开如下窗口:

  《Spark认识&环境搭建&运行第一个Spark程序》

  这里Scala选择为2.11.6,创建完成后会进行初始化操作,自动下载jar包等。下载时常看具体网络情况。待所有进度条完成后,项目目录已经出来了,如下:

  《Spark认识&环境搭建&运行第一个Spark程序》

  编辑build.sbt:

  name := “LearnSpark”

  version := “1.0”

  scalaVersion := “2.11.1”

  libraryDependencies += “org.apache.spark” % “spark-core_2.11” % “2.0.2”

  编辑完成后,点击刷新,后台自动下载对应的依赖:

  《Spark认识&环境搭建&运行第一个Spark程序》

  src->scala右击新建scala类WordCount

  《Spark认识&环境搭建&运行第一个Spark程序》

import org.apache.spark.{SparkContext, SparkConf}
/**
* Created by Lucy on 2017/7/4.
*/
object WordCount {
def main(args: Array[String]) {
val conf
=new SparkConf().setAppName("wordcount")
val sc
=new SparkContext(conf)
val input
=sc.textFile("/home/lucy/helloSpark")
val lines
=input.flatMap(line=>line.split(" "))
val count
=lines.map(word=>(word,1)).reduceByKey{case (x,y)=>x+y}
val output
=count.saveAsTextFile("/home/lucy/hellosparkRes")
}
}

  代码编写完成后,进行打包(配置jar包,build):

  配置jar包:File->Project Structure,选择Artifacts,点击+号:

  《Spark认识&环境搭建&运行第一个Spark程序》

  《Spark认识&环境搭建&运行第一个Spark程序》  

  这里不打包依赖。配置jar包完成后,Build->Build Artifacts,等待build完成。

10.运行第一个Spark程序

  这里需要先启动集群:

  启动master:  ./sbin/start-master.sh

  启动worker:  ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077  

        这里的地址为:启动master后,在浏览器输入localhost:8080,查看到的master地址

        《Spark认识&环境搭建&运行第一个Spark程序》

  启动成功后,jps查看进程:

  《Spark认识&环境搭建&运行第一个Spark程序》

  接下来执行提交命令,将打好的jar包上传到linux目录,jar包在项目目录下的out\artifacts下。

  提交作业: ./bin/spark-submit –master spark://localhost:7077 –class WordCount /home/lucy/learnspark.jar

  可以在4040端口查看job进度:

  《Spark认识&环境搭建&运行第一个Spark程序》

  查看结果:

  《Spark认识&环境搭建&运行第一个Spark程序》

  由于按照空格分割字符串,所以这里将Spark! 视为一个单词。至此,任务运行结束!


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • Apache Hadoop HDFS QJournalProtocol 中 getJournalCTime 方法的应用与代码实例分析 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
author-avatar
王佳秋承男
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有