大数据计算引擎

【Linux 从基础到进阶】Spark 大数据计算引擎使用 Apache Spark 是一个强大的大数据计算引擎,提供了灵活的 API 和多种计算模型,适用于批处理、流处理和机器学习等多种场景。通过合理配置和优化,Spark 可以显著提升大数据处理的效率。在实践中,熟悉 Spark 的基本操作、内存管理和调度优化,可以帮助开发者充分发挥 Spark 的性能优势。 阅读详情

信息技术和互联网技术的发展,带来了全球数据的爆发式增长。超大规模的数据计算问题成为各大科技公司急需解决的世界级难题。2004年谷歌的MapReduce论文给出了一个可行的大数据计算模型,给大数据并行处理带来了巨大的革命性影响。随后大数据计算取得了飞速发展,针对更细化的大数据应用场景,各种优秀的大数据引擎不断涌现,呈现出百花齐放百家争鸣的景象。在国外一些社区,很多人将大数据的计算引擎分成了四代(如下图所示)。

 

第一代:MapReduce

大数据计算之所以困难,是因为数据规模超出了单机硬件的物理极限。面对TB级、PB级甚至EB级以上的数据规模,单机是无能为力的(延伸阅读《分布式系统缘起及理论》)。MapReduce采用分治策略,将大规模数据集拆分多个独立分片,这些分片可在分布式计算节点上并行计算,最后对各个计算结果进行规约完成整个计算任务输出。MapReduce用无限可扩展的机器来对抗无限增长的数据规模,在理论上解决了大规模数据的计算问题。

MapReduce虽然解决了大数据的能计算问题,但它的速度不够快,一个MapReduce任务通常需要秒级别甚至分钟级别才能跑完。这个速度对于离线计算场景还能接受,但对于实时计算场景显然太慢了。于是为了解决大数据的快计算问题,工业界又开始了对大数据计算引擎的设计探索。

 

第二代:任务的DAG(Tez, Oozie)

第二代计算引擎本质上没有引入新的计算思想,主要是在工程设计上对MapReduce的任务调度过程作了优化。

MapReduce将一个Job(计算任务)分解为Map和Reduce两个阶段。对于复杂算法来说,通过一个MR过程无法实现,需要拆分成多个Job串联运行。但是在MR框架里,Job是最小的调度单位,不同Job彼此独立运行。后一个Job必须等前一个Job跑完才能开始。单个Job本身运行就慢,多个Job串联跑完就更慢了。在编写算法代码时,改一个参数要等几分钟、几十分钟才能看到运行结果,这种开发效率没有一个程序员可以接受。

那有没有办法提高多任务的执行效率呢?第二代计算引擎从这个角度做了工程优化。核心思想是对Job做进一步细化拆分,基于DAG(Directed Acyclic Graph, 有向无环图)工作流对Job调度进行优化,来提高多Job的运行效率。典型代表是Tez和Oozie。

Tez最早是Hortonworks开发的,后捐献给Apache开源。官网地址:https://tez.apache.org/ 。官网介绍如下:

The Apache TEZ® project is aimed at building an application framework which allows for a complex directed-acyclic-graph of tasks for processing data. It is currently built atop Apache Hadoop YARN.

Tez将MapReduce做了进一步拆分:Map拆成Input, Processor, Sort, Merger和Output;Reduce拆成Input, Shuffle, Sort, Merger, Processor和Output。拆分后的单元可以任意组合,组装成大的DAG作业。现在Tez已被Hortonworks用于Hive和Pig任务执行引擎的优化(如下图所示),经测试,性能提升约100倍。

Oozie是Cloudera公司贡献给Apache的基于工作流引擎的开源框架,是用来管理Hadoop作业的工作流调度引擎。与Tez不同,Oozie没有对MR做细化拆分,只是通过DAG工作流来优化Hadoop上的作业调度。Oozie抽象了控制流节点(Control Flow Nodes)和动作节点(Action Nodes)。动作节点可以是MR任务,也可以是其他脚本任务,比如shell脚本、Pig脚本。通过灵活的控制流组装,Oozie可以实现多种脚本任务的高效调度。Oozie的官网地址:http://oozie.apache.org/ 。官网介绍如下: 

