我是靠谱客的博主 紧张白猫,最近开发中收集的这篇文章主要介绍开源式、分布式存储、计算, SPARK(Spark)编辑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


Mesos计算框架一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、MPI、Hypertable、Spark。使用ZooKeeper实现容错复制,使用Linux Containers来隔离任务,支持多种资源计划分配。


大数据现在是业内炙手可热的话题,随着技术的发展,大数据存储技术已经不在是难点,但是对大数据如何做好存储后的下一步处理将是未来竞争的焦点,目前比较受欢迎的Storm, Spark, Hadoop三个大数据处理工具都是JVM上的语言写成的。
      Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点。
      Storm由java和clojure写成,storm的优点是全内存计算,因为内存寻址速度是硬盘的百万倍以上,所以storm的速度相比较hadoop非常快。
      hadoop是实现了mapreduce的思想,将数据切片计算来处理大量的离线数据数据。hadoop处理的数据必须是已经存放在hdfs上或者类似hbase的数据库中,所以hadoop实现的时候是通过移动计算到这些存放数据的机器上来提高效率。
       本期我们将围绕以下几个话题讨论:
       1、大数据核心是什么?
       2、Storm, Spark, Hadoop三个大数据处理工具谁将成为主流?
       3、你觉得今年大数据的发展趋势如何?

http://www.itpub.net/thread-1845750-4-1.html

2、Storm, Spark, Hadoop三个大数据处理工具谁将成为主流?

RE:

Storm : 内存级计算, 基于"流" 的实时处理, 适合 "流" 模式      类似大数据工具参照 IBM Infosphere streams

Hadoop : 磁盘级计算(hdfs), 基于"任务"调度的离线批处理      类似大数据工具参照 IBM Infosphere biginsight

Spark : Hadoop Mapreduce 的升级, 迭代运算效率更高, 总的来说使用更广

三者在适用性上各有优势, 但 大数据分布式处理的核心是相同的


1、大数据核心是什么?
有三个方面:一是数据,没有数据扯啥都是白搭,二是技术,没有大数据的处理技术,那么数据也就只是一些磁盘,三是思想,有了数据和处理技术,还要有idea,也就是怎么让数据产生更大的价值?
2、Storm, Spark, Hadoop三个大数据处理工具谁将成为主流?
storm是实时处理,spark和hadoop是批处理,两者是互补。
而spark和hadoop比较的话,spark主要是充分利用内存计算并且支持更多的操作而不仅是map/reduce,这样有些迭代密集的算法执行效率会更高。而hadoop可能需要多个mr任务来完成。
在2.0之后,hadoop使用了新的yarn框架,map/reduce只是其中一种默许了,spark也可以在hadoop的yarn框架下运行的,所以2者还会是融合的


1、大数据核心是什么?
核心在于如何从海量数据中发掘出对企业有利的价值。技术只是大数据的一个载体,最关键的是如何把这一坨数据变为对企业有利的决策。
从技术上看,为了支撑这一体系,分布式计算和存储毫无疑问是方向。在我看起来,分布式计算和分布式存储现在已经渐渐分开了。
如spark, mapreduce, storm都是典型的计算框架,而HDFS是最主流的存储结构。当然还有为数众多的NoSQL和其他分布式文件系统。
所以说技术上的核心我认为是分布式计算框架,和分布式存储引擎。

2、Storm, Spark, Hadoop三个大数据处理工具谁将成为主流?
三者没有冲突吧。Spark已经可以运行在Hadoop Yarn里面了,Storm是一种流式处理引擎,各自都在干不同的东西。
Hadoop今后可能会渐渐从MapReduce的概念中走出来,作为一种分布式调度机制。内部的运算框架现在看起来Spark比MapReduce要优秀。
Storm是完全不同的东西,这三者不是互相取代,而是互相融合的工具。

3、你觉得今年大数据的发展趋势如何?
在传统行业领域,基础引擎层面应该会看到Spark渐渐发力,MapReduce依然会被很多企业使用,不过企业会渐渐开始认识到MR的性能不足,开始研究Spark
流式处理也会被企业提到日程上,但是距离真正部署还有一段差距。


