高级spark和hadoop的区别入门实例有没有专业的给推荐一下?

引子:在使用spark和hadoop的时候,遇到一些进程退出时的报错。因此顺便研究了一下jvm以及一些开源框架的关闭钩子的机制。这篇文章不涉及底层native实现,仅限Java层面

 这个集合是分优先级的(优先级就是下标数值),自定义的钩子优先级默认是1,也就是最先执行。关闭钩子最终触发就是从这个集合进行

Shutdown执行jvm退出逻辑,并维护了若干关闭状态

// 注意ApplicationShutdownHooks里的钩子之间是没有优先级的,如果定义了多个钩子,那么这些钩子会并发执行 // 这里会调用Spring的关闭逻辑,包括资源清理,bean的销毁等 // 这里会把spring的钩子注册到jvm关闭钩子

hadoop集群(非客户端)启动时,还会注册钩子清理临时路径

// 执行钩子的回调进程,根据priority依次执行钩子

一个典型的场景是同时使用Spark和Hadoop-Api,Spark会创建FileSystem实例,Hadoop-Api也会创建,由于底层复用,两者其实是同一个。因为关闭钩子的存在,应用退出时会执行两次FileSystem.close(),导致报错。解决这个问题的办法是在hdfs-site.xml增加以下配置,关闭FileSystem实例复用

以下为相关调用逻辑整理

紫红色箭头表示钩子注册,蓝色箭头表示钩子触发

蓝色、黄色、红色线框分别表示Spring、Hadoop、Spark相关代码

薪资差一倍!Spark真的那么优于Hadoop吗?

这几天在网上看到这么一个问题,贵州的大数据工程师年薪都40万不止?

一下勾起了我的兴趣,今天就来简单分析下,到底是什么原因。贵州如今是大数据之都,而贵州大数据背后是马云的阿里云。

先来看看 马云爸爸的阿里巴巴的级别定义:

?阿里薪资结构:一般是12+1+3=16薪

?年底的奖金为0-6个月薪资,90%人可拿到3个月

看看阿里巴巴大数据工程师的对应薪资年薪。

也就是说做到P7或者P8这个级别就差不多达到年薪40W的范围了。

再来看看,成为阿里的大数据工程师需要具备什么条件:

呵呵,内行的朋友应该看出来了:在阿里,只有存储数据部分仍然依赖Hadoop(分布式文件系统HDFS),而整个数据的分布式处理模块均以来Spark完成。当然,有的朋友会说:这很正常,阿里这种数据规模的企业,Spark可以弥补MapReduce读取100GB的数据或几个TB的数据时的缺陷。但这就可以构成你和40W年薪的差距吗?在这里,我来把Spark的优势彻底说清楚。

Spark是 Apache 高级项目里面较火的大数据处理的计算引擎,包括离线计算或交互式查询、数据挖掘算法、流式计算以及图计算等。

与 Mapreduce 相比,Spark 具备 DAG 执行引擎以及基于内存的多轮迭代计算等优势,在SQL 层面上,比Hive/Pig引入了更多关系数据库的特性,以及内存管理技术。

相比MapReduce来讲,Spark操作简单,甚至可以说非常便捷。即使对于一个简单逻辑或算法,MapReduce也需要100行代码;但使用Spark,一个简单逻辑,几行代码就可以完成。这就引出了一个关键因素,叫做用途广泛。许多对于MapReduce来讲不可能完成的机器学习或图表问题的高级算法,都可以由Spark完成。这让Spark的采用率相当高。

MapReduce没有交互模块。尽管Hive和Pig包含命令行接口,这些系统的性能仍然依赖MapReduce。MapReduce对于批处理仍然十分受用。

Spark在内存中处理数据,而MapReduce却将处理后的数据传送回磁盘。所以Spark将优于MapReduce。

Spark占用大量内存。如果我们运行Spark的同时运行其他占用内存的服务,其性能可能大打折扣。但是,我们可以有把握地说,Spark在迭代处理方面占上风(需要多次传递同一数据)。

这两者在计算能力、磁盘和网络环境方面的硬件要求都十分相似。内存越大,Spark表现越好。这两者都使用商品服务器。

MapReduce编程费力,市场上这方面的专家并不多。即便有为数不多的Spark专家,但这也仅仅是因为Spark是初创产品。所以学习Spark编程比MapReduce要容易的多。

运行Spark其实并不需要Hadoop的支持。如果我们没有从分布式文件系统(HDFS)中读取数据,Spark也可以自行运行。Spark也可以从诸如S3, Cassandra等其他存储中读写数据。在这种架构下,Spark可在独立模式下运行,并不需要Hadoop 组件的支持。

近期研究表明在产品中使用Spark的用户激增。许多用户同时运行Spark和Cassandra, 或者Spark和Hadoop ,又或者在Apche Mesos上运行Spark. 尽管Spark用户数量有所增长,但并没有在大数据社区造成恐慌。MapReduce使用率可能会下降,但具体降幅未知。

许多人预测Spark会促使另一种更优质堆栈的发展。但这种新型堆栈可能会与Hadoop 及其软件包生态系统非常相似。

Spark的最大优点是简洁。但它并不会彻底消灭MapReduce,因为使用MapReduce依然大有人在。即便Spark成为大赢家,除非研发新分布式文件系统,我们将同时使用Hadoop 和Spark处理数据。

免责声明:转载自网络 不用于商业宣传 版权归原作者所有 侵权删

我要回帖

更多关于 spark和hadoop的区别 的文章

 

随机推荐