Yarn上运行spark-1.6.0

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Yarn上运行spark-1.6.0.pdf 目录 目录 1 1. 约定 1 2. 安装Scala 1 2.1. 下载 2 2.
img_e25d4fb2f8de1caf41a735ec53088516.pngYarn上运行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. SparkSQL Cli 4

5. 和Hive集成 4

6. Java开发 5

7. 常见错误 5

7.1. 错误1unknown queue: thequeue 5

7.2. SPARK_CLASSPATH was detected 6

8. 相关文档 7

 

1. 约定

本文约定Hadoop 2.7.1安装在/data/hadoop/current,而Spark 1.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)的Martin Odersky2001年基于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文件,加入以下内容即可:

export SCALA_HOME=/data/scala

export PATH=$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) 解压:tar xzf spark-1.6.0-bin-hadoop2.6.tgz

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

 

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 --class org.apache.spark.examples.SparkPi \

                   --master yarn --deploy-mode cluster \

                   --driver-memory 4g \

                   --executor-memory 2g \

                   --executor-cores 1 \

                   --queue default \

                   lib/spark-examples*.jar 10

 

运行输出:

16/02/03 16:08:33 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:34 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:35 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:36 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:37 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:38 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:39 INFO yarn.Client: Application report for application_1454466109748_0007 (state: RUNNING)

16/02/03 16:08:40 INFO yarn.Client: Application report for application_1454466109748_0007 (state: FINISHED)

16/02/03 16:08:40 INFO yarn.Client: 

         client token: N/A

         diagnostics: N/A

         ApplicationMaster host: 10.225.168.251

         ApplicationMaster RPC port: 0

         queue: default

         start time: 1454486904755

         final status: SUCCEEDED

         tracking URL: http://hadoop-168-254:8088/proxy/application_1454466109748_0007/

         user: hadoop

16/02/03 16:08:40 INFO util.ShutdownHookManager: Shutdown hook called

16/02/03 16:08:40 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-7fc8538c-8f4c-4d8d-8731-64f5c54c5eac

4.2. SparkSQL Cli

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

./bin/spark-sql --master yarn

 

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

5. Hive集成

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

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

2) 将Hivehive-site.xmlhive-log4j.properties两个文件复制到Sparkconf目录下。

 

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

示例:

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

6. Java开发

SparkJava编程示例:。

package testspark;

 

import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.sql.Row;

import org.apache.spark.sql.hive.HiveContext;

 

public class SparkSQLHiveOnYarn {

  public static void main(String[] args) throws Exception {

    System.out.println("start");

    SparkConf sparkConf = new SparkConf().setAppName("SparkSQLHiveOnYarnTest");

    JavaSparkContext ctx = new JavaSparkContext(sparkConf);

    HiveContext hc = new HiveContext(ctx.sc());

    hc.sql("use default");  // 选择使用哪个DB

    Row[] result = hc.sql("select count(1) from test").collect();

    System.out.println(result[0]);

    ctx.stop();

  }

}

 

打包成jar后,运行(假设jar包放在/tmp目录下):

spark-submit --master  yarn \

             --class testspark.SparkSQLHiveOnYarn \

             --driver-memory 4G \

             --driver-java-options "-XX:MaxPermSize=4G" \

             --verbose \

             --jars $HIVE_HOME/lib/mysql-connector-java-5.1.38-bin.jar \

             /tmp/testspark.jar 

7. 常见错误

7.1. 错误1unknown queue: thequeue

运行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 4g --executor-memory 2g --executor-cores 1 --queue thequeue lib/spark-examples*.jar 10

时报如下错误,只需要将“--queue thequeue”改成“--queue default”即可。

16/02/03 15:57:36 INFO yarn.Client: Application report for application_1454466109748_0004 (state: FAILED)

16/02/03 15:57:36 INFO yarn.Client: 

         client token: N/A

         diagnostics: Application application_1454466109748_0004 submitted by user hadoop to unknown queue: thequeue

         ApplicationMaster host: N/A

         ApplicationMaster RPC port: -1

         queue: thequeue

         start time: 1454486255907

         final status: FAILED

         tracking URL: http://hadoop-168-254:8088/proxy/application_1454466109748_0004/

         user: hadoop

16/02/03 15:57:36 INFO yarn.Client: Deleting staging directory .sparkStaging/application_1454466109748_0004

Exception in thread "main" org.apache.spark.SparkException: Application application_1454466109748_0004 finished with failed status

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

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

        at org.apache.spark.deploy.yarn.Client.main(Client.scala)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

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

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

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

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

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

        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

16/02/03 15:57:36 INFO util.ShutdownHookManager: Shutdown hook called

16/02/03 15:57:36 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-54531ae3-4d02-41be-8b9e-92f4b0f05807

7.2. SPARK_CLASSPATH was detected

SPARK_CLASSPATH was detected (set to '/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar:').

This is deprecated in Spark 1.0+.

Please instead use:

 - ./spark-submit with --driver-class-path to augment the driver classpath

 - spark.executor.extraClassPath to augment the executor classpath

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

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

8. 相关文档

HBase-0.98.0分布式安装指南》

Hive 0.12.0安装指南》

ZooKeeper-3.4.6分布式安装指南》

Hadoop 2.3.0源码反向工程》

《在Linux上编译Hadoop-2.4.0

Accumulo-1.5.1安装指南》

Drill 1.0.0安装指南》

Shark 0.9.1安装指南》

 

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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
分布式计算 监控 Spark
Spark 任务运行时日志分析
Spark 任务运行时日志分析
47 0
|
5月前
|
资源调度 JavaScript Windows
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
321 1
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
|
存储 缓存 资源调度
想了解流计算,你必须得看一眼,实现Flink on Yarn的三种部署方式,并运行wordcount
想了解流计算,你必须得看一眼,实现Flink on Yarn的三种部署方式,并运行wordcount
629 0
想了解流计算,你必须得看一眼,实现Flink on Yarn的三种部署方式,并运行wordcount
|
5月前
|
缓存 资源调度 JavaScript
从零到一nvm、npm、cnpm、yarn、vue全套安装和环境配置以及创建新项目和如何运行人家的项目大全,最详细,保姆级
从零到一nvm、npm、cnpm、yarn、vue全套安装和环境配置以及创建新项目和如何运行人家的项目大全,最详细,保姆级
212 0
|
4月前
|
存储 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
67 0
|
5月前
|
缓存 分布式计算 资源调度
Spark2:运行架构
Spark2:运行架构
181 0
|
8月前
|
资源调度
yarn 运行报错bug(后续更新)
yarn 运行报错bug(后续更新)
63 0
|
10月前
|
存储 分布式计算 Spark
SPARK中关于HighlyCompressedMapStatus的说明(会造成运行时的数据不精确)
SPARK中关于HighlyCompressedMapStatus的说明(会造成运行时的数据不精确)
63 0
|
资源调度 JavaScript
Vue npm yarn webpack 遇到无法加载文件禁止运行脚本解决方案
Vue npm yarn webpack 遇到无法加载文件禁止运行脚本解决方案
97 0
Vue npm yarn webpack 遇到无法加载文件禁止运行脚本解决方案
|
缓存 JSON 资源调度
Turbo:比 Yarn 和 NPM 快 5 倍,并且在浏览器中原生运行
本文适合觉得React难学,或者想重头系统化学习React的小伙伴。
Turbo:比 Yarn 和 NPM 快 5 倍,并且在浏览器中原生运行

相关实验场景

更多