数据处理

值得关注的sql-on-hadoop框架

爱⌒轻易说出口 提交于 2020-02-29 03:18:04
http://www.infoq.com/cn/news/2014/06/sql-on-hadoop 数据的操作语言是SQL,因此很多工具的开发目标自然就是能够在Hadoop上使用SQL。这些工具有些只是在MapReduce之上做了简单的包装,有些则是在HDFS之上实现了完整的数据仓库,而有些则介于这两者之间。这样的工具有很多,来自于 Shoutlet 的软件开发工程师Matthew Rathbone最近发表了 一篇文章 ,他列举了一些常用的工具并对各个工具的应用场景和未来进行了分析。 Apache Hive Hive是原始的SQL-on-Hadoop解决方案。它是一个开源的Java项目,能够将SQL转换成一系列可以在标准的Hadoop TaskTrackers上运行的MapReduce任务。Hive通过一个metastore(本身就是一个数据库)存储表模式、分区和位置以期提供像MySQL一样的功能。它支持大部分MySQL语法,同时使用相似的 database/table/view约定组织数据集。Hive提供了以下功能: Hive-QL,一个类似于SQL的查询接口 一个命令行客户端 通过中央服务支持元数据共享 JDBC 驱动 多语言 Apache Thrift 驱动 一个用于创建自定义函数和转换的Java API 何时使用它? Hive

Spark运行原理

人走茶凉 提交于 2020-02-28 19:54:55
Spark运行架构 基本概念 RDD:分布式内存的抽象概念,高度受限的共享内存模型 DAG:有向无环图,反应RDD的依赖关系 Executot:运行在工作节点的一个进程,负责运行任务,存储数据 任务Task:运行在Executor上的工作单元 作业:一个作业包含多个RDD及作用于相应RDD的操作 阶段Stage:作业调度的基本单位,以宽依赖、窄依赖划分。 架构设计 Spark的运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Work Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的进程(Executor) 其中,Executor使用多线程来执行具体任务,减少任务的启动开销;其还有一个BlockManager存储模块,将内存和磁盘共同作为存储设备,内存作为默认存储,不够时,写入磁盘。因此减少了IO开销。 Spark运行基本流程 首先为应用构建基本运行环境,由任务控制节点Driver创建一个Spark Context对象,由该对象与资源管理器通信,申请资源和任务的调配 资源管理器为Executor分配资源,启动进程,Executor随时和资源管理器保持通信,利用心跳 Spark Context根据RDD的依赖关系构建相应的DAG图,将DAG图提交给DAG调度器(DAG Scheduler)

Spark系列——了解Spark

杀马特。学长 韩版系。学妹 提交于 2020-02-28 19:31:25
Spark系列——了解Spark 一、什么是Spark? 1.Spark是一个分布式的并行计算框架。 2.Spark是下一代的map-reduce,扩展了MR的数据处理流程。 3.MR存在的问题: (1)调度慢,启动map、reduce太耗时 MR:map进程,reduce进程 spark:executor进程 10个线程:8 map task(线程) 2 reduce(线程) 进程慢,线程快,spark只用申请一次进程,而MR申请多次。 (2)计算慢,每一步都要保存中间结果落磁盘 MR: map->reduce的中间结果在磁盘 spark: map->reduce的中间结果在磁盘(默认)【除非cache一下指定到内存】 (3)API抽象简单,只有map和reduce两个原语 MR:需要通过脚本把map和reduce穿起来,如果项目中有较多的数据处理,写脚本比较费劲,需要画流程图再写脚本。 Spark:通过map和reduce等算子就能将数据串在一起。 (4)缺乏作业流描述,一项任务需要多轮MR 4.spark与MR的内存比较: 8 map 1G,2个reduce 1G MR:如果执行map执行完,去看yarn这个任务运行的资源情况 这个任务会占用多少资源?2G spark:1个executor 10G 8 map 1G ,2个reduce 1G 8个map执行完,资源占用情况?

大数据01-初识hadoop

