spark之Standalone模式部署配置详解
spark运行模式
spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 yarn和 mesos 中,当然 spark 还有自带的 standalone 模式,对于大多数情况 standalone 模式就足够了,如果企业已经有 yarn 或者 mesos 环境,也是很方便部署的。
1.local(本地模式):常用于本地开发测试,本地还分为local单线程和local-cluster多线程;
2.standalone(集群模式):典型的mater/slave模式,不过也能看出master是有单点故障的;spark支持zookeeper来实现 ha
3.on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,spark 负责任务调度和计算
4.on mesos(集群模式): 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,spark 负责任务调度和计算
5.on cloud(集群模式):比如 aws 的 ec2,使用这个模式能很方便的访问 amazon的 s3;spark 支持多种分布式存储系统:hdfs 和 s3
spark standalone集群部署
准备工作
1.这里我下载的是spark的编译版本,否则需要事先自行编译
2.spark需要hadoop的hdfs作为持久化层,所以在安装spark之前需要安装hadoop,这里hadoop的安装就不介绍了,给出一个教程
3.实现创建hadoop用户,hadoop、spark等程序都在该用户下进行安装
4.ssh无密码登录,spark集群中各节点的通信需要通过ssh协议进行,这需要事先进行配置。通过在hadoop用户的.ssh目录下将其他用户的id_rsa.pub公钥文件内容拷贝的本机的authorized_keys文件中,即可事先无登录通信的功能
5.java环境的安装,同时将java_home、classpath等环境变量放到主目录的.bashrc,执行source .bashrc使之生效
部署配置
这里配置工作需要以下几个步骤:
1.解压spark二进制压缩包
2.配置conf/spark-env.sh文件
3.配置conf/slave文件
下面具体说明一下:
配置spark的运行环境,将spark-env.sh.template模板文件复制成spark-env.sh,然后填写相应需要的配置内容:
export spark_master_ip=hadoop1 export spark_master_port=7077 export spark_worker_cores=1 export spark_worder_instances=1 export spark_worker_memory=3g
其他选项内容请参照下面的选项说明:
# options for the daemons used in the standalone deploy mode: # - spark_master_ip, to bind the master to a different ip address or hostname # - spark_master_port / spark_master_webui_port, to use non-default ports for the master # - spark_master_opts, to set config properties only for the master (e.g. "-dx=y") # - spark_worker_cores, to set the number of cores to use on this machine # - spark_worker_memory, to set how much total memory workers have to give executors (e.g. 1000m, 2g) # - spark_worker_port / spark_worker_webui_port, to use non-default ports for the worker # - spark_worker_instances, to set the number of worker processes per node # - spark_worker_dir, to set the working directory of worker processes # - spark_worker_opts, to set config properties only for the worker (e.g. "-dx=y") # - spark_history_opts, to set config properties only for the history server (e.g. "-dx=y")
conf/slave文件用户分布式节点的配置,这里只需要在slave文件中写入该节点的主机名即可
将以上内容都配置好了,将这个spark目录拷贝到各个节点scp -r spark hadoop@hadoop2:~
接下来就可以启动集群了,在spark目录中执行sbin/start-all.sh,然后可以通过netstat -nat命令查看端口7077的进程,还可以通过浏览器访问hadoop1:8080了解集群的概况
spark client部署
spark client的作用是,事先搭建起spark集群,然后再物理机上部署客户端,然后通过该客户端提交任务给spark集群。
由于上面介绍了standalone分布式集群是如何搭建的,这里只需将集群上的spark文件夹拷贝过来。
最简单的spark客户端访问集群的方式就是通过spark shell的方式:bin/spark-shell --master spark://hadoop1:7077这样就可以访问集群了。
这样在浏览器的spark集群界面上就可以看到running applications一栏中有spark shell的应用在执行。
spark standalone伪分布式部署
伪分布式是在一台机器上进行部署来模拟分布式的集群,这里部署的过程和standalone集群的部署是类似的,事前的工作都是一样的,这里只是在配置文件中做相应的修改就可以了。
这里还是配置这两个文件:
配置conf/spark-env.sh文件
配置conf/slave文件
修改spark-env.sh文件,修改master的ip,这里主机名和用户ip分别在/etc/hostname和/etc/hosts文件中进行配置
export spark_master_ip=jason export spark_master_port=7077 export spark_worker_cores=1 export spark_worder_instances=1 export spark_worker_memory=3g
slave文件中,填写自己的主机名,比如我的主机名jason
总结
以上就是本文关于spark之standalone模式部署配置详解的全部内容,感兴趣的朋友可以继续参阅:浅谈七种常见的hadoop和spark项目案例、详解java编写并运行spark应用程序的方法、spark的广播变量和累加器使用方法代码示例等,希望对大家有所帮助。感谢各位对网站的支持!
下一篇: Java 反射机制的实例详解