Apache Spark

搭建比较舒适的spark源码阅读环境

梦想与她 提交于 2019-12-14 21:17:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 电脑操作系统 win7 已有jdk 1.7的环境 (如果没有需要安装)、maven本地仓库(如果没有需要安装) 1、安装scala http://www.scala-lang.org/download/ 我下载的是 scala-2.11.8.msi,双击安装,安装之后,环境变量path已经配制好了,需要自己要手动添加SCALA_HOME变量 (要注意:scala安装的目录最好不要有空格 ) 配制完之后,cmd 执行scala 说明scala安装好了 2、安装scala IDE http://scala-ide.org/download/sdk.html eclipse 版本的,我下载的是 scala-SDK-4.4.0-vfinal-2.11-win32.win32.x86_64.zip 依据自己电脑选择合适的版本 解压 跟eclipse一样,直接打开、选择工作空间 3、为scala IDE 安装maven插件 help-->Install New Software http://alchim31.free.fr/m2e-scala/update-site/ 全部选上,安装 4、配制maven Window-->Preferences 5、下载spark 源码 http://spark.apache.org

Spark Mlib TFIDF源码详读 笔记

浪子不回头ぞ 提交于 2019-12-14 21:09:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在提取文本特征时,经常用到TF-IDF算法。Spark Mlib实现了该算法。下面是Spark Mlib中,TF_IDF算法调用的一个实例: def main(args:Array[String]){ val sc: SparkContext = null // Load documents (one per line). val documents: RDD[Seq[String]] = sc.textFile("...").map(_.split(" ").toSeq) val hashingTF = new HashingTF() //计算tf val tf: RDD[Vector] = hashingTF.transform(documents) tf.cache() //得到idfModel对象 val idf = new IDF().fit(tf) //得到tf-idf值 val tfidf: RDD[Vector] = idf.transform(tf) 要求输入数据 必须是一行一篇文章(切过词的),Spark Mlib中没有提供切词的工具,但给出了建议使用的切词工具 Stanford NLP Group and scalanlp/chalk 1、TF源码详读 在调用的代码中,我们找到 val

学习Hadoop大数据基础框架

笑着哭i 提交于 2019-12-13 17:48:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1MB大约等于一百万字节)、GB(1024MB)、TB(1024GB),一直向上攀升,目前,PB(等于1024TB)级的数据系统已经很常见,随着移动个人数据、社交网站、科学计算、证券交易、网站日志、传感器网络数据量的不断加大,国内拥有的总数据量早已超出 ZB(1ZB=1024EB,1EB=1024PB)级别。 传统的数据处理方法是:随着数据量的加大,不断更新硬件指标,采用更加强大的CPU、更大容量的磁盘这样的措施,但现实是:数据量增大的速度远远超出了单机计算和存储能力提升的速度。 而“大数据”的处理方法是:采用多机器、多节点的处理大量数据方法,而采用这种新的处理方法,就需要有新的大数据系统来保证,系统需要处理多节点间的通讯协调、数据分隔等一系列问题。 总之,采用多机器、多节点的方式,解决各节点的通讯协调、数据协调、计算协调问题,处理海量数据的方式,就是“大数据”的思维。其特点是,随着数据量的不断加大,可以增加机器数量,水平扩展,一个大数据系统,可以多达几万台机器甚至更多。

优秀的数据工程师,怎么用 Spark 在 TiDB 上做 OLAP 分析

折月煮酒 提交于 2019-12-10 13:50:36
作者:RickyHuo 本文转载自公众号「大道至简bigdata」 原文链接 : 优秀的数据工程师,怎么用 Spark 在 TiDB 上做 OLAP 分析 TiDB 是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。 TiSpark 是 PingCAP 为解决用户复杂 OLAP 需求而推出的产品。它借助 Spark 平台,同时融合 TiKV 分布式集群的优势。直接使用 TiSpark 完成 OLAP 操作需要了解 Spark,还需要一些开发工作。那么,有没有一些开箱即用的工具能帮我们更快速地使用 TiSpark 在 TiDB 上完成 OLAP 分析呢? 目前开源社区上有一款工具 Waterdrop,可以基于 Spark,在 TiSpark 的基础上快速实现 TiDB 数据读取和 OLAP 分析。项目地址: https://github.com/InterestingLab/waterdrop 使用 Waterdrop 操作 TiDB 在我们线上有这么一个需求,从 TiDB 中读取某一天的网站访问数据,统计每个域名以及服务返回状态码的访问次数,最后将统计结果写入 TiDB 另外一个表中。 我们来看看 Waterdrop 是如何实现这么一个功能的。 Waterdrop Waterdrop

