spark 第二天

spark编程指南 英文版:http://spark.apache.org/docs/latest/streaming-programming-guide.html
spark
1.val a=sc.textFile("/opt/spark/user/word") //弹性分布式数据集
2.val b=a.flatMap(line => line.split(" ")).map(word =>(word,1)).reduceByKey((a,b)=> a+b) //mapreduce
3.b.collect //查询wordcount结果
---------------------------------
spark
-----------------
master //start-master.sh
//...master.Master
worker //start-slave.sh
//...worker.Worker

sc.textFilel(...) //返回的是hadoop的RDD


-----------------
1.。*************************************
spark函数式编程
---------------------------------
RDD:resilient distributed dataset
1.是不可变的
如果运行rdd的节点故障,driver就可以重建rdd并指派到新的节点
计算过程中,数据一直是静态的
2.是分布式的
将大的RDD切割成小的rdd,分发到worker节点上运行,每个worker都有自己的环境
最终组装结果,透明性。
spark在系统或其他运行故障后,会有自己的机制进行恢复工作,所以数据有高度弹性,容错率高

3.驻留在内存中(memory)
spark高速的原因
4.RDD是强类型的,
scala是强类型语言(有val(不可更改)和var(可更改)),java是弱类型语言(都是var(可更改))

2*************************************************************
spark-shell连上完全分布式spark集群上的方式
1.spark://master:7077 //standalone模式,独立模式
2.mesos://ip:port //mesos
3.yarn(资源调度框架) //结合hadoop,使用yarn的资源调度框架
4.local //本地模式,不需要任何spark进程,默认是local,好处是调试与测试

连接方式通过--master指定//在spark-env.sh 加入export SPARK_MASTER_IP=192.168.218.134,否则第二次开spark-shell会报错
$>spark-shell --master spark://master:7077 //开启后jps会生成一个CoarseGrainedExecutorBackend进程
scala>sc.textFile("/opt/spark/user/word").collect //由于有3个worker,本地下的/opt/spark/user/word内容不一样,所以每次运行结果都不一样
关键点:由于是集群,每台机的word文件内容不一样,所以每次结果可能不一样
------------------------------------------------------------------


sparkconf
------------------------------
设置spark的参数,key-value对

SparkContext
------------------------------
到spark的连接,是spark程序的主要入口点,可用于创建rdd.累加器以及广播变量
每个jvm 只能激活一个context对象,创建新的context之前需要stop当前活跃context
config中的配置覆盖spark的默认值

读源码
------------------------------------------------------
spark第二天4 5 6 spark源码跟踪,spark的dag调度器分析
------------------------------------------------------

 

posted @ 2018-07-27 22:48  小#安  阅读(94)  评论(0编辑  收藏  举报