spark学习笔记二

spark官方中文文档(spark亚太研究院联合出品)读书笔记
1、RDD操作
http://www.tuicool.com/articles/ZfeQrq7

RDD支持两种操作:
转换(transformations),可以从已有的数据集创建一个新的数据集;
动作(actions),在数据集上运行计算后,会向驱动程序返回一个值。
map 就是一个转换,它讲数据集每一个元素都传递给函数,并返回一个新的分布数据集来表示结果。
reduce是一种动作,通过一些函数将所有的元素聚合起来,并将最终结果返回给驱动程序。
你可以使用持久化或缓存的方法,把一个RDD持久化到内存中。

2、把函数传递给Spark
Spark的API,在很大程度上依赖于吧驱动程序中的函数传递到集群上运行。
在Java中,函数由那些实现了org.apache.spark.api.java.function包中的接口的类表示。
1、在自己的类中实现Function接口,并且传递类的一个实例到spark
2、在Java 8 中,使用lambda表达式来简明的定义函数的实现。

4.3.3 键值对(Key-Value Pairs)的使用




spark on yarn 的支持两种模式
1)yarn-cluster:适用于生产环境;
2)yarn-client:适用于交互、调试,希望立即看到app的输出
Yarn-cluster和yarn-client的区别在于appMaster:yarn appMaster,每个yarn app实例有一个appMaster进程,是为app启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动container;appMaster消除了active client的需要,app client启动app后可以结束,协调由运行在cluster上被yarn管理的进程继续

Yarn-cluster mode
Spark的dirver 运行在 appMaster中,appMaster进程同时负责driving app,请求资源;
启动spark app的client不需要一直存在于整个spark app运行生命周期

yarn-client mode
某些情况需要与spark交互,要求user input,如spark-shell和pyspark,这样的spark app需要spark-driver运行在初始化spark app的client端进程中
这种情况,appMaster仅仅用于从yarn集群请求executor,app client会和请求的container通信来调度他们工作


---------------------------------------------

Spark

的部署方式其实比官方文档中介绍的还要多,这里我来列举一下:

1、local:这种方式是在本地启动一个线程来运行作业;

2、local[N]:也是本地模式,但是启动了N个线程;

3、local
  • :还是本地模式,但是用了系统中所有的核;

  • 4、local[N,M]:这里有两个参数,第一个代表的是用到的核个数;第二个参数代表的是容许该作业失败M次。上面的几种模式没有指定M参数,其默认值都是1;

    5、local-cluster[N, cores, memory]:本地伪集群模式,参数的含义我就不说了,看名字就知道;式;

    6、spark:// :这是用到了 Spark 的Standalone模

    7、(mesos|zk)://:这是Mesos模式;

    8、yarn-standalone\yarn-cluster\yarn-client:这是YARN模式。前面两种代表的是集群模式;后面代表的是客户端模式;

    9、simr://:这种你就不知道了吧?simr其实是Spark In MapReduce的缩写。我们知道MapReduce 1中是没有YARN的,如果你在MapReduce 1中使用Spark,那么就用这种模式吧。

    猜你喜欢

    转载自wangqiaowqo.iteye.com/blog/2253230