一、在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