聊聊这一款能真正匹配大数据性能的BI工具

£可爱£侵袭症+ 提交于 2019-12-09 15:53:29
最近在看关于大数据、数据仓库 、数据架构的《数据架构:大数据、数据仓库以及Data Vault》一书,关于大数据有些思考,结合FineBI的Spider引擎,可看看Spider引擎对于大数据的阐释,以及在大数据平台架构中,可以处于什么样的位置。 大数据一直被定义为3W(数量大,速度快,多样性),但这些特征用于描述高速公路上运载的各种货物也没有问题。因此数仓之父 Inmon提出大数据的识别特征为: (1)数据量大; 毋庸置疑,这条必须有。 (2)在廉价存储器中存放的数据; 以昂贵存储介质建立海量数据存储所带来的成本,将使得大数据处理无意义。因此大数据的存储介质需要廉价。 (3)以罗马人口统计方法管理的数据; 古罗马人想要对罗马帝国的每个居民征税,所以要做一次人口统计。起初视图让罗马帝国的每个公民穿过罗马城门计数。但是古罗马地域辽阔(当时包括北非、西班牙、德国、伊朗、以色列等等),居民分布广,这种方式不现实,需要使用一直集中式处理方法。最终决定组建一个人口统计团,各个人口统计员统一在城门集合,之后被派向各地,在约定的一天进行人口统计,之后在罗马城汇总数据。 海量数据处理也是这种方式,将数据处理方式发送给不同区域(分区)的数据,实现分布式数据处理。这样可以实现几乎无限数据量的数据处理。 (4)以非结构化格式存储和管理的数据。 总结下来,大数据就是以非结构化格式存储在廉价介质中的大量数据

七、MapReduce的Shuffle和Spark的Shuffle异同?谈一谈各自的特点和过程。

送分小仙女□ 提交于 2019-12-09 09:41:54
1、MapReduce的Shuffle机制: 在MapReduce框架中, shuffle是连接Map和Reduce之间的桥梁 ,Map大的输出要用到Reduce中必须经过shuffle这个环节, shuffle的性能高低直接影响了整个程序的性能和吞吐量。 Shuffle是MapReduce框架中的一个特定的phase,介于Map phase和Reduce phase之间,当Map的输出结果要被Reduce使用时,输出结果需要按key哈希,并且分发到每一个Reducer上去,这个过程就是shuffle。 由于shuffle涉及到了磁盘的读写和网络的传输,因此shuffle性能的高低直接影响到了整个程序的运行效率。 2:Spark的Shuffle机制: Spark中的Shuffle是 把一组无规则的数据尽量转换成一组具有一定规则的数据。 Spark计算模型是 在分布式的环境下计算的 ,这就不可能在单进程空间中容纳所有的计算数据来进行计算 ,这样数据就按照Key进行分区,分配成一块一块的小分区,打散分布在集群的各个进程的内存空间中,并不是所有计算算子都满足于按照一种方式分区进行计算。 当需要对数据进行排序存储时,就有了重新按照一定的规则对数据重新分区的必要, Shuffle就是包裹在各种需要重分区的算子之下的一个对数据进行重新组合的过程。 在逻辑上还可以这样理解

阿里开发者们的第15个感悟:做一款优秀大数据引擎,要找准重点解决的业务场景

