大数据生态系统基础:Apache Spark(二):运行环境和实例演示

    一、环境

          Hadoop 2.6.4,启动主从服务器。

          Spark 2.2 , 启动主从服务器

        Spark 可以运行 Scala、Python、R、Java 语言写的脚本,所以需要安装上各自的开发语言和库文件。注意需要有 Zlib,可以使用 yum和 brew 安装

       本人的主服务器是 Mac OS, 从服务器是 Cent OS 6.x

二、配置

      对于运行的环境,在启动的时候,worker 需要向 master 进行注册,注册的时候会显示使用的 CPU 核数和内存数量。

   39 17/08/09 10:10:26 INFO master.Master: Registering worker 192.168.10.1:59217 with 1 cores, 512.0 MB RAM
 40 17/08/09 10:10:26 INFO master.Master: Registering worker 192.168.10.10:51230 with 1 cores, 512.0 MB RAM
 41 17/08/09 10:10:26 INFO master.Master: Registering worker 192.168.10.11:47168 with 1 cores, 512.0 MB RAM
 42 17/08/09 10:10:26 INFO master.Master: Registering worker 192.168.10.12:41451 with 1 cores, 512.0 MB RAM

     所以,从上面可以看出来,注册使用的内存是512M,这个很重要,对于运行环境很重要,否则配置不当,会频频出错,特别是会提示资源不足的问题。

       17/08/09 09:36:34 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

      资源配置内容,在 conf/spark-env.sh 和 conf/spark-default.sh 这两个文件中。

     在这里需要给出大家的内存配置问题:

   9 export SPARK_WORKER_MEMORY=512M
 10 export SPARK_EXECUTOR_INSTANCES=4
 13 export MASTER=spark://mymac:7077
 14 export SPARK_EXECUTOR_MEMORY=512M
 15 export SPARK_DRIVER_MEMORY=512M

    可以看到,我们把内存限制在512M,因为缺省的内存是1g,如果使用1g 内存运行肯定是不够的,worker 的资源会不够。

    在 spark-default.sh 中可以定义一些缺省值,这样在使用命令行的时候,很多参数都没必要列出来。

   比如:

 spark.master                     spark://mymac:7077

 spark.driver.memory              512m


    三、运行实例

      Spark附带了几个示例程序。Scala、Java、Python和R示例都在exampl/src/main目录中。

     运行一个Java或Scala示例程序,目录在Spark的 HOME目录中。使用模式就是bin/run-params。(这将方便调用用于启动应用程序的更一般的spark-submit脚本)。例如:

./bin/run-example SparkPi 10
您还可以通过修改后的Scala shell来运行Spark。这是学习框架的一种很好的方式。

./bin/spark-shell --master local[2]
--master选项指定一个分布式集群的主URL,或者local 表示用一个线程本地运行,或者local[N]在本地运行N个线程。您应该从使用loca]测试开始。对于一个完整的选项列表,可以使用--help选项来运行Spark shell。


Spark还提供了一个Python API。要在Python解释器中交互式地运行Spark,请使用bin/pyspark:

./bin/pyspark --master local[2]
示例应用程序也提供了 python的。例如,

./bin/spark-submit examples/src/main/python/pi.py 10
也有 R 语言的哦

./bin/sparkR --master local[2]
R 语言的例子有:

./bin/spark-submit examples/src/main/r/dataframe.R


对于普通的 scala 的 shell,我们直接运行:

bin\spark-shell 即可,不用使用复杂的参数,比如:

    spark-shell --master spark://mymac:7077 --executor-memory 512M --driver-memory 512M

    这是太麻烦,直接 spark-shell 即可。

 

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.2.0
      /_/


Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_77)
Type in expressions to have them evaluated.
Type :help for more information.


scala>


四、运行原理

      事实,整个 Spark 的运行是由应用程序、job、stage、taskset 和 task 组成。应用程序是由一个 driver program 和多个 job 构成。job 由多个 stage 组成。stage 对应一个 task set。taskset对应一组关联的相互之间没有 shuffle依赖关系的 task 组成。task 就是最小单位。

     下图是运行的原理图


     集群管理器 Cluster Manager 进行全局管理。

    Driver Program驱动程序,是 spark 的核心组件。构建 SparkContext(Spark 应用的入口,它负责和整个集群的交互,它负责和整个集群的交互,创建需要的变量,还包含集群的配置信息等)。将用户提交的 job 转换为 DAG图。根据策略将 DAG图划分为多个 stage,根据区分从而生成一系列 tasks。根据 tasks 要求向资源管理器申请资源。提交任务并检测任务的状态。

   Executor,是执行 task 的单元,一个 worker Node 可以有多个 Executor。

 





发布了52 篇原创文章 · 获赞 4 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/caridle/article/details/76984349