Yarn上运行spark-1.6.0

原创
2016-06-13 08:45:37 974浏览

Yarn上运行spark-1.6.0


Yarn上运行spark-1.6.0.pdf

目录

目录1

1.约定1

2.安装Scala 1

2.1.下载2

2.2.安装2

2.3.设置环境变量2

3.安装Spark 2

3.1.下载2

3.2.安装2

3.3.配置3

3.3.1.修改conf/spark-env.sh 3

4.启动Spark 3

4.1.运行自带示例3

4.2.SparkSQLCli4

5.和Hive集成 4

6.常见错误5

6.1.错误1:unknownqueue:thequeue 5

6.2.SPARK_CLASSPATHwasdetected6

7.相关文档6

1.约定

本文约定Hadoop2.7.1安装在/data/hadoop/current,而Spark1.6.0被安装在/data/hadoop/spark,其中/data/hadoop/spark为指向/data/hadoop/spark。

Spark官网为:http://spark.apache.org/(Shark官网为:http://shark.cs.berkeley.edu/,Shark已成为Spark的一个模块,不再需要单独安装)。

以cluster模式运行Spark,不介绍client模式。

2.安装Scala

联邦理工学院洛桑(EPFL)的MartinOdersky于2001年基于Funnel的工作开始设计Scala。

Scala是一种多范式的编程语言,设计初衷是要集成纯面向对象编程和函数式编程的各种特性。运行在Java虚拟机JVM之上,兼容现有的Java程序,并可调用Java类库。Scala包含编译器和类库,以BSD许可证发布。

2.1.下载

Spark使用Scala开发的,在安装Spark之前,先在各个节上将Scala安装好。Scala的官网为:http://www.scala-lang.org/,下载网址为:http://www.scala-lang.org/download/,本文下载的是二进制安装包scala-2.11.7.tgz。

2.2.安装

本文以root用户(实则也可以非root用户,建议事先规划好)将Scala安装在/data/scala,其中/data/scala是指向/data/scala-2.11.7的软链接。

安装方法非常简单,将scala-2.11.7.tgz上传到/data目录,然后在/data/目录下对scala-2.11.7.tgz进行解压。

接着,建立软链接:ln-s/data/scala-2.11.7/data/scala。

2.3.设置环境变量

Scala被安装完成后,需要将它添加到PATH环境变量中,可以直接修改/etc/profile文件,加入以下内容即可:

exportSCALA_HOME=/data/scala

exportPATH=$SCALA_HOME/bin:$PATH

3.安装Spark

Spark的安装以非root用户进行,本文以hadoop用户安装它。

3.1.下载

本文下载的二进制安装包,推荐这种方式,否则编译还得折腾。下载网址为:http://spark.apache.org/downloads.html,本文下载的是spark-1.6.0-bin-hadoop2.6.tgz,这个可以直接跑在YARN上。

3.2.安装

1)将spark-1.6.0-bin-hadoop2.6.tgz上传到目录/data/hadoop下

2)解压:tarxzfspark-1.6.0-bin-hadoop2.6.tgz

3)建立软链接:ln-sspark-1.6.0-bin-hadoop2.6spark

在yarn上运行spark,不需要每台机器都安装spark,可以只安装在一台机器上。但是只能在被安装的机器上运行spark,原因很简单:需要调用spark的文件。

3.3.配置

3.3.1.修改conf/spark-env.sh

可以spark-env.sh.template复制一份,然后增加以下内容:

HADOOP_CONF_DIR=/data/hadoop/current/etc/hadoop

YARN_CONF_DIR=/data/hadoop/current/etc/hadoop

4.启动Spark

由于运行在Yarn上,所以没有启动Spark这一过程。而是在执行命令spark-submit时,由Yarn调度运行Spark。

4.1.运行自带示例

./bin/spark-submit--classorg.apache.spark.examples.SparkPi\

--masteryarn--deploy-modecluster\

--driver-memory4g\

--executor-memory2g\

--executor-cores1\

--queuedefault\

lib/spark-examples*.jar10

运行输出:

16/02/0316:08:33INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:34INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:35INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:36INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:37INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:38INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:39INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:RUNNING)

16/02/0316:08:40INFOyarn.Client:Applicationreportforapplication_1454466109748_0007(state:FINISHED)

16/02/0316:08:40INFOyarn.Client:

clienttoken:N/A

diagnostics:N/A

