
Spark生态核心技术
常耀斌
CTO,AI科学家。2024年,清华大学出版社发行《大数据架构之道和项目实战》《AI赋能企业数字化转型》《深度学习和大模型实战》
展开
-
Spark和Hadoop的架构区别解读
总的来说,Spark采用更先进的架构,使得灵活性、易用性、性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高。我总结,具体表现在如下几个方面:框架:Hadoop:MapRedcue由Map和Reduce两个阶段,并通过shuffle将两个阶段连接起来的。但是套用MapReduce模型解决问题,不得不将问题分解为若干个有依赖关系的子问题,每个子问题对应一个...原创 2018-09-12 15:06:59 · 977 阅读 · 0 评论 -
Spark技术优势总结
优秀的数据批处理框架:作业任务在进行MapReduce数据批处理时,作业任务需要读取HDFS文件作为数据输入进行聚合,而统计输出的结果也要存储到HDFS上。如果是一次数据处理需要运行多个MapReduce作业,其中间结果通过HDFS保存与传递,如果是多次HDFS读写操作,会产生I/O读写效率低和处理时间长的瓶颈。但是,如果采用Spark进行数据批处理时,替代多个MapReduce作业任务的是...原创 2018-07-24 18:35:05 · 1278 阅读 · 1 评论 -
Spark Yarn核心概念说明
1) Driver:和ClusterManager通信,进行资源申请、任务分配并监督其运行状况等。2) ClusterManager:指YARN。3) DAGScheduler:把spark作业转换成Stage的DAG图。4) TaskScheduler:把Task分配给具体的Executor。5) ResourceManager:负责整个集群的资源管理和分配。6) Appli...原创 2018-07-24 18:40:24 · 484 阅读 · 0 评论 -
Spark2.2.0集群构建方法
安装Spark2.2.0,构建Spark开发环境下载spark安装包,下载地址spark官网:http://spark.apache.org/downloads.html,选择spark-2.2.0-bin-hadoop2.7版本 新建安装目录:/usr/local 解压 tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz 重命名mv spark-2.2.0-...原创 2018-07-25 10:26:07 · 251 阅读 · 0 评论 -
SparkMlib之协同过滤案例实战
推荐药品以下是用户的数据信息,数据集的数据格式是:lable是表示用户类型(1-4),后面是特征值表示药品类型(10-20)和疗效(0-5)。20条数据集如下,1 11 21 12 31 13 11 14 01 15 12 11 12 12 22 15 12 14 32 11 12 13 52 12 13 17 43 12 23 15 13 14 33 11 ...原创 2018-07-30 10:16:34 · 665 阅读 · 1 评论 -
Spark RDD核心知识点总结
RDD介绍Resilient Distributed Datasets,意为容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。 RDD的特点它是在集群节点上的不可变的、已分区的集合对象。 通过并行转换的方式来创建如(map, filter, join, etc)。 失败自动重建。 可以控制...原创 2018-07-26 14:19:51 · 654 阅读 · 2 评论 -
Spark最权威Yarn架构工作原理图解(Yarn Client原创)
原创 2018-08-02 09:19:32 · 766 阅读 · 0 评论 -
Spark最权威Yarn架构工作原理图解(Yarn Cluster原创)
原创 2018-08-02 09:18:59 · 909 阅读 · 0 评论 -
Spark源码之调度原理图解
原创 2018-07-30 17:14:04 · 294 阅读 · 0 评论 -
Spark核心概念讲解(任务和组件)
原创 2018-07-30 17:11:33 · 455 阅读 · 1 评论 -
Spark Streaming整合Kafka实现网站点击流实时统计
安装并配置zk 安装并配置Kafka 启动zk 启动Kafka 创建topicbin/kafka-topics.sh --create --zookeeper node1.itcast.cn:2181,node2.itcast.cn:2181 \--replication-factor 3 --partitions 3 --topic urlcountpackage cn....原创 2018-12-24 16:07:02 · 601 阅读 · 0 评论 -
Spark集群安装
安装 机器部署准备两台以上Linux服务器,安装好JDK1.7 下载Spark安装包 http://www.apache.org/dyn/closer.lua/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.6.tgz上传解压安装包上传spark-1.5.2-bin-hadoop2.6.tgz安装包到Linux上解压安装包到指定...原创 2018-12-24 16:09:08 · 266 阅读 · 0 评论 -
Spark Mlib 数据类型总结
本地变量的基类是Vector,支持密集向量Dense Vector和稀疏向量Sparse Vector,scala实现如下:val dv:Vector = Vector.dense(5.0,6.0,7.0)val sv:Vector = Vector.sparse(3,Array(0,2),Array(1.0,3.0))标点类型LabeledPoint,由一个标签和本地向量组成,标签可...原创 2018-07-24 11:18:34 · 657 阅读 · 0 评论 -
Kafka的工作原理和ZK在其中的作用详解
Kafka使用zk的分布式协调服务,将生产者,消费者,消息储存(broker,用于存储信息,消息读写等)结合在一起。同时借助zk,kafka能够将生产者,消费者和broker在内的所有组件在无状态的条件下建立起生产者和消费者的订阅关系,实现生产者的负载均衡。1. broker在zk中注册kafka的每个broker(相当于一个节点,相当于一个机器)在启动时,都会在zk中注册,告诉zk其br...原创 2018-08-10 14:33:03 · 9183 阅读 · 0 评论 -
Spark生态为何一枝独秀并引领企业云计算平台?
Spark具有运行速度快、易用性好、通用性。Spark 是在借鉴了 MapReduce 思想之上发展而来的,继承了其分布式并行计算的优点并改进了 MapReduce 明显的缺陷,具体优势分析如下:Spark 把中间数据放到内存中,迭代运算效率高。MapReduce 中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而 Spark 支持 DAG 图的分布式并行计算的编程框架,减少了迭代过...原创 2018-08-16 09:34:16 · 336 阅读 · 0 评论 -
Spark程序的端到端运行架构解读
Spark任务提供多层分解的概念,Spark组件将用户的应用程序分解为内部执行任务并提供执行容器,资源管理为spark组件提供资源管理和调度。Spark任务:应用程序:由一个driver program和多个job构成; job:由多个stage组成; stage:对应一个taskset, taskset:对应一组关联的相互之间没有shuffle依赖关系的task组成。 task:...原创 2018-09-12 14:51:29 · 370 阅读 · 0 评论 -
Spark TaskScheduler的源码图解
TaskScheduler模块用于与DAGScheduler交互,负责任务的具体调度和运行。任务调度模块基于两个Trait:TaskScheduler和 SchedulerBackend。TaskScheduler:定义了任务调度模块的对外接口(submitTasks等),供DAGScheduler调用。TaskSchedulerImpl是TaskScheduler的具体实现,完成资源与任...原创 2018-09-12 14:42:31 · 404 阅读 · 0 评论 -
Spark shuffle原理和详细图解
shuffle 中Map任务产生的结果会根据所设置的partitioner算法填充到当前执行任务所在机器的每个桶中。 Reduce任务启动时时,会根据任务的ID,所依赖的Map任务ID以及MapStatus从远端或本地的BlockManager获取相应的数据作为输入进行处理。 Shuffle数据必须持久化磁盘,不能缓存在内存。Hash方式:shuffle不排序,效率高。 生成MXR个...原创 2018-09-12 11:30:50 · 688 阅读 · 0 评论 -
Spark 存储原理详细图解
Storage模块主要分为两层:通信层:storage模块采用的是master-slave结构来实现通信层,master和slave之间传输控制信息、状态信息,这些都是通过通信层来实现的。 存储层:storage模块需要把数据存储到disk或是memory上面,有可能还需replicate远端,这都是由存储层来实现和提供相应接口。 Storage模块提供了统一的操作类BlockManage...原创 2018-09-12 11:22:19 · 1512 阅读 · 0 评论 -
SparkStreaming源码运行架构图解
Spark Streaming基本原理:是将流数据分成小的时间片段(几秒),以类似批处理方式来处理这部分小数据。处理流程:Spark Streaming把实时输入数据流以时间片Δt (如1秒)为单位切分成块 Spark Streaming会把每块数据作为一个RDD,并使用RDD操作处理每一小块数据 每个块都会生成一个Spark Job处理 最终结果也返回多块Spark Strea...原创 2018-09-12 10:16:36 · 610 阅读 · 0 评论 -
Storm案例实战
需求:实时获取上网用户数据(APP的IP地址),并在地图展示出来用户的位置信息。 实时计算的解决方案:Storm0.8.2+Hadoop2.2.0+JDK1.7+ZooKeeper3.4.6 架构设计数据文件A:用户,手机号,手机MAC地址,上网地址,访问网站,网址类型,上行数据包数量,下行数据包数量,上行总量,下行总量,HTTP访问返回值141,3276006 185...原创 2018-09-04 11:17:54 · 3726 阅读 · 0 评论 -
初识Storm
Storm,分布式的实时流处理框架,处理对象是流Stream,就是连续的元组Tuple,源头Spout,如水龙头的管口,流出的Tuple转换为Bolt(水处理器,或者叫处理容器),然后可以导向另外一个容器Bolt(水处理器,或者叫处理容器)。为了提升效率,可以多接一些Bolt,这样形成一张有向无环图,Topology(拓扑),实际上就是一个流转换图。角色和组件对比:核心组件:主节...原创 2018-08-29 17:24:42 · 547 阅读 · 0 评论 -
Storm 与 Spark Streming对比分析
实现和编程 API Storm 主要是由 Clojure 语言实现,Spark Streaming 是由 Scala 实现。如果你想看看这两个框架是如何实现的或者你想自定义一些东西你就得记住这一点。Storm 是由 BackType 和Twitter 开发,而 Spark Streaming 是在 UC Berkeley 开发的。Storm 提供了 Java API,同时也支持其他语言的 ...原创 2018-08-23 09:35:37 · 316 阅读 · 0 评论 -
Spark存储模式的工作原理详解
Spark存储模式使用了Master/Slave,RPC机制进行通信,Master负责元数据管理,Slave负责上报本地数据状态。存储模式架构说明:1. Executor启动时创建SparkEnv,SparkEnv创建BlockManager和数据同步的服务BlockTranferService;2. BlockManager创建后,会创建BlockManagerMasterEndPo...原创 2018-08-22 09:54:36 · 445 阅读 · 0 评论 -
深入分析Spark Core中的多种核心技术
Spark Core,主要提供Spark应用的运行时环境,包括以下功能: 基础能力: SparkConf:用于管理Spark应用程序的各种配置信息; 内置的基于Netty的RPC框架,包括同步和异步的多种实现。RCP框架时Spark各组件间通信的基础; 事件总线: SparkContext内部各组件间使用事件—监听器模式异步调...原创 2018-08-21 11:10:57 · 743 阅读 · 0 评论 -
深入分析Spark对MapReduce的底层技术优化
Spark对MapReduce做了大量的改进和优化,主要包括以下个方面:1)磁盘I/O的读写优化:中间结果缓存在内存中:随着实时大数据应用越来越多,Hadoop作为离线的高吞吐、低响应框架已不能满足这类需求。Hadoop MapReduce的map端将中间输出和结果存储在磁盘中,reduce端又需要从磁盘读写中间结果,从而造成磁盘I/O成为瓶颈。Spark则允许将map端的中间输出和结果缓...原创 2018-08-21 10:59:28 · 1204 阅读 · 0 评论 -
Spark WordCount原理解析
import org.apache.spark.{SparkConf, SparkContext}/** * Created by cyb on 2018/9/14. */object WordCount { def main(args: Array[String]) { //非常重要,是通向Spark集群的入口 val conf = new SparkConf(...原创 2018-12-24 16:18:06 · 584 阅读 · 0 评论