Spark集群安装和使用(2)

# 在 cdh1 节点上运行 $ sudo service spark-master start # 在 cdh1 节点上运行,如果 hadoop 集群配置了 kerberos,则运行之前需要先获取 spark 用户的凭证 # kinit -k -t /etc/spark/conf/spark.keytab spark/cdh1@JavaCHEN.COM $ sudo service spark-history-server start # 在cdh2、cdh3 节点上运行 $ sudo service spark-worker start

停止脚本:

$ sudo service spark-master stop $ sudo service spark-worker stop $ sudo service spark-history-server stop

当然,你还可以设置开机启动:

$ sudo chkconfig spark-master on $ sudo chkconfig spark-worker on $ sudo chkconfig spark-history-server on

3.2 使用 Spark 自带脚本管理集群

另外,你也可以使用 Spark 自带的脚本来启动和停止,这些脚本在 /usr/lib/spark/sbin 目录下:

$ ls /usr/lib/spark/sbin slaves.sh spark-daemons.sh start-master.sh stop-all.sh spark-config.sh spark-executor start-slave.sh stop-master.sh spark-daemon.sh start-all.sh start-slaves.sh stop-slaves.sh

在master节点修改 /etc/spark/conf/slaves 文件添加worker节点的主机名称,并且还需要在master和worker节点之间配置无密码登陆。

# A Spark Worker will be started on each of the machines listed below. cdh2 cdh3

然后,你也可以通过下面脚本启动 master 和 worker:

$ cd /usr/lib/spark/sbin $ ./start-master.sh $ ./start-slaves.sh

当���,你也可以通过spark-class脚本来启动,例如,下面脚本以standalone模式启动worker:

$ ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://cdh1:18080

3.3 访问web界面

你可以通过 :18080/ 访问 spark master 的 web 界面。

spark-master-web-ui

访问Spark History Server页面::18082/。

spark-hs-web-ui

注意:我这里使用的是CDH版本的 Spark,Spark master UI的端口为18080,不是 Apache Spark 的 8080 端口。CDH发行版中Spark使用的端口列表如下:

7077 – Default Master RPC port

7078 – Default Worker RPC port

18080 – Default Master web UI port

18081 – Default Worker web UI port

18080 – Default HistoryServer web UI port

4. 测试

Spark可以以本地模式运行,也支持三种集群管理模式:

另外 Spark 的 EC2 launch scripts 可以帮助你容易地在Amazon EC2上启动standalone cluster.

在集群不是特别大,并且没有 mapReduce 和 Spark 同时运行的需求的情况下,用 Standalone 模式效率最高。

Spark可以在应用间(通过集群管理器)和应用中(如果一个 SparkContext 中有多项计算任务)进行资源调度。

4.1 Standalone 模式

该模式中,资源调度是Spark框架自己实现的,其节点类型分为Master和Worker节点,其中Driver节点运行在Master节点中,并且有常驻内存的Master进程守护,Worker节点上常驻Worker守护进程,负责与Master通信。

Standalone 模式是Master-Slaves架构的集群模式,Master存在着单点故障问题,目前,Spark提供了两种解决办法:基于文件系统的故障恢复模式,基于Zookeeper的HA方式。

Standalone 模式需要在每一个节点部署Spark应用,并按照实际情况配置故障恢复模式。

你可以使用交互式命令spark-shell、pyspark或者spark-submit script连接到集群,下面以wordcount程序为例:

$ spark-shell --master spark://cdh1:7077 scala> val file = sc.textFile("hdfs://cdh1:8020/tmp/test.txt") scala> val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) scala> counts.count() scala> counts.saveAsTextFile("hdfs://cdh1:8020/tmp/output")

如果运行成功,可以打开浏览器访问 :4040 查看应用运行情况。

运行过程中,可能会出现下面的异常:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/98270a8168cf498cb1abd248c137d25e.html