数据处理

Spark 数据倾斜及其解决方案

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

Matlab数据处理——数据的保存和读取方法操作

 ̄綄美尐妖づ 提交于 2019-12-30 02:54:02
1:dlmwrite()函数保存成txt文件 使用方法: dlmwrite('filename', M) 使用默认分隔符“,”将矩阵M写入文本文件filename中; dlmwrite('filename', M, 'D') 使用分隔符D分割数据,“\t”表示tab分割,“,”为默认分割符; dlmwrite('filename', M, 'D', R, C) 从矩阵M的第R行、第C列开始,作为要写矩阵块的左上角,将数据用D分割写入文件。 其他用法还有: dlmwrite('filename', M, 'attrib1', value1, 'attrib2', value2, ...) dlmwrite('filename', M, '-append') dlmwrite('filename', M, '-append', attribute-value list) 例如: a = [1 2 3; 4 5 6; 7 8 9]; dlmwrite('test.txt', a); 则test.txt中的内容为: 1,2,3 4,5,6 7,8,9 2:save()函数保存成mat文件 ● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。 ●

面试题_hadoop

别来无恙 提交于 2019-12-30 02:53:48
Hadoop 准备 运行hadoop集群需要哪些守护进程? DataNode,NameNode,TaskTracker和JobTracker都是运行Hadoop集群需要的守护进程。 hadoop和spark都是并行计算,那么他们有什么相同和区别? 两者都使用mr模型来进行并行计算,hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进程中运行的,当task结束时,进程也会结束。 Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,没触发一个action操作就会产生一个job。 这些job可以并行或者串行执行,每个job有多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset有TaskSchaduler分发到各个executor中执行,executor的生命周期是和application一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算的。 Hadoop的job只有map和reduce操作,表达能力比较欠缺而且在mr过程中会重复的读写hdfs,造成大量的io操作,多个job需要自己管理关系。

Hadoop HDFS 设计随想

試著忘記壹切 提交于 2019-12-30 02:15:51
目录 引言 HDFS 数据块的设计 数据块应该设置成多大? 抽象成数据块有哪些好处? 操作块信息的命令 HDFS 中节点的设计 有几种节点类型? 用户如何访问 HDFS? 如何对 namenode 容错? 如何更快的访问 datanode 中访问频繁的块? 如何扩展 namenode 以存储更多的文件? HDFS 中的高可用性设计 如何处理 namenode 单点失效问题? namenode 间如何共享编辑日志? namenode 如何能快速故障切换? 如何规避非平稳故障转移? 小结 参考文档 珍惜时间,时间要花在做有用的事情上,力戒无意义的举动 ——富兰克林 引言 当数据的大小大于一台独立的电脑的存储能力时,就有必要对它进行分区并且存储在多台单独的电脑上。要将非常大的数据集合存储在多台电脑上,就会涉及到多台电脑共享的文件系统,也就是分布式文件系统。 分布式文件系统(distributed file system) 是指管理网络中跨多台计算机存储的文件系统。 分布式文件系统既然跨多台电脑,通过网络将它们互联起来,就可能会出现其中的一个电脑节点连接中断或者宕机的情况,也就是节点故障。在这种情况下也不能出现丢失整个文件系统任何数据的情况,怎么来做到呢?先让我们用发散思维的方式来思考一下。 将文件系统的每份数据备份,并且备份不能在同一台物理计算器上,这样能保证即使其中一台计算机宕机

HADOOP之HDFS

一世执手 提交于 2019-12-30 02:14:28
HADOOP学习之HDFS HDFS介绍 HDFS是hadoop自带的分布式文件系统,英文名为:Hadoop Distributed Filesystem,HDFS以流式数据访问模式来存储超大文件。根据设计,HDFS具有如下特点 HDFS特点 支持超大文件 一般来说,HDFS存储的文件可以支持TB和PB级别的数据 检测和快速应对硬件故障 在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率很高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。假设某一个datanode挂掉之后,因为数据是有备份的,还可以从其他节点里找到。namenode通过心跳机制来检测datanode是否还存活 流式数据访问 HDFS的访问模式是一次写入,多次读取,数据集通常都是由数据源生成或者从数据源复制而来,接着长时间在此数据集上进行各种分析,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要 高容错性 数据自动保存多个副本,副本丢失后自动恢复。 可构建在廉价的机器上,实现线性扩展。当集群增加新节点之后,namenode也可以感知,将数据分发和备份到相应的节点上 商用硬件 Hadoop并不需要运行在昂贵且高可靠的硬件上。它是设计运行在商用硬件(在各种零售店都能买到的普通硬件)的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常搞得。HDFS遇到上述故障时

Hadoop分布式文件系统HDFS详解

筅森魡賤 提交于 2019-12-30 02:13:18
Hadoop分布式文件系统即Hadoop Distributed FileSystem。 当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(Partition)并存储到若干台单独的计算机上,管理网络中跨越多台计算机存储的文件系统成为分布式文件系统(Distributed FileSystem)。 该系统架构与网络之上,势必引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。例如:使文件系统能够容忍节点故障且不丢数据便是一个极大的挑战。 Hadoop有一个成为HDFS的分布式文件系统,即Hadoop Distributed FileSystem。在非正式的文档或旧的文档中也叫着做DFS。HDFS是Hadoop的旗舰级文件系统,它实际上是一个综合性的文件系统的抽象。例如还可以集成其他文 件系统如Amazon S3或本地文件系统。 HDFS以流式数据访问模式来存储超大文件,运行在商用硬件集群上,特点如下: 1、超大文件存储 “超大文件”在这里指具有即便MB、几百GB、几百TB大小的文件,目前已经有了存储PB级别数据的Hadoop集群。(全球最大的Hadoop集群在雅虎,有大约25,000个节点,主要用于支持广告系统与网页搜索。) 2、流式数据访问 HDFS的构建思路是一次写入,多次读取是最高效的访问模式。数据集通常由数据源生成或从数据源复制而来