Oozie is a workflow scheduler system to manage Apache Hadoop jobs. Oozie Workflow jobs are Directed Acyclical Graphs (DAGs) of actions. 

第三代:Spark

第二代计算引擎以提高多任务运行效率为主要切入点,虽然对Job作了更细粒度的拆分,但是单个Job的数据处理过程的本质不变,依然是基于磁盘IO的批处理方式。Spark使用内存计算来代替磁盘IO,内存计算速度比磁盘IO速度要快4~5个数量级,它将单Job的运行时长从秒、分钟级别一下子降低到毫秒级别。这个速度量级开辟了大数据实时计算的应用场景。针对实时场景,Spark采用微批(micro-batch)方式模拟实现了流处理过程。(关于实时计算的延伸阅读《大数据平台架构及主流技术栈》)

 

Spark最早诞生于加州大学伯克利分校的AMPLab实验室,2013年开源给Apache进入高速发展期,迅速成为Apache的顶级项目(官网地址 http://spark.apache.org/ )。发展至今Spark已包含了大数据领域常见的各种计算框架:

  • Spark Core用于离线计算

  • Spark SQL用于交互式查询

  • Spark Streaming用于实时流计算

  • Spark MLlib用于机器学习

  • Spark GraphX用于图计算

 

传统的MapReduce中每个过程都需要磁盘IO,数据流无法循环使用。Spark抽象了RDD(Resilient Distributed Dataset, 弹性分布式数据集)数据模型作为通用计算单元。RDD是存储在内存中的数据结构,在并行环境中可以被重复使用,减少了中间数据的磁盘IO操作。RDD之间存在依赖关系(使用DAG描述),当某一部分丢失或者出错,只需根据血缘关系进行局部计算来重建。MapReduce的话容错需要重新计算,成本较高。

和Tez一样,Spark也细化了对数据的操作,在Spark中称为算子。Spark算子分为两类:Transform和Action。Transform算子是一种延迟性操作,也就是把一个RDD转换成另外一个RDD而不是马上执行,不会提交job。常用的有:map,flatmap,join,groupBykey等。Action算子会对RDD 计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如 HDFS)中。每个action都会提交一个job。常用的action有reduce,collect,count,take等。Spark的完整计算过程也是用DAG来构建,DAG中的点是RDD,线是算子。通过灵活的组装,可以实现复杂的算法过程。

 

第四代:Flink

Spark虽然也支持流计算,但它是用微批(micro-batch)来模拟流实现的,本质上还是批处理,实时处理速度在百毫秒到秒这个级别,这个速度只能满足近实时的统计分析场景。对于实时性要求更高的连续流场景,Spark就不太适用了。这类场景就需要使用第四代计算引擎Flink了。

Flink诞生于欧洲的一个大数据研究项目,原名 StratoSphere。该项目是柏林工业大学的一个研究性项目,早期专注于批计算。2014 年,StratoSphere 项目中的核心成员孵化出 Flink,并在同年将 Flink 捐赠 Apache,后来成为 Apache 的顶级大数据项目。其官方地址是https://flink.apache.org/ 。官网介绍如下:

Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.

Flink是面向连续流设计的计算引擎。在Flink中,一切都是流,数据流是Flink基本处理模型。Flink从设计之初秉持了一个观点:批是流的特例(批是一种有边界的数据流),它的批处理也是通过流来模拟实现的。

