大数据培训新三板挂牌机构 股票代码:837906 | EN CN
【小牛原创】Spark SQL 从入门到实战 -- spark sql 1.6版本相关api
【小牛原创】Spark SQL 从入门到实战 -- 概述
Spark Streaming:大规模流式数据处理
spark RDD 相关需求
spark RDD 高级应用
Spark手册 - load&save
Spark手册 - debug
Spark手册 - cache&checkpoint
Spark手册 - RDD Action API
Spark手册 - Partitioner源码
Spark手册 - RDD Transformation API
Spark手册 - RDD的依赖关系
Spark手册 - RDD入门
Spark手册 - 远程debug
Spark手册 - 在IDEA中编写WordCount程序(3)
Spark手册 - 在IDEA中编写WordCount程序(2)
Spark手册 - 在IDEA中编写WordCount程序(1)
Spark手册 - 执行Spark程序
Spark手册 - 集群安装
20页PPT|视频类网站大数据生态 Spark在爱奇艺的应用实践
Spark机器学习入门实例——大数据集(30+g)二分类
Spark官方文档中文翻译:Spark SQL 之 Data Sources
使用Spark MLlib来训练并服务于自然语言处理模型
Spark知识体系完整解读
案例 :Spark应用案例现场分享(IBM Datapalooza)
最全的Spark基础知识解答
Spark在GrowingIO数据无埋点全量采集场景下的实践
Apache Spark探秘:三种分布式部署方式比较
Apache Spark探秘:多进程模型还是多线程模型?
Apache Spark探秘:实现Map-side Join和Reduce-side Join
Apache Spark探秘:利用Intellij IDEA构建开发环境
spark on yarn的技术挑战
Apache Spark学习:将Spark部署到Hadoop 2.2.0上
Hadoop与Spark常用配置参数总结
基于Spark Mllib,SparkSQL的电影推荐系统
spark作业调优秘籍,解数据倾斜之痛
Spark入门必学:预测泰坦尼克号上的生还情况
小牛学堂浅谈基于Spark大数据平台日志审计系统的设计与实现
【Hadoop Summit Tokyo 2016】使用基于Lambda架构的Spark的近实时的网络异常检测和流量分析
Spark编程环境搭建经验分享
Spark技术在京东智能供应链预测的应用
spark中textFile、groupByKey、collect、flatMap、map结合小案例
Spark中DataFrame的schema讲解
深度剖析Spark分布式执行原理
【Spark Summit East 2017】从容器化Spark负载中获取的经验
内存分析技术哪家强?Spark占几何
Spark系列之一:Spark,一种快速数据分析替代方案
6种最常见的Hadoop和Spark项目
Hadoop vs Spark
Hadoop与Spark常用配置参数总结
Spark RPC通信层设计原理分析
Spark Standalone架构设计要点分析
Spark UnifiedMemoryManager内存管理模型分析
网易的Spark技术分享

Apache Spark学习:将Spark部署到Hadoop 2.2.0上

于2017-03-29由小牛君创建

分享到:



本文介绍的是如何将Apache Spark部署到Hadoop 2.2.0上,如果你们的Hadoop是其他版本,比如CDH4,可直接参考官方说明操作。

需要注意两点:(1)使用的Hadoop必须是2.0系列,比如0.23.x,2.0.x,2.x.x或CDH4、CDH5等,将Spark运行在Hadoop上,本质上是将Spark运行在Hadoop YARN上,因为Spark自身只提供了作业管理功能,资源调度要依托于第三方系统,比如YARN或Mesos等 (2)之所以不采用Mesos而是YARN,是因为YARN拥有强大的社区支持,且逐步已经成为资源管理系统中的标准。

注意,目前官方已经发布了0.8.1版本,可以直接从这里选择合适的版本下载,如果你使用的是hadoop 2.2.0或者CDH5,可以直接从这里下载

将Spark部署到Hadoop 2.2.0上需要经过以下几步:

步骤1:准备基础软件

步骤2:下载编译spark 0.8.1或者更高版本

步骤3:运行Spark实例

接下来详细介绍这几个步骤。

步骤1:准备基础软件

(1) 基本软件

包括linux操作系统、Hadoop 2.2.0或者更高版本、Maven 3.0.4版本(或者最新3.0.x版本),其中,Hadoop 2.2.0只需采用最简单的方式安装即可,具体可参考我的这篇文章:Hadoop YARN安装部署,Maven安装方法很简单,可以在http://maven.apache.org/download.cgi上下载binary版本,解压后,配置MAVEN_HOME和PATH两个环境变量,具体可自行在网上查找相关方法,比如这篇“Linux下安装maven”,但需要注意,版本不是3.0.x版,Spark对版本要求很严格。