基于hadoop的BI架构

感情迁移 提交于 2019-12-30 01:42:16
BI系统,是企业利用数据驱动运营的一个典型系统。BI系统通过发掘企业运行过程中的数据,发现企业的潜在风险 、 为企业的各项决策提供数据支撑。 传统的BI系统通常构建于关系型数据库之上。随着企业业务量的增大和对用户行为实时提取分析的需要越来越高,传统的BI架构对实时性的分析和大数据量的分析已经无法满足,新的数据分析的解决方案便呼之欲出。 得益于hadoop对大数据和分布式计算的优势 、以及丰富的组件,使用hadoop进行BI架构便方便许多。 一个典型的基于hadoop的BI架构如下图所示: 该BI架构主要包括2部分:实时处理部分 、离线批处理部分。 实时处理部分: 功能主要是实时获取用户的网站 、app等访问记录,分析用户行为轨迹,其数据来源一般是访问日志。 数据流:通过flume实时拉取服务器的日志,并将其发送至spark和hadoop。spark利用spark structured streaming组件接收flume发送的日志数据,并在一定的窗口和周期下进行计算。提取出一些用户在此时的基本行为过程,并将结果存储至hbase。这一过程中,会涉及高频的数据读写和计算需求 、特别是flume和spark这一块的话对内存的需求量比较大,需要做好硬件配置的规划。同时将日志数据写入一份至hadoop,主要是为了做离线分析的需要。 离线批处理部分: 功能主要是对业务数据(如进销存等

Hadoop体系架构简介

让人想犯罪 __ 提交于 2019-12-30 01:41:37
  今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底层实现,MapReduce的模型计算,到一个云盘如何实现,再到Google分布式史上那最伟大的三篇文章。   这几个名词刚问到初学者的时候肯定会一脸懵逼包括我自己,整个Hadoop家族成员很多,“势力”很庞大,下面画个图,简单概括下。 到这里本文内容已结束,下文是摘自网络上一些比较经典或者浅显易懂的相关文字,有兴趣的继续往下看。对初学者来说,如果上图能大概看懂,那下面的内容能更有利于你理解。 Google的分布式计算三驾马车: Hadoop的创始源头在于当年Google发布的3篇文章,被称为Google的分布式计算三驾马车。 Google File System( 中文 , 英文 )用来解决数据存储的问题,采用N多台廉价的电脑,使用冗余(也就是一份文件保存多份在不同的电脑之上)的方式,来取得读写速度与数据安全并存的结果。 Map-Reduce说穿了就是函数式编程,把所有的操作都分成两类,map与reduce,map用来将数据分成多份,分开处理,reduce将处理后的结果进行归并,得到最终的结果。但是在其中解决了容错性的问题。 BigTable是在分布式系统上存储结构化数据的一个解决方案

spark streaming

∥☆過路亽.° 提交于 2019-12-29 17:45:36
Spark Streaming http://spark.apache.org/docs/latest/streaming-programming-guide.html#overview Spark Streaming 是Spark Core的进一步扩展,可以实现数据流的可扩展、高吞吐、容错处理。Spark Streaming处理的数据可以来源于多种方式,比如Kafka、Flume、Kinesis或者TCP传输等,这些流数据经过Spark Streaming进行复杂的处理加工。最终,将处理的结果保存到文件系统、数据库或者实时的展示界面。 Spark Streaming的工作原理 Spark Streaming接受实时的数据流并将数据流拆分为一个一个的批次(micro batch),通过Spark引擎处理(rdd),产生最终的结果流 实际上:流处理转批处理的过程 Spark提供了高等级的抽象,称为离散流或者 DStream ( DStream表现为连续的数据流 )。DStream一般是通过输入的数据流进行构建(如:kafka、Flume、Kinesis)或者其它的DStream。 实际上在内部,一个 DStream 表现为一组RDD的序列 什么是流数据?什么事批数据? ​ 流数据:类似于水流,没有范围和界限。表现为有起始,但没有终止。 ​ 批数据:有范围的数据,范围可以是一个小时

spark

让人想犯罪 __ 提交于 2019-12-28 20:28:03
Apache Spark 什么是Spark? Spark是 Lightning-fast unified analytics engine - 快如闪电的统一的分析引擎(不参与数据持久化)。 快 (1)Spark基于内存的计算引擎,相比于MapReduce磁盘计算,速度自然 快 - 大众认知 (2)Spark使用先进的DAG(矢量计算)计算模型,将一个复杂的任务拆分成若干个stage(阶段), 这样复杂的任务Spark只需要一个job即可完成。(如果使用MapReduce计算模型可能需要串连若干个Job) (3) Spark实现DAG计算将任务划分为若干个阶段,同时也提供了对stage阶段计算数据的缓存能力,这样就极大提升计算效率和容错。 统一 :Spark统一大数据常见计算例如:批处理(替代MapReduce)、流处理(替代Storm)、统一SQL(替代了Hive)、Machine Learning(替代Mahout 基于MapReduce计算方案)、支持GraphX存储-图形关系存储(存储数据结构)(替代了早期Neo4j的功能) Spark VS Hadoop Spark的诞生仅仅是为了替换早期的Hadoop的MapReduce计算引擎。Spark并没有存储解决方案,在Spark的架构中,底层存储方案依然延续Hadooop的HDFS/Hbase