为了描述数据处理过程,Flink在数据流上使用操作符,每个操作符生成一个新的数据流。从操作符、DAG和上下游操作符的连接来看,整体模型和Spark大体相同。Flink的定点相当于Spark中的stage,将操作符划分为定点的过程和Spark DAG中划分为stage的过程基本相同。但是在DAG执行上,Flink和Spark有一个显著的区别:在Flink的流执行模式中,事件在一个节点上处理后的输出可以发送到下一个节点进行即时处理,这样,执行引擎就不会有任何的延迟。相应地,所有的节点都需要同时运行。相反,Spark的微批执行和其正常的批量执行没有区别,因为只有在上游阶段完成微批量处理之后,下游阶段才开始处理其输出。这是Spark实时性不如Flink的一个根本原因。

除了流批计算,Flink还有一些高级功能,比如精密的状态管理、事件时间支持以及精确一次(Exactly-Once)的状态一致性保障等。

 

总结

虽然业内把大数据计算引擎分为四代,但他们并不是针对同一个场景的技术更新换代,而是各有各的使用场景,新代计算引擎并不能完全取代旧的计算引擎。比如基于内存计算的Spark,虽然速度快,但是内存资源比磁盘资源成本更高,对于离线计算场景秒级别分钟级别的计算速度完全可以接受,为了节省资源,还是会选择MapReduce引擎。

 

延伸阅读

 

 

大数据之Flink流式计算引擎 Flink DataFlow 数据的分类 有界数据 离线的计算 效率:硬件相同的情况下:时间 无界数据 实时的计算 效率:硬件环境相同的情况下,吞吐量:数据处理的数量、延迟:结果输出的时间—数据接收的时间 状态 有状态 无状态 窗口函数 滚动窗口 数量–时间 不重复 滑动窗口 可以重复 滑动的间隔–窗口的宽度 会话窗口 不会重复 基于某一个用户的未操作时间 时间 事件时间 到达时间 处理时间 Flink简介 大数据计算引擎 第一代: 阅读详情

相关推荐

大数据计算引擎本地化—Spark

在测试中,我们发现可以在低基维度的情况下,将整体聚合性能提升到原来的2倍。在SQL中,涉及到Spill的算子有Sort、Aggregation、Join,CH自带的Sort和Aggregation实现对Spill实现良好,但对于Join算子,CH高度优化的算法是全内存的Hash Join,该算法不支持Spill,其内置的支持Spill的Join算法有Grace Hash Join和merge Join,而Merge Join因存在IO问题,所以我们决定在社区的Grace Hash Join算法上进行优化。

Reische的博客 1324

大数据处理框架及引擎介绍

主流的大数据处理框架包括以下三类五种:1、仅批处理框架:Apache Hadoop2、仅流处理框架:Apache Storm、Apache Samza3、混合框架:Apache Spark、Apache Flink

julyclj55555的博客 1万+

【AI大数据计算原理与代码实例讲解】图计算引擎

【AI大数据计算原理与代码实例讲解】图计算引擎 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 大数据时代的图计算 随着互联网、社交网络、物联网等技术的快速发展,现实世界中越来越多的信息呈现出复杂的关联

AI天才研究院 821

大数据(三)大数据计算引擎

文章目录说明分享大数据计算引擎批处理MapReducetez流批处理Flinkspark总结 说明 本博客每周五更新一次。 介绍过大数据平台的搭建、应用和存储,本期分享下大数据计算。 分享 大数据博客列表 大数据计算引擎 什么是计算引擎? 计算引擎就是一种计算规则的高度抽象聚合体,使用者按照指定的方式编写对应接口代码,然后执行就能得到需要的结果(前提没有bug)。 大数据计算场景分为两个种:批处理(历史文件)和流处理(实时数据)处理,日常看到计算引擎划分: 第一代:批处理代表MapRedu

幻神舞的专栏 3368

Applied Intelligence投稿经验分享(正在投稿中)

这几天在投稿Applied Intelligence这个期刊,过程很曲折,反反复复,因此写一篇经验分享,希望能记录一下自己的过程,也能给其他人一些帮助(可以在评论区讨论),提醒一下,一定要写一些声明,不会写、不知道写啥就看第四章的第二个问题。