活动背景:
     在过去的10年中,很多技术承诺帮助处理和分析我们拥有的大批量信息,而这些技术多数都出现了不足。我们知道这一点,因为作为专注于数据的程序员,我们已经都尝试过了。很多方法都是受专利保护的,导致供应商被锁定。一些方法看起来很有希望,但无法扩展以处理大型数据集,还有很多是宣传很好但不能满足预期,或者在关键时刻还没有准备好。
然而,Apache Hadoop登场之后,一切都不一样了。当然这里也有宣传的因素,但它是一个开源项目,已经在大规模可扩展商业应用中取得了不可思议的成功。尽管学习曲线有些陡峭,但这是我们第一次可以轻松地编写程序并对大规模数据进行分析——以一种以前我们做不到的方式。MapReduce算法可以使开发人员处理分布在可扩展机器集群上的数据,基于该算法,我们以过去无法做到的方式,在进行复杂数据分析方面取得了很大的成功。

本期话题:
1、MapReduce的强项和弱点是什么,以及我们如何自定义它以便更好地满足自己的需求?
2、为什么我们需要在MapReduce之上有一个额外的协调层,以及Oozie是怎么满足这个需求的?
3、我们如何使用特定领域语言(Domain-Specific Language,DSL)来简化MapReduce开发?
4、每个人都在讲的实时Hadoop是什么,它可以做什么,以及它不能做什么?它的工作原理是什么?
5、我们如何确保Hadoop应用程序的安全,我们需要考虑什么,我们必须考虑什么安全隐患,以及处理这些问题有哪些方法?
6、我们如何将自己的Hadoop应用程序迁移到云中,以及这样做有哪些重要的考虑因素?
7、阅读样章后,本书的看法,您觉得hadoop过时了吗?

MapReduce在处理数据方面的优点有:
第一, 这个模型非常方便使用,即使是对于完全没有分布式程序的程序员也是如此。它隐藏了并行计算的细节,错误容灾,本地优化以及负载均衡。MapReduce运行开发人员使用自己熟悉的语言进行开发,如Java,C#,Python,C++等等。
第二, 对于大型的计算需求使用MapReduce可以非常轻松的完成。
比如说, Google使用MapReduce来提供网页搜索服务,排序,数据挖掘,机器学习,以及其他系统。
第三, 通过MapReduce,应用程序可以在超过1000个节点的大型集群上运行,并且提供经过优化的错误容灾。
不足地方:
1. 不适合事务/单一请求处理
MapReduce绝对是一个离线批处理系统,对于批处理数据应用得很好:MapReduce(不论是Google的还是Hadoop的)是用于处理不适合传统数据库的海量数据的理想技术。但它又不适合事务/单一请求处理。(HBase使用了来自Hadoop核心的HDFS,在其常用操作中并没有使用MapReduce。)
2. 不能随即读取
3. 以蛮力代替索引
在索引是更好的存取机制时,MapReduce将劣势尽显。
4. low-level语言和操作
“直接开始你想要的 -- 而不是展示一个算法,解释如何工作的。” (关系型数据库的观点) -- High level(DBMS)
“展示数据存取的算法。” (Codasyl 的观点) -- Low level(MapReduce)
5. 性能问题
想想N个map实例产生M个输出文件-每个最后由不同的reduce 实例处理, 这些文件写到运行map实例机器的本地硬盘. 如果N是1,000, M是500,map阶段产生500,000个本地文件. 当reduce阶段开始, 500个reduce实例每个需要读入1,000文件,并用类似FTP协议把它要的输入文件从map实例运行的节点上pull取过来. 假如同时有数量级为100的reduce实例运行, 那么2个或2个以上的reduce实例同时访问同一个map节点来获取输入文件是不可避免的-导致大量的硬盘查找, 有效的硬盘运转速度至少降低20%. 这就是为什么并行数据库系统不实现split文件, 采用push(推到socket套接字)而不是pull. 由于MapReduce的出色容错依赖于如何实现split文件, MapReduce框架是否成功地转向使用push范式, 不是很清楚.

6. 仅提供了现代DBMS功能的一小部分
作为用于分布式处理的算法技术,MapReduce不是数据库,不支持索引、数据更新、事务及完整性约束等,且与多数DBMS工具不兼容。

