【Spark】Spark 简单介绍

Spark官方网站

http://spark.apache.org

Spark通用性解释

Spark通用性

Spark的特点

官方网站都有。目前支持Java,Scala, Python,R。推荐使用Java和Scala,spark2中对python的支持不够好。

Spark的数据源

  • HDFS,
  • HBase,
  • Cassandra(类似于hbase数据库,国外用的多)
  • Hive,
  • Tachyon(基于内存的分布式的文件系统, 阿里出的http://www.alluxio.org/,比较重要)

Spark的四种部署模式

  • hadoop 模式(spark on yarn)。用yarn来管理spark的资源,也是国内用的最多的模式。
  • Mesos模式。Mesos一个类似于yarn的资源管理器,国内用的少,国外多。
  • Standalone模式。上面两种都不是自己管理资源,使用第三方来管理,而standalone模式是spark自己来管理资源,多内用的比较多
  • 部署到云端

 

验证集群是否好用

验证spark集群是否可用

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --num-executors 1 --driver-memory 500m --executor-memory 500m --executor-cores 1 lib/spark-examples-1.5.2-hadoop2.5*.jar 10

验证结果如下:
Pi is roughly 3.1411

 


用scala编写完简单的运算后,可以在localhost:4040上查看

 

运行spark有两种:

  1. 本地运行
bin/spark-submit --master local --class org.apache.spark.examples.SparkPi lib/spark-examples-1.5.2-hadoop2.6.0-cdh5.4.4.jar 5

本地运行会直接输出结果

  1. 分布式运行
bin/spark-submit --master yarn-cluster --class org.apache.spark.examples.SparkPi lib/spark-examples-1.5.2-hadoop2.6.0-cdh5.4.4.jar 5

而分布式运行的结果在

cd $HADOOP_HOME/logs/userlogs/

scala 运行例子

val lines = sc.textFile("hdfs://master:9000/input0917/qqFriend.txt")
val lineLengths = lines.map(s => s.length)
val totalLength = lineLengths.reduce((a, b) => a + b)

输出:
totalLength: Int = 188

RDD

sparkRDD

Spark架构

这里写图片描述

 

transformation 和action 原理

Spark支持两种RDD操作: transformation and action. 
transformation 会针对已有的RDD创建一个新的RDD,而action则主要对RDD进行最后的操作。transformation只是记录了对RDD的操作,并不会触发spark程序的执行,只有当transform之后接着一个action操作,那么所有的transformation才会执行。比如

val file=sc.textFile("hdfs://hadoop1:9000/hello.txt").flatMap(line => line.split("\t"))
回车之后并没有触发spark的执行,因为flatMap等属于transformation操作
等到file.collect()后会看到spark的执行,collect是action操作

具体可以参考编程指南:http://spark.apache.org/docs/2.1.0/programming-guide.html

那为什么要有transformation和action呢?Spark可以通过这种lazy属性,来进行底层的spark应用程序的优化,避免过多的中间结果。 

这里写图片描述

 

宽依赖和窄依赖

窄依赖,父RDD的每个分区只被一个子RDD的分区依赖。 
宽依赖,父RDD的分区被多个子RDD的分区所依赖。 
这里写图片描述

shuffle的原理

这里写图片描述

本例中前面三个RDD都不涉及到其他的节点,但是真实环境是需要其他节点的参与的。shuffle阶段需要大量的磁盘IO,序列化与反序列化,网络数据的传输,所以spark很大的性能损耗都在shuffle上,所以有必要进行调优。

转自:https://blog.csdn.net/youngbit007/article/details/78085427

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值