(2)硬件准备

Spark 2.2.0专门搞出来一个yarn-new支持hadoop 2.2.0,因为hadoop 2.2.0的API发生了不兼容变化,需要使用Maven单独编译并打包,而编译过程非常慢(一般机器,2个小时左右),且占用内存较多,因此,你需要一台满足以下条件的机器作为编译机:

条件1:可以联网:第一次编译时,maven需要从网上下载大量的jar包,速度比较慢,如果你网络不行,建议直接放弃编译。

条件2:内存2GB以上

步骤2:下载编译spark 0.8.1或者更高版本

可以用git下载或者直接wget或者spark 0.8.1版本

wget https://github.com/apache/incubator-spark/archive/v0.8.1-incubating.zip

注意,0.8.1之前的版本不支持hadoop 2.2.0,从0.8.1版本开始支持。

下载之后,对其解压:

unzip v0.8.1-incubating

然后进入解压目录,输入以下命令:

cd incubator-spark-0.8.1-incubating

export MAVEN_OPTS=”-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m”

mvn -Dyarn.version=2.2.0 -Dhadoop.version=2.2.0  -Pnew-yarn -DskipTests package

一般需要等待很长时间,编译完成后,将spark内核打包成一个独立的jar包,命令如下:

SPARK_HADOOP_VERSION=2.2.0 SPARK_YARN=true ./sbt/sbt assembly

打包完成后,在assembly/target/scala-2.9.3/目录下会生成两个jar包,其中一个是spark-assembly-0.8.1-incubating-hadoop2.2.0.jar,examples/target/scala-2.9.3/下面也有一个jar包:spark-examples-assembly-0.8.1-incubating.jar,接下来将重点使用这两个包。
如果你想把spark作为一个客户端,放到hadoop集群上,供用户使用,需要拷贝以下几个目录:

conf/

assembly/target/scala-2.9.3/ 只需拷贝jar包

examples/target/scala-2.9.3/只需拷贝jar包

spark-class

注意,需要保证以上目录的层次结构,即一个目录下有:

conf目录、spark-class文件,assembly目录(内部有target目录)、examples目录(内部有target目录)

一切就绪后,可以编写一个shell脚本run_spark_shell.sh运行pi计算程序:

#用YARN_CONF_DIR或HADOOP_CONF_DIR指定YARN或者Hadoop配置文件存放目录

export YARN_CONF_DIR=/opt /yarn/etc/hadoop/

SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \

./spark-class org.apache.spark.deploy.yarn.Client \

–jar ./assembly/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar \

–class org.apache.spark.examples.JavaSparkPi \

–args yarn-standalone \

–num-workers 3 \

–master-memory 2g \

–worker-memory 2g \

–worker-cores 1

然后运行该shell脚本:

sh run_spark_shell.sh

可在终端看到以下内容:

以上程序比较简单,你可以运行一个复杂点的迭代程序,Spark提供了一个图闭包传递算法(Transitive closure),可以通过以下脚本运行(run_spark_tc.sh):

#用YARN_CONF_DIR或HADOOP_CONF_DIR指定YARN或者Hadoop配置文件存放目录

export YARN_CONF_DIR=/opt /yarn/etc/hadoop/

SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \

./spark-class org.apache.spark.deploy.yarn.Client \

–jar ./assembly/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar \

–class org.apache.spark.examples.SparkTC \

–args yarn-standalone \

–num-workers 3 \

–master-memory 2g \

–worker-memory 2g \

–worker-cores 1

运行该脚本后,可在YARN界面上看到运行过程:

如果你使用的CDH4或者2.0.x版本,无需使用maven编译,直接使用sbt打包即可,具体可参考:Building a YARN-Enabled Assembly JAR

截止目前,CDH成为第一个宣称支持Spark的发行版,预计在CDH5版本中将打入Spark,到之后使用Spark更加方便。

另外,如果你只想体验一下Spark,不想自己编译打包Spark,可以直接下载我打包好的spark(下载地址:spark-on-hadoop-2.2.0.tar.gz),内置两个可以直接运行的spark作业(run_spark_pi.sh和run_spark_tc.sh),不过运行前,你需要先配置以下hadoop目录所在位置,即修改脚本的第一行内容:

export YARN_CONF_DIR=/opt/pgs/yarn/etc/hadoop/

目前0.8.1版本已经发布,官网提供了安装包下载,下载后可以直接使用,下载链接是:spark-hadoop2