赛赛的网络日志

Jerry Shao's Blog

Spark Security面面观

背景 作为一款成熟的商业软件,安全往往鲜少被提及但又不可忽略,大数据软件也是如此。在生产环境中,对于一款成熟的大数据软件的考量,不仅需要考虑其功能完备性和性能,同时安全也是不可缺少的一环。为什么安全如此重要呢? 首先,商业环境通常是多租户环境,不同的用户/组对于不同的数据/应用有不同的安全考量。我们需要保证相应的用户不能做出超越权限的操作。 同时,分布式架构会将端口、...

Livy:基于Apache Spark的REST服务

摘要 Apache Spark是现今最为流行的开源大数据计算框架,广泛应用于数据处理和分析应用。它提供的两种基于命令行的处理交互方式虽然足够灵活,但在企业应用中面诸如部署、安全等的问题。为此本文引入Livy这样一个基于Apache Spark的REST服务,它不仅以REST的方式代替了Spark传统的处理交互方式,同时也提供企业应用中不可忽视的多用户,安全,以及容错的支持。 背景 Ap...

Summary of Spark Streaming

This blog is a summary of Spark Streaming, to introduce the basic concepts of Spark Streaming, as well as the internals of Spark Streaming, comparison to Storm, also in-production usage of Spark St...

Investigation of Dynamic Allocation in Spark

Investigation of Dynamic Allocation in Spark Dynamic executor allocation is an important mechanism in Spark for better resource scheduling. Today I will give a deep investigation of how this mecha...

详细探究Spark的shuffle实现

Background 在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。Spark作为MapReduce框架的一种实现,自然也实现了shuffle的逻辑,本文就深入研究Spark的shuffle是如何实现的,有什么优缺点,与Hadoop M...

使用MapReduce框架实现SimRank算法

Background SimRank是一种基于图结构的相似性度量算法,算法依赖于一个基本的事实“two objects are similar if they are related to similar objects”。简单来说,如果两个物体都与另一物体有关联,那么这两个物体就有一定的相似度,因此SimRank是从图的结构来描述物体之间的相似度。本文从SimRank算法入手,介绍算法的...

Spark源码分析之-Storage模块

Background 前段时间琐事颇多,一直没有时间整理自己的博客,Spark源码分析写到一半也搁置了。之前介绍了deploy和scheduler两大模块,这次介绍Spark中的另一大模块 - storage模块。 在写Spark程序的时候我们常常和RDD ( Resilient Distributed Dataset ) 打交道,通过RDD为我们提供的各种transformation和...

序列的函数式抽象-Spark API设计

Background 最近钻研于SICP (Structure and Interpretation of Computer Programs),深为lisp所抽象出的公共模式所吸引,联系一直以来所使用的Spark,想到两者对于公共模式提炼的相同之处,有感而发,记下自己的所想。 公共模式的提炼 思考程序设计中如下几种场景: 将一个表里的所有元素按给定因子做一次缩放 将一个表...

Spark Streaming Job Troubleshooting of Dependency Chain

Background Spark Streaming has many commons compared with Spark, it abstracts DStream which based on RDD, its transformations and outputs are similar to Spark. But due to its periodically running ...

Spark源码分析之-deploy模块

Background 在前文Spark源码分析之-scheduler模块中提到了Spark在资源管理和调度上采用了Hadoop YARN的方式:外层的资源管理器和应用内的任务调度器;并且分析了Spark应用内的任务调度模块。本文就Spark的外层资源管理器-deploy模块进行分析,探究Spark是如何协调应用之间的资源调度和管理的 Spark最初是交由Mesos进行资源管理,为了使得更...

Spark源码分析之-scheduler模块

Background Spark在资源管理和调度方式上采用了类似于Hadoop YARN的方式,最上层是资源调度器,它负责分配资源和调度注册到Spark中的所有应用,Spark选用Mesos或是YARN等作为其资源调度框架。在每一个应用内部,Spark又实现了任务调度器,负责任务的调度和协调,类似于MapReduce。本质上,外层的资源调度和内层的任务调度相互独立,各司其职。本文对于Spa...

传统的MapReduce框架慢在那里

本文就两个问题进行讨论:1. 相比于Shark,为什么像Hive之类的传统MapReduce框架比较慢? 2. 对于细粒度的任务模型(fine-grained task model),究竟有些什么优势? background 本文翻译自Shark: SQL and Rich Analytics at Scale的论文第七章节,从理论上讨论了相比于Hive,Shark的优势在哪里,原文可见...

Spark Streaming Introduction

随着big data的发展,人们对大数据的处理要求也越来越高,传统的MapReduce等批处理框架在某些特定领域(如实时用户推荐,用户行为分析)已经无法满足人们对实时性的需求。因此诞生了一批如S4,Storm这样的流式的、实时的计算框架。本文介绍的Spark Streaming也正是一个这样的流式计算框架。 What is Spark Streaming 作为UC Berkeley云计算...

Spark Overview

Spark的基本架构和重要模块作基本介绍

Overview 本文章主要对Spark,Spark的基本架构和重要模块作基本介绍,文章不会涉及Spark的安装部署以及使用,对此可以参考Spark官方文档。 What is Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce 框架,都是基于map reduce算法所实现的分布式计算框架,拥有Hadoop MapReduce所具有的...

Hello World

Hello World to My First Blog