spark环境搭建(widows+linux)

一、在idea中调试spark程序-配置windows上的 spark local模式

spark程序大致有如下运行模式:

  standalone模式:spark自带的模式

  spark on yarn:利用hadoop yarn来做集群的资源管理

  local模式:主要在测试的时候使用,       

  这三个模式先大致了解,目前我用到的就是local和yarn。其中,我们写spark程序,一般在idea上写,若每次都要将程序打包,再上传到集群,再运行,将严重影响我们效率,所以在调试代码的时候,一般用local模式,在windows的idea上直接操作。

  环境配置步骤如下:只做简要说明,各个步骤的具体安装可自行百度

1、jdk安装,基础环境

2、hadoop安装,spark要用到hadoop的windows的本地hdfs库,若不安装报如下错误:

  Failed to locate the winutils binary in the hadoop binary path

 hadoop具体安装步骤:(1)先拷贝hadoop的tar.gz安装包,也就是安装到linux上的那个安装包,解压即可.

                                        (2)去github下载https://github.com/srccodes/hadoop-common-2.2.0-bin,这个里面就是winutils,编译包

                                      (3)将common包解压,将bin下的所有文件拷贝到hadoop安装目录下的bin里,重复的文件覆盖。

                                        (4)配置HADOOP_HOME和CLASSPATH,其中classpath指定winutils的具体位置。

3、idea安装scala插件

 

二、spark集群搭建linux

前置准备:

(1)需要配置/etc/hosts,即使启动了worker,worker也找不到master进行心跳报活,worker列表中也找不到该worker;

(2)配置master到worker的免密登陆;

(3)安装好了jdk,不一定需要hadoop,不需要装scala。

一、前提安装好了hadoop、jdk

yarn 的resourcemanager是通过slaves文件,找到nodemanager所在的节点进行启动,因此通过./sbin/start-yarn.sh 必须要配置slaves文件,否则就要单独启动。

yarn 的nodemanager是通过yarn-site.xml里的resourcemanager来找到其所在的节点,并主动报活的,因此yarn集群中的所有yarn-site.xml文件都要一样,使用scp拷贝即可。

yarn 集群的资源的配置也是写在yarn-site.xml里面的。

二、安装scala

  scala正常不需要安装,因为spark安装目录中已经有了scala的jar包,为了日后使用的方便,还是进行安装吧。

(1)scala去官网下载,版本要参照spark官网,依据spark版本下载对应的版本。

(2)解压文件

(3)然后在/etc/profile里配置scala的环境变量:

export SCALA_HOME=/data/wanglei/soft/scala-2.11.8
export PATH=$SCALA_HOME/bin:$PATH

修改保存后执行:source /etc/profile

(4)保存退出,source一下配置文件让其立刻生效。然后再运行scala:

[root@datanodetest02 soft]# scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51).
Type in expressions for evaluation. Or try :help.

scala>

说明安装成功了,对集群的所有机器执行这个命令,验证其是否安装成功。

三、安装spark,修改配置文件,这里主要是配置了standalone模式

spark中重要的就是spark-env文件,里面可以配置spark集群的相关设置信息,java-home,和master所在的IP和端口信息。当我们配置了master高可用的时候,master信息不是一个了,就要将其注释掉,同时要保证所有节点的这个文件一模一样,不然会启动不起来集群。导致报错。

spark高可用引入的配置信息:

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark"

(1)解压完之后,要先配置环境变量,在/etc/profile 中,要配置bin和sbin,因为spark相应的命令在其中。不然会报错:spark-shell命令不存在。

(2)spark安装步骤参照博客:主要就是修改几个配置文件,修改完成后,直接发送整个spark安装包到

https://blog.csdn.net/bitcarmanlee/article/details/51967323

spark中配置文件各个参数的作用

https://blog.csdn.net/kwu_ganymede/article/details/50930633

 

三、单spark集群搭建linux

前置准备:

(1)需要配置/etc/hosts,即使启动了worker,worker也找不到master进行心跳报活,worker列表中也找不到该worker;

(2)配置master到worker的免密登陆;

(3)安装好了jdk,不一定需要hadoop,不需要装scala。

 

进入到Spark安装目录

cd /usr/local/spark-2.1.0-bin-hadoop2.6

进入conf目录并重命名并修改spark-env.sh.template文件

cd conf/

mv spark-env.sh.template spark-env.sh

vi spark-env.sh

在该配置文件中添加如下配置

export JAVA_HOME=/usr/java/jdk1.8.0_111

 

#export SPARK_MASTER_IP=node1.edu360.cn

#export SPARK_MASTER_PORT=7077

保存退出

重命名并修改slaves.template文件

mv slaves.template slaves

vi slaves

在该文件中添加子节点所在的位置(Worker节点)

node2.edu360.cn

node3.edu360.cn

node4.edu360.cn

保存退出

将配置好的Spark拷贝到其他节点上

scp -r spark-2.1.0-bin-hadoop2.6/ node2.edu360.cn:/usr/local/

scp -r spark-2.1.0-bin-hadoop2.6/ node3.edu360.cn:/usr/local/

scp -r spark-2.1.0-bin-hadoop2.6/ node4.edu360.cn:/usr/local/

 

Spark集群配置完毕,目前是1个Master,3个Work,在node1.edu360.cn上启动Spark集群

/usr/local/spark-2.1.0-bin-hadoop2.6/sbin/start-all.sh

 

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://node1.edu360.cn:8080/

 

到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:

Spark集群规划:node1,node2是Master;node3,node4,node5是Worker

安装配置zk集群,并启动zk集群

停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"

1.在node1节点上修改slaves配置文件内容指定worker节点

2.在node1上执行sbin/start-all.sh脚本,然后在node2上执行sbin/start-master.sh启动第二个Master

 

posted @ 2019-10-13 23:22  guoyu1  阅读(1234)  评论(0编辑  收藏  举报