MapReduce

连载:阿里巴巴大数据实践—数据开发平台

北城以北 提交于 2020-10-06 04:17:55
数据只有被整合和计算,才能被用于洞察商业规律,挖掘潜在信息,从而实现大数据价值,达到赋能于商业和创造价值的目的。面对海量的数据和复杂的计算,阿里巴巴的数据计算层包括两大体系: 数据存储及计算平台(离线计算平台MaxCompute和实时计算平台StreamCompute)、数据整合及管理体系(OneData) 。 阿里数据研发岗位的工作大致可以概括为: 了解需求→模型设计→ETL开发→测试→发布上线→日常运维→任务下线 。与传统的数据仓库开发(ETL)相比,阿里数据研发有如下几个特点: 业务变更频繁——业务发展非常快,业务需求多且变更频繁; 需要快速交付——业务驱动,需要快速给出结果; 频繁发布上线——迭代周期以天为单位,每天需要发布数次; 运维任务多——在集团公共层平均每个开发人员负责上百多个任务; 系统环境复杂——阿里平台系统多为自研,且为了保证业务的发展,平台系统的迭代速度较快,平台的稳定性压力较大。 通过统一的计算平台(MaxCompute)、统一的开发平台、统一的数据模型规范和统一的数据研发规范,可以在一定程度上解决数据研发的痛点。 本文主要介绍MaxCompute和阿里巴巴内部基于MaxCompute的大数据开发套件,并对在数据开发过程中经常遇到的问题和相关解决方案进行介绍。 1、统一计算平台

[源码解析] Flink的groupBy和reduce究竟做了什么

拜拜、爱过 提交于 2020-10-06 00:53:01
[源码解析] Flink的groupBy和reduce究竟做了什么 目录 [源码解析] Flink的groupBy和reduce究竟做了什么 0x00 摘要 0x01 问题和概括 1.1 问题 1.2 概括 0x02 背景概念 2.1 MapReduce细分 2.2 MapReduce细分 2.3 Combine 2.4 Partition 2.5 Shuffle 2.6 Reducer 0x03 代码 0x04 从Flink JAVA API入手挖掘 4.1 GroupBy是个辅助概念 4.1.1 Grouping 4.1.2 UnsortedGrouping 4.2 reduce才是算子 0x05 批处理执行计划(Plan) 0x06 批处理优化计划(Optimized Plan) 0x07 JobGraph 0x08 Runtime 8.1 FlatMap 8.1.1 Combine 8.1.2 Partition 8.2 UnilateralSortMerger 8.2.1 三种线程 8.2.2 MutableObjectIterator 8.3 ReduceDriver 0x08 参考 0x00 摘要 Groupby和reduce是大数据领域常见的算子,但是很多同学应该对其背后机制不甚了解。本文将从源码入手,为大家解析Flink中Groupby和reduce的原理

比较全的大数据技术组件整理以及相关理论论文整理

梦想与她 提交于 2020-10-05 08:32:40
框架 Apache Hadoop:分布式处理架构,结合了 MapReduce(并行处理)、YARN(作业调度)和HDFS(分布式文件系统); Tigon:高吞吐量实时流处理框架。 分布式编程 AddThis Hydra :最初在AddThis上开发的分布式数据处理和存储系统; AMPLab SIMR:用在Hadoop MapReduce v1上运行Spark; Apache Beam:为统一的模型以及一套用于定义和执行数据处理工作流的特定SDK语言; Apache Crunch:一个简单的Java API,用于执行在普通的MapReduce实现时比较单调的连接、数据聚合等任务; Apache DataFu:由LinkedIn开发的针对Hadoop and 和Pig的用户定义的函数集合; Apache Flink:具有高性能的执行时间和自动程序优化; Apache Gora:内存中的数据模型和持久性框架; Apache Hama:BSP(整体同步并行)计算框架; Apache MapReduce :在集群上使用并行、分布式算法处理大数据集的编程模型; Apache Pig :Hadoop中,用于处理数据分析程序的高级查询语言; Apache REEF :用来简化和统一低层大数据系统的保留性评估执行框架; Apache S4 :S4中流处理与实现的框架; Apache Spark

环境篇:Kylin3.0.1集成CDH6.2.0