7. 不适合一般web应用
大部分web应用,只是对数据进行简单的访问,每次请求处理所耗费的资源其实非常小,它的问题是高并发,所以要采用负载均衡技术来分担负载。只有当特殊情况下,比如建索引,进行数据分析等,才可能用MR。


本书提到了hadoop的几个方面:海量存储;支持快速数据访问的分布式处理;可靠性,失效转移和可扩展性,我觉得它适合部分场景,不会过时,只是会随着大量使用,不断完善,加入一些更优化的技术。


5、我们如何确保Hadoop应用程序的安全,我们需要考虑什么,我们必须考虑什么安全隐患,以及处理这些问题有哪些方法?
    1、在规划部署阶段就确定数据的隐私保护策略,最好是在将数据放入到Hadoop之前就确定好保护策略。
  2、确定哪些数据属于企业的敏感数据。根据公司的隐私保护政策,以及相关的行业法规和政府规章来综合确定。
  3、及时发现敏感数据是否暴露在外,或者是否导入到Hadoop中。


我来唠叨下,对书还是蛮期待的。
4、每个人都在讲的实时Hadoop是什么,它可以做什么,以及它不能做什么?它的工作原理是什么?
毫无疑问,实时hadoop是hadoop发展的必然趋势,特别是以storm、Esper等复杂事件引擎为代表的流处理技术的兴起,是对hadoop生态系统的重要补充。
实时hadoop是什么: 实时hadoop即利用storm等数据流处理引擎来实现事件的实时处理、实时预警等功能;
可以做什么:实时的数据流处理,可以用于信用卡欺诈、异常交易监控等对实时性要求比较高的领域;
不能做什么:显然对于大数据量的批处理计算MR还是取主导作用,流处理技术处理起来还是力不从心;
工作原理:源端agent实时捕获变化数据流,将捕获到的数据流传入复杂事件引擎,通过EPL语言等实现复杂事件流的过滤、聚合、触发等处理。


7、阅读样章后,本书的看法,您觉得hadoop过时了吗?

读了样章,前面两章相对还是比较偏基础,期待后面更多精彩章节,特别是Oozie章节!
关于hadoop过时问题:hadoop其实已经成为大数据处理的事实上的标准,而且随着时间的推移,其生态系统会越来越庞大并逐步弥补如在实时数据查询与数据流处理方面的缺陷,因此我想hadoop在10年内应该都不会过时。
当然今年兴起的以spark为代表的内存计算技术,也不能完全取代hadoop,个人认为其也是hadoop生态系统的一个重要补充和组成部分。

一般而言,系统安全机制由认证(authentication)和授权(authorization)两大部分构成。认证就是简单地对一个实体的身份进行判断;而授权则是向实体授予对数据资源和信息访问权限的决策过程。同Hadoop 1.0一样,Hadoop 2.0中的认证机制采用Kerbero和Token两种方案


1、MapReduce的强项和弱点是什么,以及我们如何自定义它以便更好地满足自己的需求?
MapReduce的强项是
1)能并行处理海量数据集
2)简化了程序员的开发工作,把处理过程的繁琐细节都给隐藏了
3)可伸缩性非常优秀(增加服务器就能增加相应的计算能力)
MapReduce的弱点是
1)不适合实时类的应用
2)在处理各种复杂类型的数据时有点力不从心
要自定义MapReduce,通常都是根据应用场景来确定的。
比如对输出结果有要求,那么就需要对MapReduce的输出进行自定义。因为MapReduce框架对数据处理结果的输出会根据key值进行默认的排序,所以我们可以自定义输出。
又比如,可以用MapReduce的InputFormat来切分输入文件,以此更好的适应我们的需求。

2、为什么我们需要在MapReduce之上有一个额外的协调层,以及Oozie是怎么满足这个需求的?
Oozie是Hadoop生态圈里的工作流调度引擎,可以使用Oozie进行应用协作,简化多种应用的合并,并以一种非常灵活的方式将多种工具的工作串联起来。
Oozie还可以组合MapReduce作业,处理源数据并将其转换为中间数据。

