spark入门总结

1.spark要是经过Shuffle也会落盘
2.MR不适合迭代式计算,MR1 ->结果落盘 ->MR2 ->结果落盘 ->MR3
3.Hadoop2.x解决了Hadoop1.x的问题,实现了Yran,将任务调度与资源调度解耦,并且计算框架可插拔(可以换别的计算引擎)
4.RDD弹性分布式数据集,相当于抽象出一个集合,可以使用集合的方法,但是不同于集合,集合是真正储存数据的,
  RDD不存数据,而存计算逻辑的。通过计算逻辑可以拿到数据。
5.RDD中的方法叫算子。
6.Spark做迭代式计算时是基于内存的,
7.DAG有向无环图
8.切片方法getSplits(),MapTask数取决于切片数,ReduceTask取决于分区数,MapTask是进程,来实现并行计算的效果
9.Spark支持REPL,交互式平台
10.Spark兼容性好,可以非常方便地域其他的开源产品进行融合。
11.Spark分为单机模式和集群模式(Standalone(自带),YARN(常用),Mesos模式)
12.计算π:bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.11-2.1.1.jar 10
   local代表单机模式,[1]代表单线程,[2]代表开两个线程,[*]基于CPU个数有几个就开几个线程,来处理当前任务
13.Spark的执行入口,SparkContext(spark上下文),帮助我们从磁盘或HDFS上读取文件。
   1)默认一行一行的读取,调用的方法是textFile(其底层依旧使用的是TextInputFormat),将数据放入到RDD中。RDD执行叫算子。RDD对处理的数据做一个抽象封装。
14.如何运行spark程序:
   1)打包插件:正常在公司开发环境中,是在idea中写好程序,打包到集群,执行jar包。
   2)使用REPL:spark-shell, spark程序要执行需要SparkContext,当我们执行spark-shell命令,
      会自动创建SparkContext对象(程序执行的入口),简写为sc。
      以及spark session对象,简写为spark,在写spark sql时会用到。
15.wordcount入门常见算子:
   1) sc有一个方法textFile(),读取文件。将数据放入到RDD,相当于集合,但不是集合。
   集合是存数据,RDD存的是得到这些数据的逻辑。RDD操作方式和集合类似。
   2) reduceByKey(),聚合,将一组key拿出来,对value进行reduce操作,传入参数是一个函数(运算规则)。
   3) sc.textFile().flatmap(_.split(" ")).map((_,1)).reduceByKey(_+_),并未真正计算,只是封装在RDD中
   4) collect方法,让业务真正的执行。
16. 当执行spark-shell命令,会启动sparksubmit进程。
17. 当执行spark-shell命令,可以在web页面4040,可以看到工作的执行情况。
18. DAG记录着整个程序的走向,记录的目的就是为了明确血缘关系,各个RDD之间都是有上一个RDD转换而来。
    如果哪一个RDD出现问题,可以根据血缘关系进行容错操作。
19. 一个job可能会有多个task,分别运行work节点上,可以通过Driver跟踪每个Executor的执行情况。
    Driver就是一个线程。在yarn环境下,客户端向RM发送请求,AM中有一个线程就是Driver。
20. master 和worker是整体资源的称呼,具体执行job还是Driver和Executor。
21. 8080是spark master的web页面。master 的端口是7077
22. standalone集群模式,计算π
   计算π:bin/spark-submit \
   --class org.apache.spark.examples.SparkPi \
   --master spark://hadoop102:7077 \
   --executor-memory 2G \
   --total-executor-cores 2\
   ./examples/jars/spark-examples_2.11-2.1.1.jar 10
   参数解读:1)--executor-memory 每个executor内存的大小,默认是1G
    2)--total-executor-cores  所有executor分配的CPU核数,只有standalone模式可以,yarn不可指定。
    本案例中,指定所有executor总共分配了2个CPU核数,而每个节点就有8个CPU核数,所有不需要3个worker工作,
    为了考虑并行度,使用了2个worker,各一个CPU执行。
23.对于分布式集群,历史服务器日志保存路径的配置,应该放在HDFS,以便所有节点都能访问。避免放在单节点磁盘上。
24. spark历史服务器端口号18080。
25. 什么是高可用?通俗来说就是保证7*24小时不停机提供服务。高可用是分布式系统架构设计中必须考虑的因素之一,他通常是指
    通过设计减少系统不能提供服务的时间。
26. hadoop的HDFS在2.x之前存在单点故障问题,Facebook使用Hadoop时用高可用解决了这个问题。一个alive,多个standBy。
27. 实现高可用需要依赖于zookeeper,在zookeeper上通过监听及创建临时节点状态,判断是否上位。standBy转成active需要一点点时间。
28. standalone集群模式,spark master的web页面端口号是8080,与zookeeper3.5.7的AdminServer端口号冲突,其他低版本zk,没有冲突问题
    给zookeeper让道需要修改。
29. standalone集群模式,计算π
   计算π:bin/spark-submit \
   --class org.apache.spark.examples.SparkPi \
   --master spark://hadoop102:7077,spark://hadoop103:7077 \
   --executor-memory 2G \
   --total-executor-cores 2\
   ./examples/jars/spark-examples_2.11-2.1.1.jar 10
   注:在高可用环境下,--master 连接的ip,是HA下的多台master。
30.spark执行程序的两种方式:
    1)通过spark-submit,运行其中的类。比如计算π,查看运行的状态,可以通过master的web端8080(与zk有冲突,可改为其他端口号)
    2)通过提供的交互式窗口,spark-shell。比如wordcount,可以通过4040查看运行状态(spark-shell)。
31. 集群模式下,textFile(文件路径),路径不应该是单节点的路径,因为大数据处理数据,需要并行计算,其他节点可能没有这个路径及文件。
    可以通过HDFS访问。
32. 高可用是master挂了,备胎上位。当之前的master重新启动后,就成为worker。
33. spark{单机模式,集群模式{自带standalone{standalone-Client和standalone-cluster},yarn,mesos}}。
34. standalone-Client(默认)和standalone-cluster的区别在于,Driver程序的运行节点。
35. 客户端:standalone-Client在本地节点创建Driver向Master提交job时,Master通知相应的worker创建Executor,
    执行完毕后会将结果返回(反向注册)给Client,因此我们可以在shell窗口看到执行的结果。
    命令是 --deploy-mode client
36. 集群:--deploy-mode cluster。本地主机向master提交job,master将请求化作为一个task,相应的worker领取
    task,启动Driver(相当于Appmaster),之后master再通知其他worker启动相应的Executor,Executor反向注册
    Driver,将结果发送给Driver汇总。 
    结果只能通过8080(master)查看Driver汇总的计算结果,worker的端口是8081,Driver是在worker上创建的。
    Driver是在集群的某一个节点上创建的,不能在shell窗口看到执行结果。
37. 一般测试环境下使用Client,生产环境使用cluster。
38. spark的Yarn模式,只需要在一个节点安装spark客户端连接Yarn即可,不需要额外构建Saprk集群。(因为Yran已经有RM,NM了)
    但是有时为了安全性,当一个spark节点挂点,其他节点能够使用spark,在其他节点也安装spark。类似于Hive在一个节点装就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值