最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

从入门到高深,最全的spark综合帖,手把手教你成为 Spark 大数据高手

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-1 09:35:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
什么是Spark
Spark是UC Berkeley AMP lab所开源的类hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

Spark的适用场景
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是是否考虑使用Spark的重要因素)

由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。

总的来说Spark的适用面比较广泛且比较通用。
详见【科普Spark,Spark是什么,如何使用Spark】
想成为Spark大数据高手要怎么做?
伴随Spark技术的普及推广,对专业人才的需求日益增加。Spark专业人才在未来也是炙手可热,轻而易举可以拿到百万的薪酬。而要想成为Spark高手,也需要一招一式,从内功练起:通常来讲需要经历以下阶段:

第一阶段:熟练的掌握Scala语言
Spark框架是采用Scala语言编写的,精致而优雅。要想成为Spark高手,你就必须阅读Spark的源代码,就必须掌握Scala,;

虽然说现在的Spark可以采用多语言Java、Python等进行应用程序开发,但是最快速的和支持最好的开发API依然并将永远是Scala方式的API,所以你必须掌握Scala来编写复杂的和高性能的Spark分布式程序;
尤其要熟练掌握Scala的trait、apply、函数式编程、泛型、逆变与协变等;
入门Scala可参考以下文章:【Scala更适合用于大数据处理和机器学习】
【快速了解Scala技术栈】
【Scala基本语法初探】

第二阶段:精通Spark平台本身提供给开发者API
掌握Spark中面向RDD的开发模式,掌握各种transformation和action函数的使用;

掌握Spark中的宽依赖和窄依赖以及lineage机制;

掌握RDD的计算流程,例如Stage的划分、Spark应用程序提交给集群的基本过程和Worker节点基础的工作原理等
扩展阅读:【Spark技术内幕:究竟什么是RDD】【Spark技术内幕:Worker源码与架构解析】【Spark技术内幕:Stage划分及提交源码分析】

第三阶段:深入Spark内核
此阶段主要是通过Spark框架的源码研读来深入Spark内核部分:
通过源码掌握Spark的任务提交过程;
通过源码掌握Spark集群的任务调度;
尤其要精通DAGScheduler、TaskScheduler和Worker节点内部的工作的每一步的细节;
推荐阅读:【Spark源码分析:多种部署方式之间的区别与联系】

第四阶级:掌握基于Spark上的核心框架的使用
Spark作为云计算大数据时代的集大成者,在实时流处理、图技术、机器学习、NoSQL查询等方面具有显著的优势,我们使用Spark的时候大部分时间都是在使用其上的框架例如Shark、Spark Streaming等:

Spark Streaming是非常出色的实时流处理框架,要掌握其DStream、transformation和checkpoint等;

Spark的离线统计分析功能,Spark 1.0.0版本在Shark的基础上推出了Spark SQL,离线统计分析的功能的效率有显著的提升,需要重点掌握;
对于Spark的机器学习和GraphX等要掌握其原理和用法;
深度了解Spark SQL可以看看这篇文章【Spark SQL深度理解篇:模块实现、代码结构及执行流程总览】

第五阶级:做商业级别的Spark项目
通过一个完整的具有代表性的Spark项目来贯穿Spark的方方面面,包括项目的架构设计、用到的技术的剖析、开发实现、运维等,完整掌握其中的每一个阶段和细节,这样就可以让您以后可以从容面对绝大多数Spark项目。

第六阶级:提供Spark解决方案
彻底掌握Spark框架源码的每一个细节;
根据不同的业务场景的需要提供Spark在不同场景的下的解决方案;
根据实际需要,在Spark框架基础上进行二次开发,打造自己的Spark框架;
前面所述的成为Spark高手的六个阶段中的第一和第二个阶段可以通过自学逐步完成,随后的三个阶段最好是由高手或者专家的指引下一步步完成,最后一个阶段,基本上就是到”无招胜有招”的时期,很多东西要用心领悟才能完成。
扩展阅读:【Spark在腾讯雅虎优酷成功应用的深度解析】

Spark对硬件配置有哪些要求?

Spark与存储系统
如果Spark使用HDFS作为存储系统,则可以有效地运用Spark的standalone mode cluster,让Spark与HDFS部署在同一台机器上。这种模式的部署非常简单,且读取文件的性能更高。当然,Spark对内存的使用是有要求的,需要合理分配它与HDFS的资源。因此,需要配置Spark和HDFS的环境变量,为各自的任务分配内存和CPU资源,避免相互之间的资源争用。
若HDFS的机器足够好,这种部署可以优先考虑。若数据处理的执行效率要求非常高,那么还是需要采用分离的部署模式,例如部署在Hadoop YARN集群上。
扩展阅读:
【Spark on YARN集群模式作业运行全过程分析】

Spark对磁盘的要求
Spark是in memory的迭代式运算平台,因此它对磁盘的要求不高。Spark官方推荐为每个节点配置4-8块磁盘,且并不需要配置为RAID(即将磁盘作为单独的mount point)。然后,通过配置spark.local.dir来指定磁盘列表。

Spark对内存的要求
Spark虽然是in memory的运算平台,但从官方资料看,似乎本身对内存的要求并不是特别苛刻。官方网站只是要求内存在8GB之上即可(Impala要求机器配置在128GB)。当然,真正要高效处理,仍然是内存越大越好。若内存超过200GB,则需要当心,因为JVM对超过200GB的内存管理存在问题,需要特别的配置。
内存容量足够大,还得真正分给了Spark才行。Spark建议需要提供至少75%的内存空间分配给Spark,至于其余的内存空间,则分配给操作系统与buffer cache。这就需要部署Spark的机器足够干净。

Spark对网络的要求
Spark属于网络绑定型系统,因而建议使用10G及以上的网络带宽。

Spark对CPU的要求
Spark可以支持一台机器扩展至数十个CPU core,它实现的是线程之间最小共享。若内存足够大,则制约运算性能的就是网络带宽与CPU数。
关于硬件配置的详尽内容见【Spark的硬件配置】

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-2 06:09

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表