3、我们如何使用特定领域语言(Domain-Specific Language,DSL)来简化MapReduce开发?
学习MapReduce编程是很有学习曲线的,这个学习曲线有点陡峭。
而使用特定领域语言也可以写MapReduce程序。
比如Concurrent公司发布的Cascading特定领域语言,它支持在Apache Hadoop平台上构建数据应用。
Cascading特定领域语言支持Hadoop 2.x,支持YARN。
Cascading特定领域语言实现了基于管道的面向大规模数据工作流的函数式编程。
主页:http://www.cascading.org/

4、每个人都在讲的实时Hadoop是什么,它可以做什么,以及它不能做什么?它的工作原理是什么?
每个人都在讲的实时Hadoop是Apache Storm。
Storm可以在计算机集群中开发实时计算应用。
除了Storm,还有些实时Hadoop,比如Apache Drill、Cloudera Impala、Stinger Initiative、Tez等。
Storm的原理:Storm处理工作会委派给不同类型的组件,每个组件负责一项简单的、特定的处理任务。Storm集群的输入流由名为Spout的组件负责。Spout将数据传递给名为Bolt的组件,Bolt以某种方式处理这些数据。例如Bolt以某种存储方式持久化这些数据,或者将它们传递给另外的Bolt。你可以把一个Storm集群想象成一条由Bolt组件组成的链,每个Bolt对Spout暴露出来的数据做某种方式的处理。

5、我们如何确保Hadoop应用程序的安全,我们需要考虑什么,我们必须考虑什么安全隐患,以及处理这些问题有哪些方法?
要确保Hadoop的安全,我们需要注意:
1)非法添加从节点
2)非法添加客户端
3)非法的应用连接
4)用户身份造假
5)Web界面的任意访问
处理这些问题可以采取:
1)使用安全协议,如Simple协议、Kerberos协议等
2)设置用户组及权限
3)确定数据的隐私保护策略
4)划分敏感数据
5)对敏感数据采用隐藏和加密技术

6、我们如何将自己的Hadoop应用程序迁移到云中,以及这样做有哪些重要的考虑因素?
Hadoop应用迁移到云,要注意以下因素:
1)Hadoop最好是运行在物理服务器上
Hadoop的数据节点部署到各物理服务器上,采用各物理服务器自己的存储设备,不要使用共享存储设备。
2)Hadoop是机架感知的
Hadoop的数据节点安装到机架上,每个机架通常保护多种数据节点服务器,其上有机架交换机处理网络通信。
机架感知意味着Name节点知道每一个数据节点服务器位于哪个机架,在哪里,这能确保Hadoop写数据到3个不同机架的数据节点上,有助于预防数据丢失(比如机架故障导致的)。

7、阅读样章后,本书的看法,您觉得hadoop过时了吗?
没有。
像Spark、Storm等的兴起,让很多人感觉到Hadoop似乎过时了,但真是这样吗?我不同意。
首先还是要对Hadoop有一个正确的认识,Hadoop不是大数据解决方案的万能钥匙。
根据不同的应用场景,应选择最适合的技术。
比如离线处理选择MapReduce,在线处理选择Storm或Impala,迭代计算选择Spark,流处理选择S4。
不要低估Hadoop,Hadoop的生态圈如此的庞大,很多很多优秀的程序员都在改进Hadoop,或者是为Hadoop添砖加瓦,Hadoop还有无穷的生命力。
样章只提供了前两章的内容,太少了点,意犹未尽啊!


哎,还怎么吐槽啊,都半夜1点了还在看hive源码,查相关问题,看MR运行机制。 最近遇到瓶颈问题,hive 与 hbase对接,将hbase作为hive的存储,在hive中进行查询分析,功能、性能等等一大堆问题。 希望早点能解决掉这个大的问题。希望能中奖得书啊,我可是很认真学习的同学哦!!!