weixin_55988068的博客 1万+

PCB工程师必看:别再搞错1078玻纤布的Dk了,手把手教你算等效介电常数

本文为PCB工程师提供了1078玻纤布等效介电常数(Dk)的详细计算指南,帮助解决高速设计中的信号完整性问题。通过解析玻纤布结构、混合介质理论和实战计算方法,指导工程师准确设置EDA工具参数,避免常见的Dk计算误区,提升设计精度和仿真准确性。

weixin_42546392的博客 399

大数据计算引擎原理和架构

随着互联网技术的广泛应用,5G以及物联网和云计算的迅猛发展,带动了全球数据爆发式增长,随之而来的是不断增长的数据规模和数据的动态快速产生,这对大数据计算引擎带来了极大的挑战,离线批处理、实时计算和高吞吐量催生了新技术的发展和旧技术的革新,计算引擎出现了百花齐放的景象。计算引擎大致分两类,离线计算和实时计算,下面为大家介绍几个主流的大数据计算引擎。

m0_59777389的博客 2077

AI视频生成成本优化实战:混合架构与硬件选型

AI视频生成技术正面临效果与成本的二元博弈,其核心挑战在于高昂的推理算力消耗与黑箱服务的不确定性。从技术原理看,视频生成依赖扩散模型等深度学习架构,通过多轮迭代实现像素级合成,这导致GPU显存占用和电力消耗呈指数级增长。在工程实践中,采用混合推理架构能有效平衡成本与质量,例如云端处理关键帧配合本地渲染过渡帧,实测可降低58%支出。硬件选型方面,消费级显卡魔改与边缘计算设备为中小企业提供了可行方案,如RTX 3090显存扩容或Jetson AGX边缘部署。当前AI视频应用已渗透电商直播、新闻制作等领域,但需警

weixin_29531177的博客 293

一口气说完MR、Storm、Spark、SparkStreaming和Flink

这是彭文华的第92篇原创一直想写一篇大数据计算引擎的综述,但是这个话题有点大。今天试试看能不能一口气写完。没想到一口气从7点写到了凌晨2点大数据计算的起点是Hadoop的MapReduce...

weixin_52346300的博客 1879

计算机组成原理实验二 运算器组成实验

事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。

qq_63574533的博客 1449

【AUTOSAR OS】调度表管理模块深度解析

本文深入解析AUTOSAR OS调度表的实现机制。调度表通过预定义到期点序列控制任务激活时序,支持周期性执行、多核协同和容错处理。核心数据结构包括调度表控制块(STCB)、配置结构和到期点动作。关键函数涵盖初始化、启动、到期点处理及链表管理,采用O(n)时间复杂度。以发动机控制为例展示配置与使用方式,并探讨显式同步、时间容错等高级特性。最后提出EP数量控制、链表优化等性能建议,为汽车ECU时间触发系统开发提供参考。

1605

一文让你彻底了解大数据实时计算引擎 Flink

前言本文首发自我的知识星球系列文章《大数据重磅炸弹实时计算引擎 Flink》基础篇第二篇在上一篇文章你公司到底需不需要引入实时计算引擎?中我讲解了日常中常见的实时需求...

http://www.54tianzhisheng.cn/ 837

YOLO26 实战全流程:从数据集标注到端到端无NMS推理(完整版,附ProgLoss核心调参技巧+避坑指南)

本章节是实战经验的精华❌ 数据集标注不规范,导致模型精度低 → ✅ 严格遵守工业级标注规范,标注框紧贴目标边缘,不要漏标/多标;❌ 训练时未使用预训练权重,导致收敛极慢 → ✅ 必须开启,预训练权重能让模型快速收敛;❌ ProgLoss参数调整幅度过大,导致训练崩溃 → ✅ 每次只调整一个参数,幅度±0.02即可,循序渐进;❌ 推理时强行添加NMS参数,画蛇添足 → ✅ YOLO26无需NMS,推理命令中不要加conf/iou参数,否则会降低推理速度;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1141