无人久伴 提交于 2019-12-07 21:01:00
摘要: 2018年12月20日,云栖社区3岁。阿里巴巴常说“晴天修屋顶”,所以我们特别制作了这个专辑——分享给开发者们20个阿里故事,50本书籍。 2015年12月20日,云栖社区上线。2018年12月20日,云栖社区3岁。 阿里巴巴常说“晴天修屋顶”。 在我们看来,寒冬中,最值得投资的是学习,是增厚的知识储备。 所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的成长感悟,50本书单。 多年以后,再回首2018-19年,留给我们自己的,除了寒冷,还有不断上升的技术能力与拼搏后的成就感。 云栖社区钉钉技术讨论群,已有5000+开发者。 云栖社区2019年1月30+场活动预告【持续更新,欢迎加入】 学习,是一种氛围。 1月10日,做一款优秀大数据引擎,要找准重点解决的业务场景。这是我们送给开发者的第15个感悟。 沐远 在社区分享了他的博文, 《使用spark分析云HBase的数据》 《hive数据导入云hbase》 ,粉丝评论说请收下我的膝盖。 李伟(沐远) 阿里云数据库技术专家 专注大数据分布式计算数据库领域, 研发Spark及自主研发内存计算,目前为广大公有云用户提供专业的云HBase数据库及计算服务。 做一款优秀大数据引擎,要找准重点解决的业务场景,打磨一套易用的API,构架与上下游联动的生态。 推荐书单: 《黑客与画家》 《深入理解计算机系统》 《大数据之路》 作者:

Spark中分布式使用HanLP(1.7.0)分词示例

独自空忆成欢 提交于 2019-12-07 14:04:18
HanLP分词,如README中所说,如果没有特殊需求,可以通过maven配置,如果要添加自定义词典,需要下载“依赖jar包和用户字典". 分享某大神的示例经验: 是直接"java xf hanlp-1.6.8-sources.jar" 解压源码,把源码加入工程(依赖本地jar包,有些麻烦,有时候到服务器有找不到jar包的情况) 按照文档操作,在Spark中分词,默认找的是本地目录,所以如果是在driver中分词是没有问题的。但是如果要分布式分词,是要把词典目录放在HDFS上面,因为这样每台机器才可以访问到 【参考代码】 最好把新增词典放在首位(没有放在首位好像没有生效).第一次使用时,HanLP会把新增txt文件,生成bin文件,这个过程比较慢。但是只需要跑一次,它会把bin文件写到HDFS路径上面,第二次以后速度就快一些了。 注意到issue中说,只可以在mapPartition中使用 参考scala代码 class HadoopFileIoAdapter extends IIOAdapter { override def create(path: String): java.io.OutputStream = { val conf: Configuration = new Configuration() val fs: FileSystem = FileSystem.get

大数据处理为何选择Spark,而不是Hadoop

做~自己de王妃 提交于 2019-12-07 13:09:42
一.基础知识 1.Spark Spark是一个用来实现快速而通用的集群计算的平台。 在速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。 Spark项目包含多个紧密集成的组件。Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。 Spark的各个组件 2.Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。 二.大数据处理选择 根据Spark和Hadoop的基础知识,我们了解Spark和Hadoop都 可以进行大数据处理,那我们如何选择处理平台呢? 1.处理速度和性能 Spark扩展了广泛使用的MapReduce计算模型,其中Spark有个Directed Acyclic Graph(DAG有向无环图)执行引擎,支持循环数据流和内存计算。 Hadoop是磁盘级计算,进行计算时,都需要从磁盘读或者写数据,同时整个计算模型需要网络传输,导致MapReduce具有高延迟的致命弱点。 据统计

大数据(Spark-核心原理及架构)

痴心易碎 提交于 2019-12-07 11:18:31
Spark RDD特性 RDD(Resilient Distributed Datasets),弹性分布式数据集,它是对分布式数据集的一种内存抽象,通过受限的共享内存方式来提供容错性,同时这种内存模型使得计算比传统的数据流模型要高效。RDD具有5个重要的特性,如下图所示: 1.一组分区,数据集的基本组成单位。 2.计算每一个数据分区的函数。 3.对parent RDD的依赖,这个依赖描述了RDD之间的lineage(血统)。 4.可选,对于键值对RDD,有一个Partitioner(通常是HashPartitioner,RangePartitioner)。 5.可选,一组Preferred location信息(例如,HDFS文件的Block所在location信息)。 Spark 运行模式分析-概述 用户在提交任务给Spark处理时,以下两个参数共同决定了Spark的运行方式。 · –master MASTER_URL :决定了Spark任务提交给哪种集群处理。 · –deploy-mode DEPLOY_MODE:决定了Driver的运行方式,可选值为Client或者Cluster。 Spark 运行架构的特点 每个Application获取专属的executor进程,该进程在Application期间一直驻留,并以多线程方式运行Tasks