<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JoeYangY的专栏]]></title><description><![CDATA[身处名利之场，心游道德之乡～]]></description><link>https://blog.youkuaiyun.com/JoeYangY</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JoeYangY]]></copyright><item><title><![CDATA[Spark的IndexedRDD]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/43525657</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/43525657</guid><author>JoeYangY</author><pubDate>Thu, 05 Feb 2015 11:22:33 +0800</pubDate><description><![CDATA[昨天又看到了IndexedRDD，趁着恰好有时间就好好看了一下原理，顺便拿出来分享一下。
这个问题的地址：https://issues.apache.org/jira/browse/SPARK-2365  目测后面会在正式版中放出来。
IndexedRDD的设计目的是为了解决下面这些问题：
1.join操作效率低下。
2.更新或删除RDD中某条记录需要全部复制一遍。
3.查找某条记录需要]]></description><category></category></item><item><title><![CDATA[云计算设计模式翻译（五）：Compute Resource Consolidation Pattern]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/43112763</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/43112763</guid><author>JoeYangY</author><pubDate>Sun, 25 Jan 2015 11:02:36 +0800</pubDate><description><![CDATA[这个模式所做的事情概括一下就是把多个不同的任务和操作合并到一个计算单元中，从而使云计算应用提高计算资源利用率，降低管理开销和任务之间连接交互的开销。
PS:我这里对后文中所翻译的“计算单元”做个小小的注释，这里的计算单元可以认为是逻辑的运行容器，可以是基于cgroup的各种container，也可以是像Storm中的worker，Spark中的Executor等等。这个模式除了在自己设计分布式系]]></description><category></category></item><item><title><![CDATA[云计算设计模式翻译（四）：Competing Consumers Pattern(消费者竞争模式)]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/43112731</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/43112731</guid><author>JoeYangY</author><pubDate>Sun, 25 Jan 2015 10:58:52 +0800</pubDate><description><![CDATA[简单地来说，这个模式能够使多个并行的consumer处理同一个信道中收到的消息，从而使系统能够并发地处理大量消息来优化系统的吞吐量，提高系统的可扩展性和可用性，平衡负载。
Context and Problem
    一般来说，一个运行在云端的应用通常都需要处理大量的请求。相比于同步的方式来处理每一个请求来说，一个更加通用的技术是实现一个消息系统来实现异步地处理各个请求。另外，这种策略也能够]]></description><category></category></item><item><title><![CDATA[云计算设计模式翻译（三）：Compensating Transaction Pattern（事务修正模式）]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/43112709</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/43112709</guid><author>JoeYangY</author><pubDate>Sun, 25 Jan 2015 10:55:00 +0800</pubDate><description><![CDATA[先说明一下：这个模式的中文我一直找不到一个比较恰当的中文来表述，姑且在本文中称之为事务修正模式吧，如果各位觉得有更合适的称呼欢迎提出。
    这个模式指的是对于一个由一系列步骤组成、并遵循最终一致性的操作来说，如果一个或多个中间步骤发生错误，那么就必须要对这次操作的步骤进行撤销。对于一个实现了复杂业务逻辑和工作流的云端应用来说，遵循最终一致性的操作随处可见，所以本模式应用场景还是比较多得。
]]></description><category></category></item><item><title><![CDATA[云计算设计模式翻译（二）：Circuit Breaker Pattern（断路器模式）]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/43112687</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/43112687</guid><author>JoeYangY</author><pubDate>Sun, 25 Jan 2015 10:51:57 +0800</pubDate><description><![CDATA[当连接使用远端服务或资源时，可能需要花不少精力来做好错误处理。这个模式可以有效提高程序的稳定性和弹性。
Context and Problem
    在像云这种分布式的环境中，应用程序的操作经常访问远端的资源和服务。然而这类操作有可能因为网络响应慢、超时、资源暂时不可用等瞬时性故障（transient faults）而失败。这些故障通常情况下会在一小段时间后自动恢复，而对于一个好的云应用来说]]></description><category></category></item><item><title><![CDATA[云计算设计模式翻译：Cache-Aside Pattern]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/42747485</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/42747485</guid><author>JoeYangY</author><pubDate>Thu, 15 Jan 2015 20:32:38 +0800</pubDate><description><![CDATA[这个手册其实老早就搞到了，只是最近实在太懒了一直没动- - ，希望能坚持把主要的内容翻译完。翻译的过程中会加入一些自己的看法，如果有不准确或错误的地方欢迎各种提意见指出~。



简单来说就是将数据从持久化存储中加载到cache中。这个模式可以提升系统性能，并且保证cache和底层存储中数据的一致性。PS:下文会用“存储空间”来表示data store，在实际的工程中可以代表数据库、文件等]]></description><category></category></item><item><title><![CDATA[源码阅读的方法]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/41446023</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/41446023</guid><author>JoeYangY</author><pubDate>Mon, 24 Nov 2014 15:38:28 +0800</pubDate><description><![CDATA[小弟我入行不久，实打实的菜鸟，最近由于个人兴趣和工作需要，读了一些源码，感觉还不错，谨以此文做个小小的总结以达到抛砖引玉之效，如有错误和不足的地方希望各位补充。]]></description><category></category></item><item><title><![CDATA[Tachyon学习及源码阅读：简介]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/41414787</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/41414787</guid><author>JoeYangY</author><pubDate>Sun, 23 Nov 2014 19:51:38 +0800</pubDate><description><![CDATA[前言
     这个系列是关于Tachyon的，主要基于《Reliable, Memory Speed Storage for Cluster Computing Frameworks 》这篇论文以及源码，最近工作比较忙，精力实在有限，可能更新得比较慢
简介
     Tachyon是一个分布式文件系统，提供了一种可靠的方式，可以以访问内存的速度在不同的分布式计算框架之间共享数据。Tachy]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：Spark的Task]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/41408541</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/41408541</guid><author>JoeYangY</author><pubDate>Sun, 23 Nov 2014 10:33:51 +0800</pubDate><description><![CDATA[前文稍微分析了一下standalone模式中几个集群核心角色的代码，这将是后面分析下去的基础。本文是前文的进一步补充。
TASK的产生
    因为笔者习惯带着目的跟着线索走，所以对于shuffle过程实际上是在不同的task之间传递数据的过程，要找到相关的代码和流程，我们就先把着眼点定在task这端，先分析一下Spark中的task，再来看shuffle。
    前文有提过，最终在exe]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：Standalone模式集群核心角色代码浅析]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/41089673</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/41089673</guid><author>JoeYangY</author><pubDate>Thu, 13 Nov 2014 22:03:27 +0800</pubDate><description><![CDATA[其实原计划是先搞定Spark的数据系统以后再来看这部分的，但是在分析数据系统的过程中发现这部分代码要是不搞清除很难继续搞下去，所以就暂时让它插个队了。关于spark集群中的一些角色的粗略介绍可以看这里 http://blog.youkuaiyun.com/joeyangy/article/details/40182945，我这里条理比较乱，看到哪算哪，总的来说还是以流程驱动的（我称之为“记传体”....^_^]]></description><category></category></item><item><title><![CDATA[操作JNI函数以及复杂对象传递]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40980703</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40980703</guid><author>JoeYangY</author><pubDate>Mon, 10 Nov 2014 14:45:07 +0800</pubDate><description><![CDATA[转自博客：http://blog.youkuaiyun.com/qinjuning]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：Spark的数据系统之cache篇]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40858067</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40858067</guid><author>JoeYangY</author><pubDate>Thu, 06 Nov 2014 11:16:51 +0800</pubDate><description><![CDATA[如果说spark是一把在大数据处理领域的快刀，那么spark的存储系统设计及管理等相关模块就算不是刀尖，也算得上十分锋利的刀锋了，由于工作需要，我会伴着源码来深入学习一下，这里做一个记录备忘。



RDD的cache和persist

谈到spark存储，第一反应先想到了RDD里的cache和persist。如果从RDD中的cache方法作为入口来看，cache与persist殊途同]]></description><category></category></item><item><title><![CDATA[PM8001驱动及相关模块分析——综述及初始化]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40784605</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40784605</guid><author>JoeYangY</author><pubDate>Tue, 04 Nov 2014 14:27:50 +0800</pubDate><description><![CDATA[以前的文档，稍微整理一下，一点点在回忆，请各位指正。





前言

对于PM8001这个设备，其与主机通过PCI总线连接，属于SCSI子系统中的底层模块。

SCSI子系统按功能和逻辑结构可以划分成三层。系统结构如图所示。









本文的主线是根据PM8001驱动（较低层）来展开，其间会涉及到中间层相关部分的分析，但对于顶层涉及得不多。

]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：任务提交流程整理]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40397539</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40397539</guid><author>JoeYangY</author><pubDate>Thu, 23 Oct 2014 14:57:15 +0800</pubDate><description><![CDATA[在介绍完TaskScheduler和DAGScheduler后，整个提交流程就很清楚了，在这里做一个小小的总结。


action动作触发RDD的runjob，runjob将rdd和最终调用的function以及一些配置信息和监听器回调传给DAGScheduler。DAGScheduler根据传入的RDD先创建一个finalStage，然后向前搜索产生这个RDD前，由transformati]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：DAGScheduler]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40396233</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40396233</guid><author>JoeYangY</author><pubDate>Thu, 23 Oct 2014 14:14:42 +0800</pubDate><description><![CDATA[前言

有个前辈给我提了建议，他觉得我这种方式写源码分析文档有点记流水帐的意思，意义并不是很大。我觉得他说得很有道理，想了以后，也觉得每必要一点点说，针对几个重点着重讲一下自己的看法和感悟就行了。

DAGScheduler简介

那么本篇文档要搞的是DAGScheduler，虽然前面几篇文章多多少少有所涉及DAGScheduler，这里还是简单地介绍一下。






]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：TaskScheduler]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40345725</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40345725</guid><author>JoeYangY</author><pubDate>Tue, 21 Oct 2014 15:34:31 +0800</pubDate><description><![CDATA[前言

前面两篇分别大概介绍了一下Spark集群中几个角色和driver启动流程。那么本篇将以前面两篇文档中的线索为起点，来分析一下SparkContext中，同时也是driver
 program甚至整个Spark应用流程中最为重要的组件之一——TaskSchedular，代码啥的我就尽量不贴了，有需要的同学对着源码看吧，以后其他文档也是这个路数，说一下代码在哪就行，自己找着看更全面也更好]]></description><category></category></item><item><title><![CDATA[在Storm上实现两层BP神经网络]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40189355</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40189355</guid><author>JoeYangY</author><pubDate>Fri, 17 Oct 2014 18:28:49 +0800</pubDate><description><![CDATA[前言
      今天下决心开始写博客，这篇文档是我大约半年前做的一个小实验，完全出于好玩的目的搞的，当时总结了一下自己写了篇文档，现在稍微整理一下就发出来了。由于时间久远（好吧其实也没那么久远，只是记性太差），并且我本身不是做机器学习这块的，水平也很有限，很多地方难免有错误，希望能谅解和指出(求轻喷~~orz)。
      在这里要特别感谢http://bbs.youkuaiyun.com/topic]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：DriverProgram初始化]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40185813</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40185813</guid><author>JoeYangY</author><pubDate>Fri, 17 Oct 2014 14:35:58 +0800</pubDate><description><![CDATA[作为代码阅读的入口，先写个最最简单的DriverProgram初始化代码作为入口，如下：


valconf=
newSparkConf().setAppName("SparkTest")
valsc=
newSparkContext(conf)


SparkConf
先简单描述一下SparkConf，重点还是在SparkContext，以下描述为源码描述的翻译。
Spar]]></description><category></category></item><item><title><![CDATA[Spark源码阅读笔记：Spark集群中各个角色介绍]]></title><link>https://blog.youkuaiyun.com/JoeYangY/article/details/40182945</link><guid>https://blog.youkuaiyun.com/JoeYangY/article/details/40182945</guid><author>JoeYangY</author><pubDate>Fri, 17 Oct 2014 11:05:09 +0800</pubDate><description><![CDATA[在阅读代码之前，需要先介绍一下Spark集群，主要参考了官网上的描述、源码以及源码注释，而关于Spark的其他一些概念，《RDD：基于内存的集群计算容错抽象》这篇论文已经讲得足够牛叉了，而且很权威，我就不扯淡了。
        先]]></description><category></category></item></channel></rss>