自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张包峰的博客

Distributed Computing

  • 博客(164)
  • 资源 (1)
  • 收藏
  • 关注

原创 阿里云数据库团队招聘

我们是全球领先的云数据库技术团队,这里有极具挑战性的岗位期待你的加盟: 阿里云-数据库技术组-分布式数据库研发工程师 岗位描述: 1.负责云数据库分布式计算引擎或者列存索引等核心模块的研发工作 2.负责提升系统的易用性、稳定性,提升资源利用率和性能。 岗位要求: 1.在分布式计算/存储/数据库/OLAP等领域有3-5年的开发和优化经验者优先 2.对开源的Hadoop/Spark/

2016-10-18 11:23:57 3930

原创 回过头看这一年多做的事

刚才把之前写的大半年来做的计算这点事看了一遍,还是蛮感慨的。从那时到现在,又半年过去了。当时BH这层runtime正在已混布的方式与另一个集团内的OLAP系统为某项目落地而集成,具体就不谈了。截止目前,这种”狼狈”的组成形式终于比较令人满意地磕磕碰碰着落地了。年后,主要磨了系统的稳定性,在真实数据上做压测,自己对系统摸了底。结果还算满意。

2016-08-03 10:44:42 2313

原创 Flink SQL 1.0+ UT Cases

