hadoop是企业中是运行在yarn模式上的,他也有自己的本地运行模式,也就是只有一个JVM进程。除了yarn之外,还提供了Mesos 集群资源管理。但是spark还提供了standalone模式,可以手动的在该模式集群下启动master和work节点,还可以仅仅在单节点的环境下运行这些进程,该模式又分为两种方式,cluster模式和client模式。spark-shell是不支持cluster模式的。具体的我们分析了两种模式的不同之处出后再分析。
# - SPARK_MASTER_IP, 绑定spark运行是master的ip地址# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, master运行在该IP环境下的端口号已经在web上浏览时的端口号# - SPARK_MASTER_OPTS, t设置和master相关的属性配置# - SPARK_WORKER_CORES, 每一个节点上我们运行多少个spark进程# - SPARK_WORKER_MEMORY,每个节点上运行的内存大小# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, 每个work运行的端口和web上的端口# - SPARK_WORKER_INSTANCES, 通常我们设置为1其他的我们可以保存成为默认的配置。还需要在salves下配置为每个节点的hostname名称或者IP地址
手动的启动集群
首先在环境变量中配置spark的安装目录,然后进入安装目录下运行
./sbin/start-master.sh
当你一旦启动该命令,master就会打印出spark://HOST:PORT,对应的IP地址和对应的端口号,该信息可以用于启动work节点的命令,或者把当前的master传送给sparkContext的参数。当然,你也可以在spark运行的web界面上发现这些信息。
你可以在各个节点上运行命令连接这个master
一旦你启动了该命令,你可以从web界面上观看集群运行的信息,内存和节点个数等等。./sbin/start-slave.sh <master-spark-URL>
下面的一些启动命令可以帮助你配置启动集群的相关参数
Argument Meaning -h HOST
,--host HOST
主机的名称 -i HOST
,--ip HOST
同上。但是过时啦 -p PORT
,--port PORT
每个主机运行对应的端口号,master默认是7077,worker对应的是随机分配的 --webui-port PORT
web端口。master默认8080.worker默认对应8081 -c CORES
,--cores CORES
这个配置信息是仅仅针对worker节点的。每个work对应的核数 -m MEM
,--memory MEM
该配置信息也是仅仅针对于worker的,是配置运行时的内存大小 -d DIR
,--work-dir DIR
也是仅仅针对于worker的。就是说worker对应的工作目录咋哪里,默认是安装目录/worker --properties-file FILE
一些特定属性的配置。 standalone两种模式的说明
我们会发现图1的客户端模式是有一个单独的节点抽出来来向master启动命令,进而才会启动两个worker上的executor进程,也就是说当集群启动之后,如果客户端进程崩溃是不会影响各个exexutor进程的。然而在图2.我们会发现,刚开始的时候先从属节点上随机的找一个节点充当driver来启动整个集群,这点和客户端模式是不同的。这就解释了为什么spark—shell没有集群模式,因为他是一个仅仅会在一个节点上运行的进程,根本没有那些所谓的从属节点。