`
weitao1026
  • 浏览: 1058222 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

Spark简介
Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处,Spark以其先进的设计理念,迅速成为社区的热门项目,围绕着Spark推出了Spark SQL、Spark Streaming、MLLib和GraphX等组件,也就是BDAS(伯克利数据分析栈),这些组件逐渐形成大数据处理一站式解决平台。从各方面报道来看Spark抱负并非池鱼,而是希望替代Hadoop在大数据中的地位,成为大数据处理的主流标准,不过Spark还没有太多大项目的检验,离这个目标还有很大路要走。

Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集(Scala 提供一个称为 Actor 的并行模型,其中Actor通过它的收件箱来发送和接收非同步信息而不是共享数据,该方式被称为:Shared Nothing 模型)。在Spark官网上介绍,它具有运行速度快、易用性好、通用性强和随处运行等特点。



环境介绍

序号 应用 说明
1 CDH Hadoop2.6 如果想跑在hadoop上,则需要安装 2 JDK7 底层依赖 3 Scala2.11.7 底层依赖 4 Maven3.3.3 构建编译打包 5 Ant1.9.5 构建编译打包 6 Spark1.4.0 主角 7 Intillj IDEA 开发IDE 8 SBT scala-spark专属打包构建工具 9 Centos6或Centos7 集群运行的Linux系统



这里Hadoop已经安装完毕,并且能正常工作,Spark可以运行在Standalone模式上,所以假如你没有Hadoop环境,当然也是可以使用的。

1,下载scala :
wget http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgz?_ga=1.103717955.215870088.1434449855


2, 安装scala , 解压到某个目录,并加入环境变量
export SCALA_HOME=/ROOT/server/scala
export PATH=$PATH:$SCALA_HOME/bin

3,下载spark,这里推荐下载spark源码,自己编译所需对应的hadoop版本,虽然spark官网也提供了二进制的包!
http://spark.apache.org/downloads.html

4,编译spark
这里需要注意,默认的spark编译,使用的是scala2.10的版本,一定要确保你所有使用的scala在大版本2.10.x范围内一致,否则在某些情况下可能会出现莫名其妙的问题。
我这里用的是spark1.4.0的版本,所以只能用scala2.11.x的版本,这就需要重新编译spark了,另一个原因也需要和对应的haodop版本编译对应。

编译步骤
(1)将下载好的spark源码解压到某个目录下
(2)进入源码目录,分别执行如下命令

设置使用scala那个版本编译
dev/change-version-to-2.11.sh
maven打包,指定hadoop版本和scala版本
mvn -Pyarn -Phadoop-2.6 -Dscala-2.11 -DskipTests clean package
大概半小时候可编译成功







5,安装spark
请参考散仙以前的文章:http://qindongliang.iteye.com/blog/2224797

6,spark测试的几个命令:

Java代码 复制代码 收藏代码
  1. standlone模式  
  2. bin/spark-submit  --class org.apache.spark.examples.SparkPi --master spark://Hadoop-1-231:7077 examples/target/spark-examples_2.11-1.4.0.jar  100  
  3. yarn-cluster模式cluster  
  4. bin/spark-submit  --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/target/spark-examples_2.11-1.4.0.jar  100  
  5. yarn-client模式cluster  
  6. bin/spark-submit  --class org.apache.spark.examples.SparkPi --master yarn-client examples/target/spark-examples_2.11-1.4.0.jar  100  
standlone模式
bin/spark-submit  --class org.apache.spark.examples.SparkPi --master spark://Hadoop-1-231:7077 examples/target/spark-examples_2.11-1.4.0.jar  100
yarn-cluster模式cluster
bin/spark-submit  --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/target/spark-examples_2.11-1.4.0.jar  100
yarn-client模式cluster
bin/spark-submit  --class org.apache.spark.examples.SparkPi --master yarn-client examples/target/spark-examples_2.11-1.4.0.jar  100



7,远程任务提交

Spark集群一般都会部署在Linux上,而我们开发一般都会在windows上,那么我们想调试Spark程序,应该怎么做?

大多数的情况下,你都需要把你的程序打包成一个jar,然后上传到Linux上,然后在执行测试,这样非常麻烦,你频繁改代码
就意味着,你得不断的打包,上传,打包,上传,这跟hadoop的调试是一样的。

更简洁的方式,就是直接在编译器(这里推荐Intellj IDEA)里,开发,然后打包,直接在IDEA里以编程方式提交spark任务,这样在开发期间相对就比较很高效了。

如何打包构建一个spark应用的程序 ?
(1)安装使用maven   下载地址 https://maven.apache.org/  
(2)安装使用sbt   下载地址  http://www.scala-sbt.org/

这里推荐用sbt,专门针对scala项目的进行构建打包的

好吧,也许你需要一个demo来帮助你理解?

在IDEA中,创建一个Scala的SBT项目:

然后在build.sbt文件中,加入如下依赖:

Java代码 复制代码 收藏代码
  1. name := "spark2117"  
  2. version := "1.0"  
  3. scalaVersion := "2.11.7"  
  4. libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.6.0"  
  5. libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.4.0"  
  6. libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1"  
name := "spark2117"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.6.0"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.4.0"
libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1"


一段简单的代码:




然后直接运行就能直接在windows上提交任务到Linux上的spark集群了

IDEA的控制台里会打印计算结果:




在Spark的8080监控页面显示如下:






8,遇到的问题:
IDEA里警告日志显示:

Java代码 复制代码 收藏代码
  1. 15/08/04 19:33:09 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@h1:7077] has failed, address is now gated for [5000] ms. Reason is: [Disassociated].  
 15/08/04 19:33:09 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@h1:7077] has failed, address is now gated for [5000] ms. Reason is: [Disassociated].



Spark集群的Master机器的master的log日志显示:

Java代码 复制代码 收藏代码
  1. java.io.InvalidClassException: scala.reflect.ClassTag$$anon$1;   
  2. local class incompatible: stream classdesc serialVersionUID = -4937928798201944954,   
  3. local class serialVersionUID = -8102093212602380348  
java.io.InvalidClassException: scala.reflect.ClassTag$$anon$1; 
local class incompatible: stream classdesc serialVersionUID = -4937928798201944954, 
local class serialVersionUID = -8102093212602380348



服务器上log是准确的,它告诉我们有客户端和服务端的序列化版本不一致,意思就是说,你的scala或者是hadoop的版本等跟服务器上的可能不一致,所以安装时务必要确定所有的软件版本号一致。

分享到:
评论

相关推荐

    hadoop&spark简介及应用实例及实例分析.txt

    hadoop&spark简介及应用实例及实例分析.txthadoop&spark简介及应用实例及实例分析.txthadoop&spark简介及应用实例及实例分析.txthadoop&spark简介及应用实例及实例分析.txthadoop&spark简介及应用实例及实例分析....

    storm与spark简介

    ### Storm与Spark简介 #### Storm框架详解 **Storm** 是一款强大的实时数据流处理系统,其设计目的是为了处理持续不断涌入的数据流,并将其处理后输出至数据库或其它系统。相较于 **Hadoop** 主要用于批处理,**...

    2_Hadoop与Spark简介.pptx

    【Hadoop与Spark简介】 Hadoop是一个开源的分布式计算平台,由Apache软件基金会维护,它为用户提供了在分布式环境中处理海量数据的能力。Hadoop的核心包括两个主要组件:Hadoop分布式文件系统(HDFS)和MapReduce。...

    spark简介及应用.pdf

    ### Spark简介及应用 #### 一、Spark的核心优势与特点 **1.1 基于内存的计算模型** Spark最显著的特点之一是其基于内存的计算模型。相较于传统的大数据处理框架(如Hadoop)主要依赖磁盘进行计算,Spark能够将...

    Spark简介以及其生态圈

    Apache Spark是一个开源的大数据处理框架,它具备高容错性、弹性分布式数据集(RDD)的高效计算能力以及支持多种复杂的数据处理场景。它是由加州大学伯克利分校的AMPLab开发,后被捐赠给Apache软件基金会。Spark可以...

    spark简介及使用

    后来,Shark 被 Spark SQL 取代,Spark SQL 直接集成到了 Spark 主体中,提供更强大的功能和更好的性能。 五、总结 Spark 是一种高性能、易用且灵活的大数据处理框架,尤其适合迭代计算和交互式查询。通过内存计算...

    大数据学习笔记

    - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但在处理速度、易用性和灵活性方面存在一定的局限性。 - **Spark的诞生**:Spark作为一...

    (1)Spark简介

    从bigdatastudy.cn下载的讲义

    Spark-Fundamentals:Spark基础知识I-Spark简介

    **Spark基础知识I-Spark简介** Spark,作为大数据处理领域中的明星框架,因其高效、易用和灵活的特点,已经成为许多企业和开发者进行大规模数据处理的首选工具。Spark的核心设计理念是提供一个统一的平台,支持多种...

    Spark机器学习案例实战.pdf

    1. Spark简介 Apache Spark是一个开源的大数据处理框架,主要用于大规模数据集的处理。它构建在Hadoop之上,提供了比Hadoop MapReduce更快的数据处理能力。Spark提供了用于快速计算的各种高级API,包括SQL查询、流...

    sparkspark

    ### Spark简介 Apache Spark是一种用于大规模数据处理的开源集群计算系统。它提供了比Hadoop MapReduce更快的速度,同时支持更多的功能,如交互式查询和流处理。Spark最初由加州大学伯克利分校的AMPLab开发,后来...

    fangyeqing#BigData-Notes#Spark简介1

    一、简介Spark 于 2009 年诞生于加州大学伯克利分校 AMPLab,2013 年被捐赠给 Apache 软件基金会,2014 年 2 月成为 Apach

    Spark-Core学习知识笔记整理

    第一章 Spark简介与计算模型 3 1 What is Spark 3 2 Spark简介 3 3 Spark历史 4 4 BDAS生态系统 4 5 Spark与Hadoop的差异 5 6 Spark的适用场景 6 7 Spark成功案例 6 第二章 Spark开发环境搭建 8 1 Spark运行模式 8 2...

    mastering-apache-spark最好的spark教程

    1. Apache Spark简介 Apache Spark是一个开源的集群计算系统,最初由加州大学伯克利分校的AMP实验室开发。它旨在提供快速、通用、可扩展的大数据处理能力。Spark构建于Hadoop之上,但引入了内存计算,能够支持数据...

    GeoMesa Spark.docx

    #### GeoMesa Spark简介 GeoMesa是一个高性能的空间数据库,它可以高效地处理大规模的空间数据。它支持多种后端存储系统,如HBase、Accumulo等。GeoMesa Spark则是在GeoMesa的基础上加入了对Apache Spark的支持,...

    spark大数据大型电商项目-spark-shopAnalyze.zip

    一、Spark简介 Apache Spark是Apache软件基金会下的一个开源项目,它提供了一个通用的并行计算框架,适用于批处理、交互式查询、流处理和机器学习等多种应用场景。Spark的核心优势在于其内存计算机制,通过将数据...

    spark运行原理解析

    #### 一、Spark简介与核心价值 Spark是一个开源的大数据处理框架,它提供了统一的数据处理接口,能够支持多种类型的数据处理任务,如批处理、流处理、交互式查询以及机器学习等。Spark的核心优势在于其高性能、易用...

    Mastering Apache Spark(掌握Apache Spark)英文版.pdf

    #### 一、Apache Spark简介与概述 **Apache Spark**是一种用于大规模数据处理的开源集群计算系统。它提供了一种高效、易用的方式来处理大量数据,并支持多种编程语言(如Java、Scala、Python等)。Spark的核心特性...

    spark 基础讲解ppt

    **Spark简介**:Spark是由加州大学伯克利分校AMP实验室开发的通用内存并行计算框架。Spark的核心特点是运行速度快、易用性好、通用性强和随处运行。其支持多种编程语言,包括R、Python、Java和Scala,并且随着版本...

Global site tag (gtag.js) - Google Analytics