Flink SQL UT Case截止当前flink master分支最新的代码(未完成的1.1版本),Flink Table项目的UT,batch sql(即直接调用.sql())的sql, logicalPlan, physicalPlan整理。/** Filter **/SELECT * FROM MyTable WHERE falseLogicalProject(_1=[$0], _2=[$

2016-07-11 16:13:18 2404

原创 Flink StreamSQL简介

Flink Stream SQLOverviewblog https://flink.apache.org/news/2016/05/24/stream-sql.html提到目前Table API的问题,batch和stream的API各自能支持的query不一样。 However, the original Table API had a few limitations. First of a

2016-07-01 17:28:03 13924

原创 Flink sql的实现

SQL Impl in Flink跟了下Flink Table里sql的实现,flink sql的实现比较简单,一句话概述就是:借助Apache Calcite做了sql解析、逻辑树生成的过程,得到Calcite的RelRoot类,生成flink的Table,Table里的执行计划会转化成DataSet的计算,经历物理执行计划优化等步骤。类比Spark SQL,Calcite代替了大部分Spark

2016-06-08 16:17:33 12414

原创 DAG vs. MPP

DAG vs. MPPNative DesignMPP每个Segment高度对称(symmetric),狭义MPP storage各个Segment自己管理,自己备份,涉及某数据相关的query必定会落到某个Segment上,有concurrency和straggler的问题存在。MPP天然有很优秀的Compiler和Optimizer,包括local runtime环境是数据库,解析、优化、cod

2016-05-30 15:03:14 10604

原创 Inspiration from Apache HAWQ

AspectsInterconnectUDP(User Datagram Protocol) , additional packet verification, the reliability is equivalent to TCP(Transmission Control Protocol), and the performance and scalability exceeds that of

2016-05-26 15:43:31 5631

原创 Flink Runtime 1.0 Notes: Task Execution(1)

AboutI will try to give the mainline of how does Flink task works.Main classes and methods are mentioned.Format explainationthis is Class this is method()this is constantTask ExecutionTask Compone

2016-05-18 15:53:00 3204

原创 Flink Runtime 1.0 Notes: Plan 2 Task

AboutI will try to give the mainline of how does Flink buildint the logical plan 2 physical plan 2 task. Main classes and methods are mentioned.Format explainationthis is Class this is method()thi

2016-05-17 11:29:26 3147

原创 Gremlin实现分析

先把梳理逻辑图放着,有空分析 :)戳大 http://img.blog.csdn.net/20160412144546178Gremlin文档 http://tinkerpop.apache.org/docs/3.1.1-incubating/reference

2016-04-06 12:50:59 5837

原创 GraphX迭代的瓶颈与分析

背景测试了一个case,用GraphX 1.6跑标准的LPA算法,使用的是内置的LabelPropagation算法包。数据集是Google web graph,(忽略可能这个数据集不是很合适),资源情况是standalone模式,18个worker,每个worker起一个executor,50g内存,32核,数据加载成18个分区。case里执行200轮迭代,代码:import org.apache

2016-02-03 16:07:22 6539 2

原创 搬家与流式处理

这两天搬家,身体很劳累,脑子算是没闲着。在把货物搬上楼的过程中,我琢磨了个自认为很高效的方法,本质和流式处理很像。需求与尝试 一车货物,零零散散打了些包,停在楼下,需要搬到五楼去。劳力有三人。一开始的方案是每个人自己拿几样东西,自管自上楼去,再下楼来拿下一趟。搬了几趟后,有以下一些问题: 1. 搬运过程中,累的不是手臂,而是脚。光爬几次五楼,腿已经先受不了了。 2. 过程中为了方便,楼下车不锁

2016-01-31 21:17:53 2057

原创 大半年来做的计算这点事

写一篇随笔,谈谈大半年来做的一些事情。简单地说,从去年三月份到现在,一直在做一个计算框架:BH,一个core。我对自己的要求是,掌握Spark(和Flink),然后忘了它。所以层面core基本和spark core的层次是一致的,核心是pipeline和DAG。开始做这件事的时候,Flink当时的两层runtime还没统一成pipeline,所以当时与spark core实现思想的主要区分之一就在于

2016-01-24 21:41:23 4420 2

原创 GraphX 实现K-Core

背景graphx实现k-core比较简单,参考淘宝技术部之前的文章,已经给出了一个代码片段,基本上改改就可以定制自己的需求了。codeimport org.apache.spark._import org.apache.spark.graphx._import org.apache.spark.storage.StorageLevelimport org.apache.spark.graphx

2015-08-06 17:02:28 4654 1

原创 GraphX 图数据建模和存储

背景简单分析一下GraphX是怎么为图数据建模和存储的。入口可以看GraphLoader的函数,def edgeListFile( sc: SparkContext, path: String, canonicalOrientation: Boolean = false, numEdgePartitions: Int = -1, edgeS

2015-08-05 10:47:52 7309 2

原创 GraphX实现N度关系

背景本文给出了一个简单的计算图中每个点的N度关系点集合的算法,也就是N跳关系。之前通过官方文档学习和理解了一下GraphX的计算接口。N度关系实现思路: 1. 准备好边数据集,即”1 3”, “4, 1” 这样的点关系。使用GraphLoader 的接口load成Graph 2. 初始化每个Vertice的属性为空Map 3. 使用aggregateMessages把VerticeID和

2015-08-04 12:19:23 4730 3

原创 Zookeeper ipv6的坑

问题zookeeper抛这样的错误: [main-SendThread(localhost:2000)] ERROR org.apache.zookeeper.ClientCnxn - Unable to open socket to localhost/0:0:0:0:0:0:0:1:21814549 [main-SendThread(localhost:2000)] WARN org.ap

2015-05-25 13:57:01 9486

原创 Apache Zeppelin安装及介绍

背景Apache Zeppelin提供了web版的类似ipython的notebook,用于做数据分析和可视化。背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。它的整体展现和使用形式和Databricks Cloud是一样的,就是来自于当时的demo。Mac OS上安装目前github上,zeppelin版

2015-05-23 15:46:21 15438 1

原创 Marathon on OS X初体验

本文描述了在OS X上安装使用Marathon的过程。Marathon简介Marathon是Mesosphere公司为Mesos生态圈打造的一个轻量级、扩展性很强的调度long-running service的调度框架。支持RESTful api来创建和管理app,自动为app做容错迁移,凡是能用shell起的任务,理论上都可以通过Marathon在mesos上简单地启动和管理起来。下图为Mesos

2015-05-11 23:16:55 3628

原创 Install Docker on Mac OS X

小白来山寨一把官网文档。Docker不能直接跑在OS X上,需要先安装下VirtualBox和boot2docker。boot2docker会帮我们启动vm,启动docker,并且本身提供一些管理命令。 boot2docker也很轻量级,完全在内存里启动一个VM,只占24M大小,几秒内就可以启动。安装过程1) 下载VirtualVM-xxx-xxx.dmg,并安装。 2) 使用brew安装boo

2015-05-09 15:11:18 3716

原创 Grpc-java MacOS编译

系统版本: Mac OS X 10 本文简述grpc-java的编译过程,在官方文档的步骤里,增加两个包的安装依赖。Build# download source codegit clone https://github.com/grpc/grpc-java.gitcd grpc-java# install mvnbrew install maven# build nettygit subm

2015-05-03 17:02:45 3973

原创 Scala Learning(4): Currying柯里化的推演

本文展示加法和乘法的两个例子,最后使用MapReduce的思想把两者统一成一个带Currying的表达形式。从high-order functions推演到Currying原始方法def sum(f: Int => Int, a: Int, b: Int): Int = if (a > b) 0 else f(a) + sum(f, a + 1, b)表示从a到b,把每个int做一次f处理,

