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测试的几个命令:
- 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
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文件中,加入如下依赖:
- 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"
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里警告日志显示:
- 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.io.InvalidClassException: scala.reflect.ClassTag$$anon$1;
- local class incompatible: stream classdesc serialVersionUID = -4937928798201944954,
- 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的版本等跟服务器上的可能不一致,所以安装时务必要确定所有的软件版本号一致。
相关推荐
Spark简介以及其生态圈。Spark运行架构原理,让大家快速的理解与掌握Spark
2_Hadoop与Spark简介.pptx
1.1 Spark简介与发展 7 1.2 Spark特点 7 1.3 Spark与Hadoop集成 7 1.4 Spark组件 8 第2章 Spark弹性分布数据集 9 2.1 弹性分布式数据集 9 2.2 MapReduce数据分享效率低 9 2.3 MapReduce进行迭代操作 9 2.4 MapReduce...
介绍Spark集群计算框架,及运行于Spark框架上的Hive工具Shark。
写得比较简单,供初学者参考参考
Spark是一个基于内存计算的开源大数据处理框架,它的出现彻底改变了大数据处理和分析的格局。Spark提供了高效、快速且易于使用的工具,使得数据科学家、数据工程师和开发人员能够轻松处理和分析大规模数据集。下面将...
Spark总结PPT介绍spark常用的方法,shuffle,优化方法等
第1章 Spark简介 1.1 Spark是什么 1.2 Spark生态系统BDAS 1.3 Spark架构 1.4 Spark分布式架构与单机多核架构的异同 1.5 Spark的企业级应用 1.5.1 Spark在Amazon中的应用 1.5.2 Spark在Yahoo!的应用 1.5.3 Spark在...
从bigdatastudy.cn下载的讲义
第1章spark入门 1-1spark简介和启动方法spark简介和启动方法 1-2【案例】使用spark分析商品数据【案例】使用spark分析商品数据 1-3【案例】使用spark交互式分析商品数据【案例】使用spark交互式分析商品数据 1-2...
一、简介Spark 于 2009 年诞生于加州大学伯克利分校 AMPLab,2013 年被捐赠给 Apache 软件基金会,2014 年 2 月成为 Apach
第一章 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...
星火基础 Spark基础知识I-Spark简介
Spark简介:介绍Spark的起源、核心概念、架构以及与其他大数据处理框架(如Hadoop MapReduce)的比较。 Scala语言基础:由于Spark最初是使用Scala开发的,本书将详细介绍Scala的基础知识,包括语法、数据类型、控制...
关于spark的介绍,可以作为初步的了解
1.Spark及其生态圈简介.pdf 2.Spark编译与部署(上)--基础环境搭建.pdf 2.Spark编译与部署(下)--Spark编译安装.pdf 2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战....
Spark简介spark的四大特性 Speed Ease of Use Generality Runs Everywhere
IT十八掌第三期大数据配套...1.Spark简介 2.Spark部署和运行 3.Spark程序开发 4. Spark编程模型 5.作业执行解析 6.Spark SQL与DataFrame 7.深入Spark Streaming 8.Spark MLlib与机器学习 9.GraphX与SparkR 10.mahout