Scala & Spark2.0.2集群安装

前言

Scala函数式变成语言,Spark的开发语言。下面将记录Scala安装与Spark的集群安装。

准备安装文件

以下为大家准备了安装文件,也可以自己到网上下载

说明:spark的安装是有对应的hadoop版本的,所以如果安装的是2.6版本的hadoop,那么请去下载对应2.6版本的spark

下载地址:https://archive.apache.org/dist/spark/spark-2.0.2/

准备文件 下载地址
spark-2.0.2-bin-hadoop2.7 链接: https://pan.baidu.com/s/1dlUjcLjemTcm7jnc0HDiwQ 提取码: typ4
scala-2.11.8 链接: https://pan.baidu.com/s/1dlUjcLjemTcm7jnc0HDiwQ 提取码: typ4
Hadoop 必须提前安装好 咱们安装的Spark依赖Yarn资源管理协调系统

Scala安装

上传Scala安装包至服务器master201

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@master201 Soft]# tar -xvf scala-2.11.8.tgz
[root@master201 Soft]# mv scala-2.11.8 scala
[root@master201 Soft]# mv scala /usr/local/share/

然后配置环境变量:
[root@master201 Soft]# vim /etc/profile
增加以下配置:
export PATH=$PATH:/usr/local/share/scala/bin
然后source生效环境变量:
[root@master201 Soft]# source /etc/profile
验证测试:
[root@master201 Soft]# scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144).
Type in expressions for evaluation. Or try :help.

scala> print 12
scala> print(12)
12
scala>

Spark安装

  • 上传文件至服务器master201然后解压配置环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    [root@master201 Soft]# tar -xvf spark-2.0.2-bin-hadoop2.7.tgz
    然后配置环境变量:
    [root@master201 Soft]# vim /etc/profile
    增加以下配置:
    export SPARK_HOME=/home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7
    export PATH=$PATH:$SPARK_HOME/bin
    然后source生效环境变量:
    [root@master201 Soft]# source /etc/profile
  • 修改spark-env配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@master201 conf]# cd /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/conf
    [root@master201 conf]# cp spark-env.sh.template spark-env.sh

    编辑spark环境变量:
    [root@master201 conf]# vi spark-evn.sh
    增加以下配置:
    export JAVA_HOME=/home/lishijia/Soft/jdk1.8.0_144
    export SPARK_MASTER_HOST=master201
    export SPARK_MASTER_PORT=7077
  • 配置slave从节点

    1
    2
    3
    4
    5
    6
    [root@master201 conf]# cd /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/conf
    [root@master201 conf]# cp slaves.template slaves
    [root@master201 conf]# vi slaves
    增加以下slave节点
    slave202
    slave203
  • scp分发包到从节点

    1
    2
    3
    4
    5
    6
    同步spark安装包
    [root@master201 Soft]# scp -r spark-2.0.2-bin-hadoop2.7 slave202:/home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7
    [root@master201 Soft]# scp -r spark-2.0.2-bin-hadoop2.7 slave203:/home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7
    同步环境变量
    [root@master201 Soft]# scp -r /etc/profile slave202:/etc/
    [root@master201 Soft]# scp -r /etc/profile slave203:/etc/
  • master201启动spark,验证

    此处的启动时spark自身的一个集群

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@master201 sbin]# pwd
    /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/sbin
    [root@master201 sbin]# ./start-all.sh
    starting org.apache.spark.deploy.master.Master, logging to /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-master201.out
    slave203: starting org.apache.spark.deploy.worker.Worker, logging to /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave203.out
    slave202: starting org.apache.spark.deploy.worker.Worker, logging to /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave202.out
    [root@master201 sbin]# jps
    5027 Master
    2710 ResourceManager
    5112 Jps
    2297 NameNode
    2510 SecondaryNameNode

    访问spark管理控制台http://master201:8080/

    两台slave会有这么一个Work进程

    mark

Spark本地模式与集群模式验证

依赖spark自带的example来验证以下方式

  • Spark本地模式

    1
    2
    3
    4
    5
    [root@master201 bin]# cd /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/bin
    [root@master201 bin]# ./run-example SparkPi 10 --master local[2]

    验证结果如下,本次的任务执行在spark管理控制台是查看不到历史记录的
    即:http://master201:8080/查看不到

  • 集群模式Spark Standalone

    1
    2
    3
    4
    5
    [root@master201 bin]# cd /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/bin
    [root@master201 bin]# ./spark-submit --class org.apache.spark.examples.SparkPi --master spark://master201:7077 ../examples/jars/spark-examples_2.11-2.0.2.jar 100

    本次执行任务是在spark自带的集群当中运行即可通过spark的管理控制台查看job执行情况进度
    即:http://master201:8080/ 如下

  • 集群模式Spark on yarn运行yarn之上的yarn-cluster模式

    1
    2
    3
    4
    5
    6
    7
    8
    [root@master201 bin]# cd /home/lishijia/Soft/spark-2.0.2-bin-hadoop2.7/bin
    [root@master201 bin]# ./spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster ../examples/jars/spark-examples_2.11-2.0.2.jar 10

    本次执行任务是在hadoop yarn当中
    即通过http://master201:8080/查看任务执行情况是查询不到的,是通过yarn的 AM来执行调度申请资源
    可以通过hadoop集群组件yarn的管理控制台查看:http://master201:8088/cluster/apps

    通过Yarn管理控制台找到对应的Application id,然后进入点击日志,查看标准输出日志即可,这个demo的日志是通过标准输出方式输出的,在服务器执行控制台查看不到。

问题记录

刚刚通过yarn运行spark的任务的时候,失败了两次,一直在找原因(一直没注意看到错误信息在哪里)。大家可以看到对应的失败Application id 记录,然后进入日志查看(仔细看),最终发现还是自己输入命令的时候多了一个k导致数字转换失败了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
控制台的日志
18/10/21 12:19:08 INFO yarn.Client: Deleting staging directory hdfs://master201:9000/user/root/.sparkStaging/application_1540120893010_0002
Exception in thread "main" org.apache.spark.SparkException: Application application_1540120893010_0002 finished with failed status
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1132)
at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1178)
at org.apache.spark.deploy.yarn.Client.main(Client.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
18/10/21 12:19:09 INFO util.ShutdownHookManager: Shutdown hook called
18/10/21 12:19:09 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-13cc7b77-4e91-47b4-a83a-fa4cbb77bfb4

总结

通过以上步骤基本完成了scala与spark集群的安装,下一步就可以开发spark应用程序了。

Centos虚拟机安装&NAT网络配置

Hadoop2.7.2集群安装

参考文献

http://spark.apache.org/docs/2.0.2/

分享到 评论