2015-04-30 23:33:15 1673

原创 Scala Learning(3): Tail Recursion定义

关于尾递归 ,使用Scala的两个例子展示尾递归的定义和简单实现。例子比较求最大公约数的函数def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)计算的展开是尾递归的,gcd(14, 21)-> if (21 == 0) 14 else gcd(21, 14 % 21)-> if (false) 14 else gcd(

2015-04-29 22:58:13 2266

原创 Scala Learning(2): map, flatMap, filter与For表达式

本文叙述Collections里最常见的三种操作map, flatMap, filter,与For表达式的关系。List对三种方法的实现map在List的实现:abstract class List[+T] { def map[U](f: T => U): List[U] = this match { case x :: xs => f(x) :: xs.map(f) case

2015-04-26 20:12:31 4562

原创 Scala Learning(1): 使用Pattern Matching表达JSON

这是一个挺能展现Scala编程方式的例子,对正在熟悉Scala这门语言的开发者很有帮助。Representing JSON用Scala来表达JSON(Java Script Object Notation)结构,{ "firstname" : "John", "lastname" : "Smith", "address" : { "street" : "21 2nd Street

2015-04-26 19:38:09 2130

原创 RDD api整理

RDD[T]Transformations rdd api 备注 persist/cache map(f: T => U) keyBy(f: T => K) 特殊的map,提key flatMap(f: T => Iterable[U]) map的一种,类似UDTF filter(f: T => Boolean) map的一种 distinct(

2015-04-07 16:51:09 8796 4

原创 Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend

Spark Runtime里的主要层次分析,梳理Runtime组件和执行流程,DAGSchedulerJob=多个stage,Stage=多个同种task, Task分为ShuffleMapTask和ResultTask,Dependency分为ShuffleDependency和NarrowDependency面向stage的切分,切分依据为宽依赖维护waiting jobs和active job

2015-03-20 18:28:36 6672

原创 Spark Streaming原理简析

执行流程数据的接收StreamingContext实例化的时候,需要传入一个SparkContext,然后指定要连接的spark matser url,即连接一个spark engine,用于获得executor。实例化之后,首先,要指定一个接收数据的方式,如val lines = ssc.socketTextStream("localhost", 9999)这样从socket接收文本数据。这个步骤

2015-03-19 15:23:05 4753

原创 Spark on Yarn: Cluster模式Scheduler实现

背景主体逻辑具体实现AMYarnAllocatorExecutor背景Spark on Yarn分yarn-cluster和yarn-client两种模式。 本文通过Cluster模式的TaskScheduler实现入手,梳理一遍spark on yarn的大致实现逻辑。 前提我对两种模式以及yarn任务的整体运行逻辑不是很清楚。主体逻辑cluster模式中,使用的TaskSche

2015-02-15 17:52:43 4010

原创 Spark on Mesos: 粗粒度与细粒度实现分析 (markdown排版)

背景Mesos粗粒度Mesos细粒度背景顺着昨天spark standalone实现那篇文章继续扯淡,看看Mesos Scheduler的两种实现的异同。 对我来说,回过头再仔细看Spark在这一层的实现,思路又清晰了许多。Mesos粗粒度CoarseMesosSchedulerBackend,是mesos的粗粒度scheduler backend实现。简单说一下mesos的Scheduler

2015-02-15 15:20:27 2754

原创 Spark on Mesos: 粗粒度与细粒度实现分析

顺着昨天spark standalone实现那篇文章继续扯淡,看看Mesos Scheduler的两种实现的异同。对我来说,回过头再仔细看Spark在这一层的实现,思路又清晰了许多。

2015-02-13 16:05:03 3740 1

原创 梳理对Spark Standalone的理解

spark在这一块的设计是优秀的。图中,app内的SchedulerBackend是可以针对不同资源管理系统实现的,包括没有画出来的ExecutorBackend。这俩兄弟是典型的面向资源的层次上的抽象。另一方面,app内的TaskScheduler是与Task的分配和执行、管理相关的,这部分与下层面向资源的部分是隔离开的,所谓是面向摆放的。换句话说,SchedulerBackend在1,2,3步之后,已经从集群里,获得了本身app的executors资源。通过它,TaskScheduler可以根据自己的

2015-02-12 15:39:00 7946

原创 关于DIMMQ: Discardable In-Memory Materialized Query

最近在看CBO在不同系统里的实现方式,比如flink里在编译时对plan的CBO优化,以及运行时的CBO:Hive、Apache Calcite(即Optiq)的一些内容。今天第一次看到DIMMQ的概念,聊聊我的几点看法。DIMMQ的全称是Discardable In-Memory Materialized Query,提出这个概念,本质上还是为了解决数据重用。只是这次数据的重用不是磁盘上的replication,或是内存里的RDD,而是更细粒度的query级别,具体data set是隐藏在DIMMQ

2015-02-06 13:26:30 1871

原创 Spark的任务调度

本文尝试从源码层面梳理Spark在任务调度与资源分配上的做法。

2014-12-11 15:03:15 15945 6

原创 回顾15个月的工作经历

我又来回顾我的经历了。我把我至今的工作经历分为如下两个阶段,分别对应在百度和现在在阿里这两个时间段。第一个阶段,学习工具自打毕业给自己定下往分布式这块发展后,我看到了许许多多的系统和工具,那些东西对当时的我来说是"不可理解其实质"的。所以,当时我说我对任何开源系统都感兴趣,我想了解和学习每一个开源系统。这是我毕业时候的学习心态和对技术的信仰。以此引发的一件比较激进的事情是,我曾经对我在百度的第一位经理说过这样一句话,"业务是公司的,技术是自己的,所以我要换岗"。大家不要追究于我这句话,不过相信

2014-11-22 22:09:15 3943 1

原创 常见计算框架算子层对比

背景前段时间在为内部自研的计算框架设计算子层,参考对比了一些开源的计算框架的算子层,本文做一个粗粒度的梳理。下面这张图是我对计算框架抽象层次的一个拆分,具体可以参考上周日杭州Spark meetup上我做的Spark SQL分享 slides。

2014-09-05 09:05:05 5393

原创 论文摘抄 - Infobright

Infobright作为开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算等内容,本文是摘抄了infobright论文里最重要的设计点,KnowledgeGird是infobright设计上的核心。brighthouse是一个面向列的数据仓库,在列存储和压缩数据方面,数据压缩比达到10:1。其核心Knowledge Grid(知识网格)层,即一个能自动调节、所存出具特别小的元数据层,替代了索引的功能,提供了数据过滤、统计信息表达、实际数据位置信息等内容,让brightho

2014-08-14 23:43:23 2326

原创 Vertica: 基于DBMS架构的列存储数据仓库

Vertica与传统数据库系统和其他列式数据仓库系统相比的话,在性能上有比较明显的优势,在设计上有一些异同,比较适合ad-hoc查询,OLAP类型的作业。总的来说,Vertica通过列存储减少了io开销,再加上高效的压缩手段,极大节省了磁盘空间,基于此Vertica采用多备份来保证高可用性,并且多备份又能够增强查询性能。在使用和运维角度了,Vertica自带工具帮助用户做物理表的存储,能提供标准SQL接口,也兼容现有的BI、ETL工具方便作业往Vertica上迁移,而且Vertica部署对硬件没有特殊要求,

2014-08-11 00:52:48 9904 3

原创 Spark SQL CLI 实现分析

本文主要介绍了Spark SQL里目前的CLI实现,代码之后肯定会有不少变动,所以我关注的是比较核心的逻辑。主要是对比了Hive CLI的实现方式,比较Spark SQL在哪块地方做了修改,哪些地方与Hive CLI是保持一致的。基本上Spark SQL在CLI这块的实现很靠近Hive Service项目里的CLI模块,主要类继承体系、执行逻辑差不多都一样。Spark SQL修改的关键逻辑在CLIService内的SessionManager内的OperationManager里,将非元数据查询操作的q

2014-08-04 22:40:05 6262

原创 Apache Crunch设计:基础数据处理

Apache Crunch是FlumeJava的实现,为不太方便直接开发和使用的MapReduce程序,开发一套MR流水线,具备数据表示模型,提供基础原语和高级原语,根据底层执行引擎对MR Job的执行进行优化。从分布式计算角度看,Crunch提供的许多计算原语,可以在Spark、Hive、Pig等地方找到很多相似之处,而本身的数据读写,序列化处理,分组、排序、聚合的实现,类似MapReduce各阶段的拆分都可以在Hadoop里找到影子。本文介绍Crunch在数据表示模型、操作原语、序列化处理方面的设计和

2014-08-03 17:43:34 4853

Apache amdatu源码

应网友要求上amdatu源码,方便网友参考!

2012-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除