注意如果master挂了,用 ps aux | grep spark 查pid,然后 用kill -9 “pid” 强行关掉
想知道为什么挂了可以看log,在spark文件夹下logs。如果想看你的job的log在work下
[子嗣指的是Worker]
1. 安装 Installing Spark Standalone to a Cluster
可以直接下载或者建立自己的版本。
2. 手动开始 Starting a Cluster Manually
(在spark路径下)执行命令
./sbin/start-master.sh
一旦启动,你可以从(默认主机界面)http://localhost:8080/ 中得到主机URL。
同理,你可以通过下面命令(记得把IP:PORT换成主机URL)启动一个或多个子嗣,并将他们连上主机。
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT
子嗣启动后,主机网页界面中就可以显示新Node。同时会显示其CPU数量和内存数量(总内存数量-1GB,留给操作系统运行。)
比如,我现在一台8核16G内存的电脑启动Spark子嗣。那么它会自动以8CPU,15GB的状态出现在主机的网页界面中。如果你不希望这个子嗣用尽资源怎么办呢?
下列启动参数就来帮助你管理主机和子嗣配置。请按需在主机或子嗣的启动命令(上面两条引用)后面加上他们。参考资料
-h HOST,--host HOST
??? Hostname to listen on
然而没有用, 有兴趣的看源码。
-i HOST,--ip HOST
??? Hostname to listen on (deprecated, use -h or --host)
然而没有用
-p PORT,--port PORT
设置监听端口,如果不设置,主机默认: 7077, 子嗣默认:随机
然而没有用
--webui-port PORT
设置主机网页界面的端口,如果不设置,主机默认: 8080, 子嗣默认:8082 ++ (从8082起,每增加一个worker,port+1)
然而Host没有用, 但是对Worker有用。
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://YANQZHOU-M-D0KC:7077 --webui-port 8088
-c CORES,--cores CORES
子嗣专用。跟在子嗣创建命令后面,设置用多少个核。
比如 “./bin/spark-class org.apache.spark.deploy.worker.Worker spark://(换成主机URL) -c 2”
这个可以用。 默认值就是当前电脑最大CPU数。但是如果你输入了一个大于实际的数目,系统也会接受并显示在UI上,不过现在还不知道运行时的问题。
-m MEM,--memory MEM
和上面的内核设置类似,用来设置内存使用,也是子嗣专用。但是在数字后面要加上单位 M 或者 G(1024M)。比如 “./bin/spark-class org.apache.spark.deploy.worker.Worker spark://(换成主机URL) -m 5G”。 默认值为当前电脑最大内存减去一个G(留给操作系统)。
-d DIR,--work-dir DIR
子嗣专用。设置Worker的工作空间和log输出的目录路径(默认SPARK_HOME/work)
哎以后还是统一用Worker来代替子嗣了。
--properties-file FILE
修改客户Spark属性文件读取的路径。(默认: conf/spark-defaults.conf)
3. 集群脚本 Cluster Launch Scripts
假设你的spark将军要招一排小弟。不想一个个去发号施令。为此,你需要在Spark路径下创建一个叫做"conf/slaves"的文件(其实是conf文件夹下的slaves文件,当前版本你可以看到一个slaves.template,用写字板打开这个模板可以参考)。其中必须包含所有worker机器的hostname。格式为一行一个。如果"conf/slaves"不存在的话。发布的脚本默认一个机器(本地主机localhost)来执行测试。注意哦,主机是通过ssh来跟每个机器联系的。默认情况下,ssh并行运作,并且不能有密码(通过使用private key)。如果你没取消密码,你可以设置环境变量SPARK_SSH_FOREGROUND在其中为每个worker提供密码。
一旦该文件完成设置,你可以通过下列脚本配置或停止你的整个集群。还是在SPARK主路径下执行。
sbin/start-master.sh
启动主机,跟之前一样。“./sbin/start-master.sh”
sbin/start-slaves.sh
如果有"conf/slaves"文件,则启动其中列出的每台机器,并将之作为worker联入主机。
如果没有那个文件,系统将以本机最强形态(所有CPU和内存总数-1G)作为worker当作自己的worker。
sbin/start-all.sh
上面两个命令合在一起了。真是懒。 许多相关文章提供的事bin下面的命令。为此查了下/sbin和/bin的区别。
顺带读了到一个写得很好的Spark源码走读的博客。强烈推荐。
sbin/stop-master.sh 停止主机
sbin/stop-slaves.sh 停止worker
sbin/stop-all.sh 懒
以上脚本命令只能在spark主机上运行。
通过在conf/spark-env.sh文件中设置环境变量来配置集群(没有的话参考模板创建). conf/spark-env.sh.template模版,
注意!必须复制到你所有的worker机器上才起作用.
属性就不一一举了。部分参考
注意2!当前的启动脚本不支持Windows! Windows需要手工启动master 和 worker.
SPARK_MASTER_OPTS ???
4. 将应用链接到集群 Connecting an Application to the Cluster
只需把主机的spark://IP:PORT URL传到SparkContext constructor构造器
./bin/spark-shell --master spark://IP:PORT
在集群上运行交互式的Spark 命令
--total-executor-cores 用来控制 spark-shell 在集群上使用的核心数量
我输入"./bin/spark-shell --total-executor-cores 2"后打开了一个scala的命令行。 信息显示Created spark context.. Created sql context (with Hive support).. 用exit退出。