喜你入骨 提交于 2020-02-28 14:24:01
一、什么是大数据? 大数据是适应时代的产物,在我们的生活中应用也很广泛。首个提出大数据概念的是:麦肯锡。 大数据的数据计量单位已经越过了TB级别,发展到了PB、EB、ZB、YB、BB来衡量。 二、大数据的特征是什么? 大数据有四个方面的典型特征: 大量 (Volume)、 多样 (Varity)、 高速 (Velocity)、 价值 (Value)。 大数据处理的数据是大量的; 大数据处理的数据是多样的; 使用计算机处理数据是高速的; 通过大数据对大量的数据进行分析,可以得到有价值的信息。 大数据对数据的 实时 性要求较高,而且,大数据由于数据庞大,所以有很多没有价值的数据,因此, 数据处理效率 相对来说不高。 三、研究大数据的意义是什么? 研究大数据最重要的意义是 预测 。通过对大量数据的分析,建立数据思维模型,从而对未来进行推测和预测。 四、大数据有哪些应用场景? 医疗行业、金融行业、零售行业都可以很好的应用到大数据。 五、什么是hadoop? Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 六、hadoop的优势是什么? 扩容能力强:内存可以进行横向扩展; 成本低:hadoop集群可以由一些廉价的计算机组成; 高效率

数据处理的两个基本问题

女生的网名这么多〃 提交于 2020-02-28 06:42:19
总结chapter5-8 这几章分散引入或总结了不少零碎的知识点,包括寻址方式、新增指令用法、伪指令,等等。知识本身难度不大,但是,由于比较零散,也容易给初学者造成困扰。因此,建议对内容进行分门别类梳理、归纳、总结,借助思维导图、表格等形式,让知识结构化、体系化、清晰化。不仅有助于自己学习理解,也有助于后期复习。 第五章[bx]和loop指令在上一篇博客有总结 第六章包含多个段的程序 assume cs:code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h mov bx,0 mov ax,0 mov cx,8 s: add ax,cs:[bx] add bx,2 loop s mov ax,4c00h int 21h code ends end "dw"的含义是定义字型数据。 通过ds=0760,可知道程序从0770开始存放,由于数据存放在代码段中,程序运行的时候cs中存放代码段的段地址,所以可以从cs中得到它们的段地址。 用debug加载后,可以将ip设置为10h,从而使cs:ip指向程序中的第一条指令。再用t命令,p命令,或者是g命令执行。 assume cs:code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

比较有前景和新的开源大数据技术分享给你

大憨熊 提交于 2020-02-28 05:21:02
在实现企业背景调查平台的过程中,除了Spark,我们使用了很多开源组件:Flume、canal、HBase、Neo4j等。这些优秀的开源组件使得工程师拥有了更多可能。在大数据领域,开源软件更是最主要的力量。本节将介绍一些比较有前景和新的开源大数据技术。 16.3.1 Apache Flink 不同于大多数起源于硅谷的大数据开源项目,Flink起源于2010年几个德国柏林的大学和研究机构的研究项目,最初项目名是StratoSphere,2014年5月加入Apache软件基金会,改名Flink,并于当年年底从孵化器毕业成为Apache顶级项目。自从加入了Apache,Flink发展速度非常迅猛,截至目前已经有500余名贡献者。如今,每年4月,Flink的技术盛会Flink Summit也会在旧金山如期举行。 与Spark不同,Flink诞生较晚,但具有很强的后发优势,尤其是在流处理方面。另外,Flink也用Table API统一了流和批的处理方式,这点与Spark的DataFrame API类似,但是比Structured Streaming要早。图16-6是Flink的架构图,FlinkML是Flink的机器学习库,Gelly是图处理框架。 图16-6 Flink架构 如图16-6所示,可以看到在Flink中流处理和批处理底层处理引擎是通用的。总的来说

Spark核心算子