【大数据】计算引擎:Spark核心概念

十分钟,一文讲明白复杂抽象的Spark核心概念。

BugMan的博客 4912

基于STM32设计的数字电子秤

当前项目是采用采用STM32+称重模块+OLED实现了简单的电子秤项目,称重模块上采用24位的ADC芯片,精度较高。实现了称重,校准、去皮等功能。

1万+

使用MATLAB/Simulink对一个简单的智能家居温湿度监测与控制系统进行建模和仿真

目录手把手教你学Simulink——基于Simulink的智能家居温湿度监测与控制仿真建模示例一、背景介绍二、所需工具和环境三、步骤详解步骤1:创建Simulink模型步骤2:构建传感器模块步骤3:添加控制器步骤4:构建执行器模块步骤5:连接各部分步骤6:设置仿真参数步骤7:添加观测器步骤8:运行仿真并分析结果四、总结 智能家居系统中的温湿度监测与控制系统是一个典型的物联网(IoT)应用场景,它通过传感器收集环境数据,并根据预设条件自动调节室内温度和湿度以提高居住舒适度。本指南将介绍如何使用MATLAB/S

xiaoheshang_123的博客 291

大数据的4代计算引擎

概述 在如今数据爆炸的时代,企业的数据量与日俱增,大数据产品层出不穷。 出现了很多热门的开源社区,其中著名的有 Hadoop、Storm,以及后来的 Spark,他们都有着各自专注的应用场景。Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark 的火热或多或少的掩盖了其他分布式计算的系统身影。就像 Flink,也就在这个时候默默的发展着。 大...

MannerXu的博客 1500

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【大数据】计算引擎MapReduce

十分钟,一文,MapReduce核心概念、原理快速入门。

BugMan的博客 3160

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

大数据的计算引擎分代--4代

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138255的博客 763

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

实时和离线,大数据计算引擎谁主沉浮

摘要:今天分享的主要内容是实时、离线大数据计算引擎的简介和对比,希望通过此文各位同学能收获一二。本文主要内容包括:1、Flink简介2、Spark简介3、F...

学而知之@的博客 2678

大数据第二篇-计算引擎

大数据第二篇-计算引擎

ceba20200309的博客 649

Flink系列之大数据分布式计算引擎设计实现剖析

Flink系列之大数据分布式计算引擎设计实现剖析

luoyepiaoxue2014的博客 555

四代大数据计算引擎

参考:https://www.cnblogs.com/frankdeng/p/9400622.html 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有Hadoop、Storm,以及后来的Spark,他们都有着各自专注的应用场景。Spark掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark的火热或多或少的掩盖了其他分布式计算的系统身影。就像Flin...

allensandy的博客 770

大数据计算引擎——Flink学习

从该网址上的内容中摘抄出来的,如有侵权,联系,可删,目的是做笔记记录,放在博客上易于查找~~~https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展:     Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。 第一代的计算引擎,无疑就是 Had...

凝眸伏笔的博客 1017

大数据计算引擎MR架构和原理总结

MapReduce 是大数据领域里程碑式的技术,它用简洁的模型证明了大规模分布式计算的可行性,并奠定了整个生态的基础(HDFS+YARN+MR)。然而,其基于磁盘的 Shuffle 机制导致的高延迟问题,催生了以和Spark:提出了弹性分布式数据集(RDD)模型,通过内存计算和有向无环图(DAG)调度器,将多个 MapReduce 阶段组合在一起,尽可能地将中间结果保存在内存中,极大地提升了性能。Flink:开创了流处理优先的架构,实现了真正的流批一体,并提供了更高级的 API 和更优秀的性能。

ITHomeZSL的博客 954
上一篇: 大数据平台架构及主流技术栈
下一篇: 高可用架构设计
互联网工匠
博客等级 码龄18年 43粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值