1. MapReduce在处理数据方面的优点有: 第一,这个模型非常方便使用,即使是对于完全没有分布式程序的程序员也是如此。它隐藏了并行计算的细节,错误容灾,本地优化以及负载均衡。MapReduce运行开发人员使用自己熟悉的语言进行开发,如Java,C#,Python,C++等等。 
第二,对于大型的计算需求使用MapReduce可以非常轻松的完成。 比如说,Google使用MapReduce来提供网页搜索服务,排序,数据挖掘,机器学习,以及其他系统。 
第三,通过MapReduce,应用程序可以在超过1000个节点的大型集群上运行,并且提供经过优化的错误容灾。
大数据对将来生活的影响不可估量,人们应该关注的不仅仅是大数据技术,还有大数据思想对生活的多方面渗透。大数据时代已然到来,任何人都无法避免。人处于社会之中,个人在现代国家下是以数据为存在方式,而数据采集之后的分析显得尤为重要,利用hadoop这个强大的框架能够分析大数据实现数据挖掘,大数据的价值不再单纯来源于它的基本用途,而更多源于它的二次利用。


7.随着Hadoop的不断发展,对于解决大数据提供了强大的工具,但是由于中文资料偏少,译者便做了本书的翻译。 本书不仅仅是对Hadoop的讲解,而且添加了很多新技术的说明,例如Oozie、DSL等。对于应用大数据的开发者来说,都是非常难得的资料。 本书作者BorisLublinsky、KevinT.Smith、AlexeyYakubovich以及技术编辑MichaelC.Daconta,都是活跃在大数据前言的前辈,对于hadoop都是有非常深刻的实践经验人。 在前言部分,作者也很详细的说明了写作本书的目的,并不是单纯的讲解hadoop,而是要从Hadoop的生态系统来分析如何共同工作的。而且作者很细心的对于每个章节适合的人群做了详细的说明。 作者通过13章节的讲解,将hadoop从基础到高级的应用展现在读者面前,作为本书的目录页清晰的展示了本书要讲解的详细内容。 在第一章中,作者用清晰详细的语言,阐述了hadoop的四个方面,即了解大数据、认识hadoop生态系统、熟悉hadoop、使用hadoop的企业级应用。 作者通过近几年的大数据量的翻倍数字来说明数据存储和应用对于目前发展的重要性,在对数据‘大数据’的描述中,也说出了大数据对于传统存储的挑战, 书中通过Yahoo的应用例子以及在过去10年的数据增长情况,来充分的说明了hadoop是为大数据提供了一个非常好的解决方案。 在书中的作者阐述了Hadoop之所以为一个生态系统,它包含大量的组件,从数据存储到数据集成、数据处理以及数据分析师的专用工具,而不同于一般意义上的工具软件的定义,hadoop更像是一个集合体。 书中也使用了一些配图,更清晰的阐述了本书的内容,使图书更有吸引力。对于Hadoop发行版的讲解更是配有表格进行了说明,清楚易理解。 在Hadoop开发企业级应用中的讲解中,更是通过阶层的模式进行了详细的说明,从用户访问到安全,再到数据源的实用,都详细的进行了介绍,让读者读后印象非常深刻,而且容易理解。 在第二章中的数据存储讲解中,首先是对HDFS的详细讲解和说明,对于晦涩难懂的地方,更是配有了彩图和实例代码进行了详细的说明,对于代码的讲解上也是更加的追求实战效果和模块方式。 文字的说明中,穿插的模型图片,更是让读者容易理解,书中丰富的代码量,也让开发者读起来很过瘾。

Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,包括: 
1、持续的软件版本发布/测试项目。 
2、监控外部调用执行的工作。



SPARK(Spark)编辑

本词条缺少 信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧!
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但 不同于MapReduce的是Job中间输出结果可以保存在内存中 从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法

目录

  Spark生态系统

Spark生态系统

  • Shark ( Hive on Spark) : Shark基本上就是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性,apR Shark 使用了Hive的API来实现query Parsing和 Logic Plan generation,最后的PhysicalPlan execution阶段用Spark代替Hadoop Meduce 。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。
  • Spark streaming: 构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。
  • Bagel: Pregel on Spark,可以用Spark进行图计算,这是个非常有用的小项目。Bagel自带了一个例子,实现了Google的PageRank算法。



最后

以上就是紧张白猫为你收集整理的开源式、分布式存储、计算, SPARK(Spark)编辑的全部内容,希望文章能够帮你解决开源式、分布式存储、计算, SPARK(Spark)编辑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部