Git Product home page Git Product logo

apachesparkbook's People

Contributors

jerrylead avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apachesparkbook's Issues

书本实践分享1: 在docker集群上运行GroupByTest例子

编程还是要多实践,这里给大家分享下我的实践过程,希望对大家有帮助。

前提

装好ubuntu的虚拟机

运行docker集群

具体的操作可以参考下面这两篇文章:
1、使用 Docker 搭建 Hadoop + Hive + Spark 集群(上)
2、使用 Docker 搭建 Hadoop + Hive + Spark 集群(下)
其实也就是直接运行下面这几个命令就可以把集群起起来了
git clone https://github.com/bambrow/docker-hadoop-workbench.git
cd docker-hadoop-workbench
./start_demo.sh

运行GroupByTest例子

• 进入spark-master
docker exec -it spark-master /bin/bash
• 进入Spark目录
cd spark
• 可能需要重启woker
docker-compose restart spark-worker
• 运行GroupByTest
bin/run-example –executor-memory 2g –num-executors 1 –executor-cores 1 GroupByTest 3 4 100 2

DAG图查看

• 打开localhost:18080
这是History Server的地址,8080和8081端口是worker和slave的地址
• 随便点击一个运行成功的APP
image
• 看到程序被分解为2个Job,一个Action一个Job
image
• 回顾一下GroupByTest.scala的内容
先产生一个随机数组,然后计数、groupByKey+计数
image
• Stage0、Stage1、Stage2的RDD的DAG图
image
点进入蓝色的地方可以看到有3个Task,说明分区数量为3
image
image
Stage1虽然是Stage0的缓存,但还是画出了具体的流程。
image

可能出现的问题

分享一下我遇到的问题,我在使用以下命令运行官方的测试例子的时候出现了以下的错误:initial job has not accepted any resources check your cluster ui to ensure,大意是资源不够,一开始我还没怎么在意,后面给作者发邮件,才知道真的是资源不足。
1、进入spark-master容器:docker exec -it spark-master /bin/bash
2、进入Spark目录:cd spark
3、运行例子: bin/run-example GroupByTest 3 4 100 2
做法:
1、增大机器内存和核心
2、运行的时候减少性能,比如bin/run-example –executor-memory 2g –num-executors 1 –executor-cores 1 GroupByTest 3 4 100 2,好像没有加–executor-memory 2g,默认是16g,因此会出现不够用的情况,改小资源之后就可以正常使用啦。

大神您好,有个问题能否解答下

spark,父子RDD分区是一对多的关系,有没有可能是窄依赖???如果有可能,能否举个例子呢

为啥shuffle必须要落盘,直接在内存中不能进行数据重新分布吗???

关于第三章rdd的join的疑问?

Rdd的join和spark sql的join是否相同?
我看了一些资料说,“当前SparkSQL支持三种join算法:Shuffle Hash Join、Broadcast Hash Join以及Sort Merge Join。”。例如这篇文章,
https://segmentfault.com/a/1190000021033287
这里面提到的join和书中将的rdd join有大的区别。想问下rdd join和spark join是不同的实现?如果是相同的实现那么文章中的说法是错的?

Shuffle Write和Shuffle Read阶段溢写的时机不同

利杰你好,我有个问题想请教你。我在看Spark源码时,发现Shuffle Write是先往Map里插入值,然后再判断是否需要溢写;而Shuffle Read是先判断是否需要溢写,然后再插入值。按照我个人理解,采用Shuffle Read的方式内存溢出的风险会更低,Shuffle Write可能会在扩容时导致溢出。你知道Spark为什么要这样设计吗
Shuffle Map
image
Shuffle Read
image

NarrowDependency中的ManyToManyDependency不会造成重复计算吗?

我在看书籍图3.2的时候发现ManyToManyDependency和ShuffleDependency很像,但ManyToManyDependency属于NarrowDependency,那么Stage划分的时候不会分成两个分区,这样按照P103的想法2,每次计算child RDD的每个分区的时候都需要重复计算全部的父RDD,因此将ManyToManyDependency划分为ShuffleDependency会不会更好一点呢?ManyToManyDependency可以看作在shuffle write的时候写入整个分区到各个子RDD的ShuffleDependency。

page48,关于宽窄依赖的划分

1、你说 父RDD的一个或多个分区的数据需要全部流入子RDD的一个或多个分区,就是窄依赖。是不是可以这么理解,只要需要通过partitioner进行分发的,就是宽依赖,否则就是窄依赖。
假如父RDD有3个分区,但每个分区只有一条数据,是不是无论子RDD如何,这都是窄依赖,因为符合你上面说的。假如走了partitioner分发呢??
2、为什么宽依赖就不能以pipeline的方式处理呢?无非就是中间加个partitioner判断而已。
3、假如一个stage里面有很多窄依赖,导致节点负载过重,有没有办法强行在窄依赖之间划分stage呢?flink是可以的

page74第四行

原:rdd2中某些分区个数过多或过少
应该是:rdd2中某些分区数据的个数过多或过少

书本实践分享2: 运行ComplexApplication应用

• 到github下载ComplexApplication.scala
• 将ComplexApplication.scala放到一个工程中编译成Jar包
• 上传到虚拟机
• 设置卷映射,使得当前的Jar包能被spark-master的容器读取到
image
• 运行提交应用的命令
docker exec -it spark-master /spark/bin/spark-submit --class ComplexApplication /apps/ComplexApplication.jar
• 查看18080端口可以看到应用成功运行了
image
• 设置alias
alias run_complex=' docker exec -it spark-master /spark/bin/spark-submit --class ComplexApplication /apps/ComplexApplication.jar'

page59,关于groupByKey在不同partitoner时的shuffle问题

1.你说groupByKey在左右2个算子的partitioner相同时不会进行shuffle,这里的partitioner相同应该怎么理解。应该是分区器的类型和分区都要相同吗。如果左边的分区数比右边大,子RDD的一个分区依赖父RDD多个分区的全部,应该也不需要shuffle吧。
2.groupByKey的默认分区器就是hashPartitoner吗,可以换吗

框架执行空间不足时,可以向数据缓存空间借用空间,但至少要保证数据缓存空间具有约50%左右的空间?

P236中间有这么一句话:"框架执行空间不足时,可以向数据缓存空间借用空间,但至少要保证数据缓存空间具有约50%左右的空间?",这句话看起来好像框架执行空间最多只能占用50%的空间,但实际上在缓存空间用了少于50%,比如20%的时候,框架执行内存还是可以使用80%的吧?我理解是只有数据缓存空间真的用了50%的时候,框架执行空间才只能占用50%。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.