local模式,其实仅仅用于ide的测试
standalone模式
client模式
spark-submit: --master spark://IP:Port
--deploy-mode client
cluster模式
spark-submit: --master spark://IP:port
--deploy-mode cluster
在cluster模式下,我们的worker如果只有一个cpu core的时候,那么可能出现spark作业不执行,这时是由于
cluster模式下,driver也是要通过worker来启动的,executor也是要通过worker来启动的,首先,我们可以看到,此时driver已经启动起来了,在web ui上是可以看到的,包括driver ID,然后呢,通过web ui就可以看到,driver在唯一worker上启动了,已经获得了一个cpu core了,此时,driver去跟master申请资源,启动一个executor进程,但是问题来了,此时我们的worker进程,就只有一个,而且只有一个cpu core,那么,mater的资源调度算法中,始终无法找到还有空闲cpu资源的worker,所以作业一直处于等待,waiting的一个状态,所以,我们的作业在当前一个cpu core下,是无法通过cluster模式来启动运行的。
yarn模式
client模式
--master yarn-client
--queue YARN
cluster模式
--master yarn-cluster
--queue YARN
--queue这个队列很重要
不同的大数据部门,或者是不同的大数据项目,公用一个yarn集群,运行spark作业,一定要用--queue
指定不同的hadoop队列,做项目或部门的队列隔离
yarn模式下
我们的工程jar,是要拷贝到hdfs上面去的
而且它的replication,副本数量,默认是跟hadoop中的副本数量一样的,这里最少得有一个副本,所以在伪分布式是不可以用的
hdfs,只有一个datanode,没有办法做replication,所以也没有退出safemode