ApplicationMasterhost:10.225.168.251

ApplicationMasterRPCport:0

queue:default

starttime:1454486904755

finalstatus:SUCCEEDED

trackingURL:http://hadoop-168-254:8088/proxy/application_1454466109748_0007/

user:hadoop

16/02/0316:08:40INFOutil.ShutdownHookManager:Shutdownhookcalled

16/02/0316:08:40INFOutil.ShutdownHookManager:Deletingdirectory/tmp/spark-7fc8538c-8f4c-4d8d-8731-64f5c54c5eac

4.2.SparkSQLCli

通过运行即可进入SparkSQLCli交互界面,但要在Yarn上以cluster运行,则需要指定参数--master值为yarn(注意不支持参数--deploy-mode的值为cluster,也就是只能以client模式运行在Yarn上):

./bin/spark-sql--masteryarn

为什么SparkSQLCli只能以client模式运行?其实很好理解,既然是交互,需要看到输出,这个时候cluster模式就没法做到了。因为cluster模式,ApplicationMaster在哪机器上运行,是由Yarn动态确定的。

5.和Hive集成

Spark集成Hive非常简单,只需以下几步:

1)在spark-env.sh中加入HIVE_HOME,如:exportHIVE_HOME=/data/hadoop/hive

2)将Hive的hive-site.xml和hive-log4j.properties两个文件复制到Spark的conf目录下。

完成后,再次执行spark-sql进入Spark的SQLCli,运行命令showtables即可看到在Hive中创建的表。

示例:

./spark-sql--masteryarn--driver-class-path/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

6.常见错误

6.1.错误1:unknownqueue:thequeue

运行:

./bin/spark-submit--classorg.apache.spark.examples.SparkPi--masteryarn--deploy-modecluster--driver-memory4g--executor-memory2g--executor-cores1--queuethequeuelib/spark-examples*.jar10

时报如下错误,只需要将“--queuethequeue”改成“--queuedefault”即可。

16/02/0315:57:36INFOyarn.Client:Applicationreportforapplication_1454466109748_0004(state:FAILED)

16/02/0315:57:36INFOyarn.Client:

clienttoken:N/A

diagnostics:Applicationapplication_1454466109748_0004submittedbyuserhadooptounknownqueue:thequeue

ApplicationMasterhost:N/A

ApplicationMasterRPCport:-1

queue:thequeue

starttime:1454486255907

finalstatus:FAILED

trackingURL:http://hadoop-168-254:8088/proxy/application_1454466109748_0004/

user:hadoop

16/02/0315:57:36INFOyarn.Client:Deletingstagingdirectory.sparkStaging/application_1454466109748_0004

Exceptioninthread"main"org.apache.spark.SparkException:Applicationapplication_1454466109748_0004finishedwithfailedstatus

atorg.apache.spark.deploy.yarn.Client.run(Client.scala:1029)

atorg.apache.spark.deploy.yarn.Client$.main(Client.scala:1076)

atorg.apache.spark.deploy.yarn.Client.main(Client.scala)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:606)

atorg.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)

atorg.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)

atorg.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)

atorg.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)

atorg.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

16/02/0315:57:36INFOutil.ShutdownHookManager:Shutdownhookcalled

16/02/0315:57:36INFOutil.ShutdownHookManager:Deletingdirectory/tmp/spark-54531ae3-4d02-41be-8b9e-92f4b0f05807

6.2.SPARK_CLASSPATHwasdetected

SPARK_CLASSPATHwasdetected(setto'/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar:').

ThisisdeprecatedinSpark1.0+.

Pleaseinsteaduse:

-./spark-submitwith--driver-class-pathtoaugmentthedriverclasspath

-spark.executor.extraClassPathtoaugmenttheexecutorclasspath

意思是不推荐在spark-env.sh中设置环境变量SPARK_CLASSPATH,可以改成如下推荐的方式:

./spark-sql--masteryarn--driver-class-path/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

7.相关文档

《HBase-0.98.0分布式安装指南》

《Hive0.12.0安装指南》

《ZooKeeper-3.4.6分布式安装指南》

《Hadoop2.3.0源码反向工程》

《在Linux上编译Hadoop-2.4.0》

《Accumulo-1.5.1安装指南》

《Drill1.0.0安装指南》

《Shark0.9.1安装指南》

更多,敬请关注技术博客:http://aquester.cublog.cn。


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。