Standalone是 spark自带的资源管理框架,类似 yarn。
yarn中有resourcemanager 和 nodemanager 两个进程,resourcemanager负责管理整个集群的资源,nodemanager负责管理自己所在节点的资源以及启动container。
在Standalone中也有相类似的两个进程,master 和 worker。master 就相当于 yarn 的resourcemanager , worker 相当于 nodemanager。
Standalone的配置:
在locally的基础上再配置几个参数
需要给出master在哪个节点,以及master服务的端口号。
在搭建HDFS的时候,有一个配置文件叫做 slaves ,配置的是HDFS的 datanode,一般情况下会把 datanode和 nodemanager放在一起,即每个节点上会同时启动datanode 和 nodemanager。slaves 配置的是HDFS的从节点,也是 yarn的从节点。
在Standalone 同样也有一个 slaves 文件,用来配置 worker 节点。这里需要配置两个重要的参数,一个是worker最多可以使用的cpu核数,一个是worker最多可以使用的内存。还要给出worker的服务端口号。
启用Standalone,必须启动master 和 worker 进程。启动脚本在 sbin 目录下。
进入 web UI 页面 。 默认的 web UI 端口号是 8080 ,会跟 tomcat 默认的端口号冲突。 二选一 ,改掉一个端口号。
启动 spark-shell 应用。后面需要给出参数,如果不给,默认在本地运行。参数的值就是在8080页面上 URL 后面那一串东西。
再开一个窗口,不加参数,也完全Ok。这个应用不是跑在Standalone上的 ,是跑在本地的。
现在在本地和Standalone上各运行着一个spark-shell应用,本地应用的 web UI 端口号依次递推为 4041。
Standalone是主从架构,也会存在单点故障的问题。有两个解决方案,一个是类似HDFS的 secondaryNamenode,基于本地文件系统存储master节点服务的信息。
第二种是类似Hbase的热备机制,依赖Zookeeper协调管理。