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

本文介绍的是如何将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

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/framework-on-yarn/build-spark-on-hadoop-2-yarn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值