拟墨画扇 提交于 2020-10-05 06:24:49
环境篇:Kylin3.0.1集成CDH6.2.0 Kylin是什么? Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。 Apache Kylin™ 令使用者仅需三步,即可实现超大数据集上的亚秒级查询。 定义数据集上的一个星形或雪花形模型 在定义的数据表上构建cube 使用标准 SQL 通过 ODBC、JDBC 或 RESTFUL API 进行查询,仅需亚秒级响应时间即可获得查询结果 如果没有Kylin 大数据在数据积累后,需要计算,而数据越多,算力越差,内存需求也越高,询时间与数据量成线性增长,而这些对于Kylin影响不大,大数据中硬盘往往比内存要更便宜,Kylin通过与计算的形式,以空间换时间,亚秒级的响应让人们爱不释手。 注:所谓询时间与数据量成线性增长:假设查询 1 亿条记录耗时 1 分钟,那么查询 10 亿条记录就需 10分钟,100 亿条记录就至少需要 1 小时 40 分钟。 http://kylin.apache.org/cn/ 1 Kylin架构 Kylin 提供与多种数据可视化工具的整合能力,如 Tableau,PowerBI 等,令用户可以使用 BI 工具对 Hadoop 数据进行分析

做了两年java,这些高性能高可用高并发的技术架构你都知道吗?

与世无争的帅哥 提交于 2020-10-05 03:53:23
前言 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠运行等一系列问题与挑战。为此,在实践中提出了许多解决方案,以实现网站高性能、高可靠性、易伸缩、可扩展、安全等各种技术架构目标。 一、分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。 在网站的分层架构中,常见的为3层,即应用层、服务层、数据层。 应用层,具体负责业务和视图的展示; 服务层,为应用层提供服务支持; 数据层,提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。 分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,使网站拥有更多的计算资源,以应对越来越多的用户访问。 所以,虽然分层架构模式最初的目的,是规划软件清晰的逻辑结构,以便于开发维护。但在网站的发展过程中,分层结构对网站支持高并发,向分布式方向的发展至关重要。 二、冗余 网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问

MapperReduce序列化作业(二)——排序

