数据处理

Spark入门(六)--Spark的combineByKey、sortBykey

大兔子大兔子 提交于 2020-01-12 01:35:42
spark的combineByKey combineByKey的特点 combineByKey的强大之处,在于提供了三个函数操作来操作一个函数。第一个函数,是对元数据处理,从而获得一个键值对。第二个函数,是对键值键值对进行一对一的操作,即一个键值对对应一个输出,且这里是根据key进行整合。第三个函数是对key相同的键值对进行操作,有点像reduceByKey,但真正实现又有着很大的不同。 在 Spark入门(五)--Spark的reduce和reduceByKey 中,我们用reduce进行求平均值。用combineByKey我们则可以求比平均值更为丰富的事情。现在有一个数据集,每一行数据包括一个a-z字母和一个整数,其中字母和整数之间以空格分隔。现在要求得每个字母的平均数。这个场景有点像多个学生,每个学生多门成绩,求得学生的平均分。但这里将问题简化,其中数据集放在grades中。数据集以及下面的代码都可以在 github 上下载。 combineByKey求多个平均值 scala实现 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.{SparkConf, SparkContext} object SparkCombineByKey { def main(args: Array

Spark入门(五)--Spark的reduce和reduceByKey

血红的双手。 提交于 2020-01-12 00:27:25
reduce和reduceByKey的区别 reduce和reduceByKey是spark中使用地非常频繁的,在 字数统计 中,可以看到reduceByKey的经典使用。那么reduce和reduceBykey的区别在哪呢? reduce 处理数据时有着一对一的特性,而 reduceByKey 则有着多对一的特性。比如reduce中会把数据集合中每一个元素都处理一次,并且每一个元素都对应着一个输出。而reduceByKey则不同,它会把所有key相同的值处理并且进行归并,其中归并的方法可以自己定义。 例子 在单词统计中,我们采用的就是reduceByKey,对于每一个单词我们设置成一个键值对(key,value),我们把单词作为key,即key=word,而value=1,因为遍历过程中,每个单词的出现一次,则标注1。那么reduceByKey则会把key相同的进行归并,然后根据我们定义的归并方法即对value进行累加处理,最后得到每个单词出现的次数。而reduce则没有相同Key归并的操作,而是将所有值统一归并,一并处理。 spark的reduce 我们采用scala来求得一个数据集中所有数值的平均值。该数据集包含5000个数值,数据集以及下列的代码均可从 github 下载,数据集名称为"avg"。为求得这个数据集中的平均值,我们先用map对文本数据进行处理

Apache Hadoop 简介

丶灬走出姿态 提交于 2020-01-11 14:38:44
Apache Hadoop Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件。 Apache Hadoop软件库是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库本身不是设计用来依靠硬件来提供高可用性,而是旨在检测和处理应用程序层的故障,因此可以在计算机集群的顶部提供高可用性的服务,而每台计算机都容易出现故障。 了解更多» 下载» 使用入门» 模组 该项目包括以下模块: Hadoop Common :支持其他Hadoop模块的通用实用程序。 Hadoop分布式文件系统(HDFS™) :一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。 Hadoop YARN :用于作业调度和群集资源管理的框架。 Hadoop MapReduce :基于YARN的系统,用于并行处理大数据集。 Hadoop Ozone : Hadoop 的对象存储。 Hadoop Submarine : Hadoop 的机器学习引擎。 谁在使用Hadoop? 各种各样的公司和组织都将Hadoop用于研究和生产。鼓励用户将自己添加到Hadoop PoweredBy Wiki页面 。 相关项目 Apache的其他与Hadoop相关的项目包括: Ambari™ :基于Web的工具,用于供应

Hadoop优化 第一篇 : HDFS/MapReduce

跟風遠走 提交于 2020-01-11 05:00:52
比较惭愧,博客很久(半年)没更新了。最近也自己搭了个博客,wordpress玩的还不是很熟,感兴趣的朋友可以多多交流哈!地址是:http://www.leocook.org/ 另外,我建了个QQ群:305994766,希望对大数据、算法研发、系统架构感兴趣的朋友能够加入进来,大家一起学习,共同进步(进群请说明自己的公司-职业-昵称)。 1.应用程序角度进行优化 1.1.减少不必要的reduce任务 若对于同一份数据需要多次处理,可以尝试先排序、分区,然后自定义InputSplit将某一个分区作为一个Map的输入,在Map中处理数据,将Reduce的个数设置为空。 1.2.外部文件引用 如字典、配置文件等需要在Task之间共享的数据,可使用分布式缓存DistributedCache或者使用-files 1.3.使用Combiner combiner是发生在map端的,作用是归并Map端输出的文件,这样Map端输出的数据量就小了,减少了Map端和reduce端间的数据传输。需要注意的是,Combiner不能影响作业的结果;不是每个MR都可以使用Combiner的,需要根据具体业务来定;Combiner是发生在Map端的,不能垮Map来执行(只有Reduce可以接收多个Map任务的输出数据) 1.4.使用合适的Writable类型 尽可能使用二进制的Writable类型,例如

想成为大数据开发工程师,你必须掌握的开发流程图是这样的

痴心易碎 提交于 2020-01-11 02:34:58
1、数据处理主要技术 Sqoop :(发音:skup)作为一款开源的离线数据传输工具,主要用于Hadoop(Hive) 与传统数据库(MySql,PostgreSQL)间的数据传递。它可以将一个关系数据库中数据导入Hadoop的HDFS中, 也可以将HDFS中的数据导入关系型数据库中。 Flume: 实时数据采集的一个开源框架,它是Cloudera提供的一个高可用用的、高可靠、分布式的海量日志采集、聚合和传输的系统。目前已经是Apache的顶级子项目。使用Flume可以收集诸如日志、时间等数据 并将这些数据集中存储起来供下游使用(尤其是数据流框架,例如Storm)。和Flume类似的另一个框架是Scribe(FaceBook开源的日志收集系统,它为日志的分布式收集、统一处理提供一个可扩展的、高容错的简单方案)  Kafka: 通常来说Flume采集数据的速度和下游处理的速度通常不同步,因此实时平台架构都会用一个消息中间件来缓冲,而这方面最为流行和应用最为广泛的无疑是Kafka。它是由LinkedIn开发的一个分布式消息系统, 以其可以水平扩展和高吞吐率而被广泛使用。目前主流的开源分布式处理系统(如Storm和Spark等)都支持与Kafka 集成。 Kafka是一个基于分布式的消息发布-订阅系统,特点是速度快、可扩展且持久。与其他消息发布-订阅系统类似

Flink初探-为什么选择Flink

只谈情不闲聊 提交于 2020-01-11 02:05:49
本文主要记录一些关于Flink与storm,spark的区别, 优势, 劣势, 以及为什么这么多公司都转向Flink. What Is Flink 一个通俗易懂的概念: Apache Flink 是近年来越来越流行的一款开源大数据计算引擎,它同时支持了批处理和流处理. 这是对Flink最简单的认识, 也最容易引起疑惑, 它和storm和spark的区别在哪里? storm是基于流计算的, 但是也可以模拟批处理, spark streaming也可以进行微批处理, 虽说在性能延迟上处于亚秒级别, 但也不足以说明Flink崛起如此迅速(毕竟从spark迁移到Flink是要成本的). 最显而易见的原因 网上最热的两个原因: Flink灵活的窗口 Exactly once语义保证 这两个原因可以大大的解放程序员, 加快编程效率, 把本来需要程序员花大力气手动完成的工作交给框架, 下面简单介绍一下这两个特征. 1.什么是 Window 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。 窗口可以是时间驱动的(Time Window, 例如: 每30秒钟

学习笔记--Hadoop

心已入冬 提交于 2020-01-10 22:18:52
参考来源: http://hadoop.apache.org/docs/r1.0.4/cn/index.html Hadoop安装 单机模式 伪分布式模式 完全分布式模式 Hadoop集群搭建 通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves。 Hadoop 命令 archive 用法:hadoop archive -archiveName NAME * 创建一个hadoop档案文件 distcp 用法:hadoop distcp 递归地拷贝文件或目录 fs 用法:hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS] 运行一个常规的文件系统客户端。 fsck 用法:hadoop fsck [GENERIC_OPTIONS] [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]] 运行HDFS文件系统检查工具 jar 用法:hadoop jar [mainClass] args... 运行jar文件。用户可以把他们的Map Reduce代码捆绑到jar文件中,使用这个命令执行。 job 用法

Spark 数据倾斜及其解决方案

老子叫甜甜 提交于 2020-01-10 18:12:19
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/lqMu6lfk-Ny1ZHYruEeBdA 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平台、移动浏览器、推荐广告和大数据、人工智能等相关开发和架构。目前在vivo智能平台中心从事 AI中台建设以及广告推荐业务。擅长各种业务形态的业务架构、平台化以及各种业务解决方案。 本文从数据倾斜的危害、现象、原因等方面,由浅入深阐述Spark数据倾斜及其解决方案。 一、什么是数据倾斜 对 Spark/Hadoop 这样的分布式大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。 对于分布式系统而言,理想情况下,随着系统规模(节点数量)的增加,应用整体耗时线性下降。如果一台机器处理一批大量数据需要120分钟,当机器数量增加到3台时,理想的耗时为120 / 3 = 40分钟。但是,想做到分布式情况下每台机器执行时间是单机时的1 / N,就必须保证每台机器的任务量相等。不幸的是,很多时候,任务的分配是不均匀的,甚至不均匀到大部分任务被分配到个别机器上,其它大部分机器所分配的任务量只占总得的小部分。比如一台机器负责处理 80% 的任务,另外两台机器各处理 10% 的任务。 『不患多而患不均』,这是分布式环境下最大的问题。意味着计算能力不是线性扩展的

分布式大数据系统概览(HDFS/MapReduce/Spark/Yarn/Zookeeper/Storm/SparkStreaming/Lambda/DataFlow/Flink/Giraph)

痴心易碎 提交于 2020-01-10 17:39:19
分布式大数据处理系统概览(一)   本博文主要对现如今分布式大数据处理系统进行概括整理,相关课程为华东师范大学数据科学与工程学院《大数据处理系统》,参考 大夏学堂 ,下面主要整理 HDFS/MapReduce/Spark/Yarn/Zookeeper/Storm/SparkStreaming/Lambda/DataFlow/Flink/Giraph 有关的内容。 分布式大数据处理系统大纲 分布式大数据处理系统概览(一): HDFS/MapReduce/Spark 分布式大数据处理系统概览(二): Yarn/Zookeeper 分布式大数据处理系统概览(三): Storm/SparkStreaming 分布式大数据处理系统概览(四): Lambda/DataFlow/Flink/Giraph   第一节部分主要总结分布式系统的目标、性质;简要介绍几种分布式计算的编程模型;介绍计算机进程与线程关系及远程调用方式;介绍文件系统DFS、介绍Hadoop的文件系统HDFS;介绍分布式计算批处理系统MapReduce和Spark。 0.绪论 0.1分布式系统的目标 0.2 大数据的五个特性(5V) (1)数量Volume (2)种类Variety (3)价值Value (4)真实性Veracity (5)速度Velocity 0.3 分布式计算生态圈 0.4分布式计算底层系统 (1

初识 HBase

此生再无相见时 提交于 2020-01-10 14:58:38
HBase简介 对大数据领域有一定了解的小伙伴对HBase应该不会陌生,HBase是Apache基金会开源的一个分布式非关系型数据库,属于Hadoop的组件。它使用Java编写,需运行于HDFS文件系统之上。HBase与Hadoop中的其他组件一样,可以运行在廉价硬件上,并可提供数10亿行 X 数百万列的大数据存储、管理能力,以及随机访问和实时读/写能力。HBase的设计模型参考了Google的 Bigtable ,可以说是Bigtable的开源实现版本。 HBase特性 数据容量大 ,单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据量级都非常具有弹性 多版本 ,每一列存储的数据可以有多个version 稀疏性 ,为空的列并不占用存储空间,表可以设计的非常稀疏 读写强一致 ,非 “最终一致性” 的数据存储,使得它非常适合高速的计算聚合 自动分片 ,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配 Hadoop/HDFS集成 ,和HDFS开箱即用,不用太麻烦的衔接。扩展性强,只需要增加DataNode就可以增加存储空间 丰富的“简洁,高效”API ,提供了Thrift/REST API,Java API等方式对HBase进行访问 块缓存 , 布隆过滤器 ,可以高效的列查询优化 操作管理 ,Hbase提供了内置的web界面来操作