spark开发指南.doc

上传人:marr****208 文档编号:127933619 上传时间:2020-04-07 格式:DOC 页数:63 大小:1.52MB
返回 下载 相关 举报
spark开发指南.doc_第1页
第1页 / 共63页
spark开发指南.doc_第2页
第2页 / 共63页
spark开发指南.doc_第3页
第3页 / 共63页
spark开发指南.doc_第4页
第4页 / 共63页
spark开发指南.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《spark开发指南.doc》由会员分享,可在线阅读,更多相关《spark开发指南.doc(63页珍藏版)》请在金锄头文库上搜索。

1、1、重定向方式读入scala文件(执行scala脚本)/usr/local/spark-1.2.0-bin-hadoop2.4/bin/spark-shell test_scala01.scalaSpark运行调试方法与学习资源汇总http:/ User List、Google Group等各类Spark学习社区和论坛进行求助,而大部分问题都是可以找到答案的。3、官网配置文档大部分问题都是配置问题引起的,如何准确配置,需要结合官方说明文档进行配置,而其中的Tuning Spark内容,也是每个Spark实践者必须了解和掌握的,推荐精读:Tuning Spark(内存调优): http:/spa

2、rk.apache.org/docs/1.0.0/tuning.htmlSpark Configuration(基本配置): http:/spark.apache.org/docs/1.0.0/configuration.html4、官网Example各个子项目都有对应的Example和源码,可以从源码的src子文件夹里找到,而在每个子项目的官网说明上也有相应的代码示例,也可以作为参考。 这4个方法是解决问题的第一位要素,特别地,要会通过Log反推错误来源,定位故障原因,然后第一时间想到谷歌,把错误关键词粘贴查找寻求解答。而大部分人的问题其实主要都是配置问题,1和2其实就能解决了。3和4主要用

3、来模仿学习,照猫画虎,学以致用,不成功便成仁。 交流和互动也很重要,把握国内Spark研究的前沿,就要善于利用和挖掘各类互联网资源,这里,推荐一些博客、微博、QQ学群供大家参考学习:知名博主:徽沪一郎:http:/ 微博大牛:hashjoin,Databricks大数据公司创始人之一,UC Berkeley AMPLab:http:/ http:/ Spark学习资料Fast Data Processing with Spark,http:/ Cookbook,http:/ Zaharia,http:/ 快速理解http:/ http:/ = 目标Scope(解决什么问题) 在大规模的特定数据

4、集上的迭代运算或重复查询检索 官方定义aMapReduce-like cluster computing framework designed for low-latency iterativejobs and interactive use from an interpreter 个人理解 首先,MapReduce-like是说架构上和多数分布式计算框架类似,Spark有分配任务的主节点(Driver)和执行计算的工作节点(Worker) 其次,Low-latency基本上应该是源于Worker进程较长的生命周期,可以在一个Job过程中长驻内存执行Task,减少额外的开销 然后对intera

5、tive重复迭代类查询运算的高效支持,是Spark的出发点了。最后它提供了一个基于Scala的Shell方便交互式的解释执行任务 =如何实现 = 核心思路,架构 RDD:Spark的核心概念是RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。 Lineage:利用内存加快数据加载在众多的其它的In-Memory类数据库或Cache类系统中也有实现,Spark的主要区别在于它处理分布式运算环境下的数据容错性(节点实效/数据丢失)问题时采用的方案。为了保证RDD中数据的鲁棒性,RD

6、D数据集通过所谓的血统关系(Lineage)记住了它是如何从其它RDD中演变过来的。相比其它系统的细颗粒度的内存数据更新级别的备份或者LOG机制,RDD的Lineage记录的是粗颗粒度的特定数据变换(Transformation)操作(filter, map, join etc.)行为。当这个RDD的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的数据分区。这种粗颗粒的数据模型,限制了Spark的运用场合,但同时相比细颗粒度的数据模型,也带来了性能的提升。 总之,Spark的核心思路就是将数据集缓存在内存中加快读取速度,同时用lineage关联的RDD以较小的性

7、能代价保证数据的鲁棒性。 适用领域 正如其目标scope,Spark适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。 细节 使用内存缓存数据集快在哪里?主要是几个方面:首先是磁盘IO,其次数据的序列化和反序列化的开销也节省了,最后相对其它内存数据库系统,粗颗粒度的内存管理机制减小了数据容错的代价(如典型的数据备份复制机制) =相关项目 = 上下游项目 Discretized Streams (Spark streaming) 构建在Spark上处理Stream数据的框架,基本的原理是将Stream

8、数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。个人理解构建在Spark上的原因大概是因为Spark的低延迟执行引擎(100ms+)勉强可以用于实时处理,而Spark的核心理念数据重用和流式数据处理本身并没有直接的交集,相反个人感觉流式数据的无穷连续性的特性一定程度上和数据重用是冲突的。相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。 Shark ( Hive on Spark) Shark基本上就

9、是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现query Parsing和 Logic Plan generation,最后的PhysicalPlan execution阶段用Spark代替Hadoop MapReduce。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。 类似项目 Twister :ht

10、tp:/www.iterativemapreduce.org大概的意思也是通过Cache数据,实现迭代的MapReduce过程中的数据重用,不过它的模型貌似相对简单些,大致是通过拓展MapReduce API,分发管理缓存数据,然后通过自己的Daemon进程管理和分配MapReduce Task到Cache对应的节点上,容错性和计算模型方面没有Shark的RDD来得精巧和通用。 Haloop:和Twister类似,修改扩展了MapReduce框架,增加了循环逻辑和Data Caching =相关文献 = http:/spark-project.org/项目首页http:/shark.cs.be

11、rkeley.edu/ shark项目主页 Paper论文http:/www.cs.berkeley.edu/matei/papers/2012/nsdi_spark.pdf =其它 = 主要实现和编程接口基于ScalaSpark的YARN模式部署http:/ Build Tool)或者Maven来编译,官方提供的二进制安装文件是用Maven编译。1:Spark的编译Spark可以通过SBT(Scala Build Tool)或者Maven来编译,官方提供的二进制安装文件是用Maven编译,如果是要在YARN集群上运行的话,还需要再用SBT编译一下,生成YARN client端使用的jar包;最好是直接对源码使用SBT进行编译而生

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号