Spark集群搭建以及使用

Spark集群的运行方式总得来说可以分为:

1、Local模式,或者叫本地模式。只有一台机器,一般用于学习或者测试。

2、Standalone模式。可以理解为全分布式模式,整个集群由多台服务器组成,但是它的资源调度是Spark自己完成的,不依赖于其它框架。Standalone字面意思就是“独立的”。

3、Yarn模式。同样也可以理解为是全分布式模式,只不过资源调度任务是交给Yarn来完成的。企业里面用的比较多。

4、以Mesos为代表的其它模式。和3类似,资源调度是交给其它框架完成。知道有这么回事儿就好,不用细究。

安装Spark的前提是已经安装了Java并配置了环境变量,如果要使用Scala API还需要下载安装Scala(注意Scala的安装路径中不要出现空格),不同的Spark版本对应的Scala版本也有差异,具体请在Spark官网查看。

一、Local模式

1、下载Spark安装包并解压到/opt/module目录下

$ tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz /opt/module/

2、将spark-2.1.1-bin-hadoop2.7名称改为spark

$ mv spark-2.1.1-bin-hadoop2.7 spark

以上两步,Local模式已经安装完成,非常简单。接下来可以启动spark-shell中,进行简单操作。

进入到/opt/module/spark/目录中,执行:

$ bin/spark-shell

顺利的话会看到类似以下输出:

这是一个Spark Shell,我们可以在里面进行一些交互式计算。此时在浏览器打开http://localhost:4040/就进入了Spark的Web监控页面。同时以上输出信息还告诉我们可以使用Spark Shell内置的两个变量 scspark 。按一下 Ctrl + C 可以退出Spark Shell。

除了Spark Shell之外也可以使用 spark-submit 命令提交任务,下面来使用官方提供的案例计算一下圆周率,在 /opt/module/spark 目录执行(下面出现的反斜杠是将一条命令写在多行的连接符):

$ bin/spark-submit \
> –class org.apache.spark.examples.SparkPi \
> –executor-memory 1G \
> –total-executor-cores 2 \
> ./examples/jars/spark-examples_2.11-2.1.1.jar \
> 100

使用spark-submit提交任务时候的常用参数如下:

    • –master:指定Master的地址,默认为local。本地模式还可以指定为local[k]、local[*]。local[K],其中K为正整数,例如local[2]就是在本地启动2个Worker线程,通常有几个CPU就指定K为几,可以最大话CPU的利用率。local[*]就是让Spark根据当前系统环境自己决定启动几个Worker线程。
    • –class:你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
    • –deploy-mode:是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
    • –conf:任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”
    • application-jar:打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
    • application-arguments:传给main()方法的参数
    • –executor-memory:指定每个executor可用内存
    • –total-executor-cores:指定每个executor使用的cup核数

二、Standalone模式

Standalone模式是在Local模式的基础上修改部分配置。

1、进入到/opt/module/spark/conf目录中,对相关配置文件进行重命名

$ mv slaves.template slaves

$ mv spark-env.sh.template spark-env.sh

$ mv spark-defaults.conf.template spark-defaults.conf

2、在 spark-env.sh 文件中做如下配置

SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
export SPARK_HISTORY_OPTS=”-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 –Dspark.history.fs.logDirectory=hdfs://master:9000/sparklogs”

其中 :

      • SPARK_MASTER_HOST 指定maser机器的IP或者主机名称
      • SPARK_MASTER_PORT 指定端口
      • spark.history.ui.port=18080  WEBUI访问的端口号为18080
      • spark.history.retainedApplications=30指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
      • spark.history.fs.logDirectory=hdfs://master:9000/directory  配置了该属性后,在start-history-server.sh时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息

3、在 slaves 文件中添加所有worder的主机名称或者IP,如:

slave1
slave2
slave3
slave4

注意不要出现多余的空行和空格。

4、在 spark-defaults.conf 中做如下配置:

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://master:9000/sparklogs

如果HDFS没有 /sparklogs 目录,就执行下面命令进行创建:

$ hadoop fs –mkdir /sparklogs

5、将 /opt/module/spark 拷贝到其它机器上,或者使用分发脚本分发到其它机器

6、启动

在/opt/module/spark目录下执行下面的命令启动整个Spark集群:

$ sbin/start-all.sh

在/opt/module/spark目录下执行下面的命令启动Spark历史服务:

$ sbin/start-history-server.sh

可以通过执行 jps 命令来查看启动的服务。

三、Yarn模式

在Standalone模式的基础上,进行如下配置:

1、在Hadoop的 yarn-site.xml 文件中添加如下内容

<!–是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true –>

        <property>

                <name>yarn.nodemanager.pmem-check-enabled</name>

                <value>false</value>

        </property>

        <!–是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true –>

        <property>

                <name>yarn.nodemanager.vmem-check-enabled</name>

                <value>false</value>

        </property>

2、在 spark-env.sh 中配置如下内容

YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop

3、在 spark-defaults.conf 文件中添加如下内容

spark.yarn.historyServer.address=master:18080

spark.history.ui.port=18080

将修改的相关文件复制到其它机器。

点个赞呗:程序员虾说 » Spark集群搭建以及使用

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

请作者喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