∥☆過路亽.° 提交于 2020-10-04 22:53:54
1数据源 :上次关于手机流量简单统计业务的product 2.要求 :根据总流量得值进行倒序排序,然后得到输出 3.大概逻辑 (1)FlowSort 类:进行序列化和反序列化,排序逻辑接口实现 (2)FlowSortMapper 类:对数据进行封装 (3)FlowSortReducer类:将key和value进行对调然后封装写入(对调位置是因为只有key(形参)是可以排序的,value就不行) (4)FlowSortDriver类; 进行driver操作(在代码下面有具体注释) 这里会把输出类型的时候把k和value对调回来 4.代码 (1)FlowSort package flowsort; import org.apache.hadoop.io.WritableComparable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; public class FlowSort implements WritableComparable<FlowSort> { //上flow流量 private long upFlow; //下flow流量 private long downFlow; //sum流量 private long sumFlow; //空参构造

火影级别的架构师,教你如何解密分布式到微服务的忍术

主宰稳场 提交于 2020-10-04 14:37:18
微服务、云原生、Kubernetes. Service Mesh 是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术,还要深入理解其发展脉络、原理等,才能游刃有余地将其用于现有的项目开发或老系统改造中。 不论你是有十几年研发经验及架构经验的IT老手,还是刚入门系统架构的IT新手,本书都能对你理解分布式架构和微服务架构大有助益。 卷轴目录 第1章 深入理解网络 从国际互联网开始 NIO,一本难念的经 AIO,大道至简的设计与苦涩的现实 网络传输中的对象序列化问题 HTTP的前世今生 分布式系统的基石: TCP/IP 第2章 分布式系统的经典理论 从分布式系统的设计理念说起 分布式系统的一致性原理 分布式系统的基石之ZooKeeper 经典的CAP理论 BASE准则,一个影响深远的指导思想 重新认识分布式事务 第3章 聊聊RPC 从IPG通信说起 古老又有生命力的RPC 从RPC到服务治理框架 基于ZeroC Ice的微服务架构指南 第4章 深入浅析内存 你所不知道的内存知识 内存计算技术的前世今生 内存缓存技术分析 内存计算产品分析 第5章 深入解析分布式文件存储 数据存储进化史 经典的网络文件系统NFS 高性能计算领域的分布式文件系统 企业级分布式文件系统GlusterFS 创新的Linux分布式存储系统一Ceph

腾讯会议大规模任务调度系统架构设计

喜你入骨 提交于 2020-10-04 03:15:41
腾讯会议大规模扩容,快手春节红包流量洪峰:超大规模给云计算系统带来诸多挑战。如何管理海量节点并持续提升可扩展性?如何保证复杂工作流的稳定执行和故障自愈?如何提供高可用、高性能、低成本的计算能力?本文是腾讯云专家工程师李德铠在「云加社区沙龙online」的分享整理,为大家介绍腾讯会议大规模任务调度系统架构设计! 点击视频,查看完整直播回放 疫情期间,很多企业受到了较大冲击,正常的复工生产无法进行。腾讯会议作为一款非常便捷的远程协作工具,成为了国内众多企业日常会议沟通交流的主要平台,这款产品从2019年12月26号正式推出,如何在这么短的时间内有效支撑起国内数以亿计用户的访问量呢?如何保障系统的稳定运行? 下面为大家介绍,腾讯会议8天时间内完成100万核资源扩容背后的技术。 一、两个典型案例 首先介绍腾讯会议大规模扩容,下图所示为腾讯会议的架构图,左右两端的用户通过交换机连接到基站,然后接入腾讯云机房,首先会通过我们的调度中心,还有腾讯后台的接入层,接收到用户发起会议的请求。 拿到请求之后,再通过一些状态机的判断,帮用户加入到对应的会议室里面,然后再跟远端的朋友或同事建立一个音频媒体长链接,再通过混音和流控达到稳定的沟通服务。 今年对于腾讯会议是非常有突破的一年,它在春节期间快速崛起,成为了众多中小企业和学校复工复学必备的APP之一

大数据技术发展(二):Hadoop 技术生态圈的发展

半世苍凉 提交于 2020-10-03 14:29:23
大家好,这里是抖码课堂,抖 码课堂专注提升互联网技术人的软硬实力。 在抖码课堂的公众号中可以听这篇文章的音频,体验更好~~~~ google 的"三驾马车" 我们在上一篇文章<大数据技术起源>中知道了,google 为了解决数据量越来越大的问题,开发了分布式存储技术 GFS 和分布式计算技术 MapReduce,这两个技术奠定了大数据技术的发展。如果 google 对这两个技术不开放出来的话,它的影响力也不会很大,可能很多人就不会知道这两个技术,但是 google 分别在 2003 年和 2004 年将这两个技术以论文的方式发布出来了,从而奠定开源大数据技术的发展,也就是我们现在免费使用的大数据技术 (Hadoop)。 要了解 Hadoop 的发展史,我们得先从 google 的"三驾马车"开始说起,google 分别在 2003 年、2004 年以及 2006 年发布了三篇论文: The Google File System,简称 GFS MapReduce:Simplified Data Processing on Large Clusters Bigtable:A Distributed Storage System for Structured Data 因为上面的三篇论文拉开了开源大数据技术的帷幕,所以我们通俗的将它们叫做"三驾马车",可见,这三篇论文的重要性了。

《MapReduce: Simplified Data Processing on Large Clusters》论文研读

[亡魂溺海] 提交于 2020-10-02 21:28:47
MapReduce 论文研读 说明 :本文为论文 《MapReduce: Simplified Data Processing on Large Clusters》 的个人理解,难免有理解不到位之处,欢迎交流与指正 。 论文地址 : MapReduce Paper 1. MapReduce 编程模型 MapReduce 是 Google 提出的一种用于处理和生成大数据集的 编程模型 ,具象地可以理解成一个 框架 。 该框架含有两个由用户来实现的接口: map 和 reduce , map 函数接收一个键值对,生成一个中间键值对集合, MapReduce 框架会将所有共用一个键的值组合在一起并传递给 reduce 函数, reduce 函数接收此中间键以及该键的值的集合,将这些值合并在一起,生成一组更小的值的集合 。 该编程模型中,数据形式变换可由以下模式表示: map: (k1, v1) -> list(k2, v2) reduce: (k2, list(v2)) -> list(v3) 注 :论文中该模式第二行表示为 reduce: (k2, list(v2)) -> list(v2) ,个人认为由于通常情况下 reduce 会对 list<v2> 做一些处理(特殊情况下不做任何处理,即 reduce 为恒等函数),生成一些不同的值,所以用 list<v3>