佐手、 提交于 2020-02-28 02:33:00
Spark RDD : Transformation Meaning map(func) 返回一个新的分布式数据集,该数据集是通过将源的每个元素传递给函数func处理形成的。 filter(func) 返回一个新的数据集,该数据集是通过func处理后在其上返回true 的源元素形成的。 flatMap(func) 与map相似,但是每个输入项都可以映射成0个或多个输出项(因此func应该返回Seq而不是单个项)。 mapPartitions(func) 与map相似,但是分别在每个RDD的分区(块)上运行,因此当运行在类型为T的RDD上时函数func必须被声明成 Iterator<T> => Iterator<U>(即对RDD中的每个分区的迭代器进行操作)迭代器。 mapPartitionsWithIndex(func) 与mapPartitions类似,但它还为func提供表示分区索引的整数值,因此当在类型T的RDD上运行时,func的类型必须为 (Int, Iterator<T>) => Iterator<U>(即带索引的迭代器类型)。 union(otherDataset) 返回一个新的数据集,其中包含了源数据集以及参数数据集中的每个元素。 intersection(otherDataset) 返回一个新的RDD,其中包含源数据集中和参数数据集交集的元素。 distinct(

从数据处理到人工智能的一批计算生态

会有一股神秘感。 提交于 2020-02-28 00:52:53
系统的对人工智能的浅显认识 数据表示 -> 数据清洗 -> 数据统计 -> 数据可视化 -> 数据挖掘 -> 人工智能 数据表示:采用合适方式用程序表达数据 数据清洗:数据归一化、数据转换、异常处理 数据统计:数据的概要理解,数量、分布、中位数等 数据可视化:直观展示数据内涵的方式 数据挖掘:从数据分析获得知识,产生数据外的价值 人工智能:数据/语言/图像/视觉/等方面深度分析与决策 数据处理 Numpy 表达N维数组的最基础库 python接口使用,C语言实现,计算速度优异 python数据分析及科学计算的基础库,支撑Pandas等 提供直接的 矩阵运算、广播函数、线性代数 等功能 比如进行两个一维数组的运算 使用基础语法,我们要使用for循环 def pySum ( ) : a = [ 0 , 1 , 2 , 3 , 4 ] b = [ 9 , 8 , 7 , 6 , 5 ] c = [ ] for i in range ( len ( a ) ) : c . append ( a [ i ] ** 2 + b [ i ] ** 3 ) return c print ( pySum ( ) ) 使用Numpy,Numpy的最基础单元是一个数组,数组相当于一个变量,我们就可以用数组变量直接的操作符进行运算 将N维数组看成简单的数字运算 import Numpy as np def

Scala学习-集合相关操作

若如初见. 提交于 2020-02-27 23:11:21
接下来记录下scala中集合相关的知识,scala中集合分为可变集合和不可变集合,有Array、List、Set、Map和Tuple。 不可变 可变 数组Array Array ArrayBuffer 列表List List ListBuffer 散列Set immutable.Set mutable.Set 映射Map immutable.Map mutable.Map 元祖 Tuple 为了理解的方便,使用交互式方式REPL来完成。 数组 (1)定义一个定长数组。 scala> val a1=Array(4,1,2,5) a1: Array[Int] = Array(4, 1, 2, 5) scala> val a2=new Array[Int](4) a2: Array[Int] = Array(0, 0, 0, 0) (2)定义一个变长数组。 scala> val a3=scala.collection.mutable.ArrayBuffer(1,2,3,4) a3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4) //1 添加一个元素 scala> a3+=5 res1: a3.type = ArrayBuffer(1, 2, 3, 4, 5) //2 添加一个元素 scala> a3

Spark源码阅读的正确打开方式

不羁的心 提交于 2020-02-27 13:35:44
Spark发展至今,应该说已经非常成熟了。是大数据计算领域不得不学习的框架。尤其是Spark在稳定性和社区发展的成熟度方面,吊打其他的大数据处理框架。 Spark至今只经历过1.x、2.x和3.x三个大版本的变化,在核心实现上,我们在Github能看到的最早的实现是0.5版本,这个版本只有1万多行代码,就把Spark的核心功能实现了。 当然我们不可能从这么古老的版本看,假如你接触过Spark,现在准备看源码,那么我建议从2.x版本中选取一个,最好是2.3或者2.4。但是经过如此多的迭代,Spark的代码量已经暴增了几倍。所以你需要抓住重点,本文就是想跟大家说说,我们该怎么看,看哪些东西。 基础概念篇 首先假如你是第一次接触Spark,那么你需要对Spark的设计思想有所了解,知道Spark用了哪些抽象,Spark在提出RDD的时候是基于什么样的考虑。 在这里给大家推荐几篇论文如下: 第一篇: 这个不多说,直接给出一个链接,这篇文章不长,很快能看完。 弹性分布式数据集:一种为内存化集群计算设计的容错抽象 https://fasionchan.com/blog/2017/10/19/yi-wen-tan-xing-fen-bu-shi-shu-ju-ji-yi-zhong-wei-nei-cun-hua-ji-qun-ji-suan-she-ji-de-rong-cuo-mo-xing