java培训吧 关注:116,359贴子:396,790

与 Hadoop 对比,如何看待 Spark 技术

只看楼主收藏回复

最近公司邀请来王家林老师来做培训,其浮夸的授课方式略接受不了。其强烈推崇Spark技术,宣称Spark是大数据的未来,同时宣布了Hadoop的死刑。
那么与Hadoop相比,Spark技术如何?现工业界大数据技术都在使用何种技术?
-----------补充------------
希望大家能将关注点放在Spark上。另Spark圈内应该会有人对此人有了解。此人在51CTO上有100期的课程,并号称7岁接触代码,现年28岁,2010年阅读完Android源码后,专注大数据。


1楼2015-10-23 14:03回复
    Hadoop
    首先看一下Hadoop解决了什么问题,Hadoop就是解决了大数据(大到一台计算机无法进行存储,一台计算机无法在要求的时间内进行处理)的可靠存储和处理。
    HDFS,在由普通PC组成的集群上提供高可靠的文件存储,通过将块保存多个副本的办法解决服务器或硬盘坏掉的问题。


    2楼2015-10-23 14:20
    回复
      广告
      立即查看
      MapReduce,通过简单的Mapper和Reducer的抽象提供一个编程模型,可以在一个由几十台上百台的PC组成的不可靠集群上并发地,分布式地处理大量的数据集,而把并发、分布式(如机器间通信)和故障恢复等计算细节隐藏起来。而Mapper和Reducer的抽象,又是各种各样的复杂数据处理都可以分解为的基本元素。这样,复杂的数据处理可以分解为由多个Job(包含一个Mapper和一个Reducer)组成的有向无环图(DAG),然后每个Mapper和Reducer放到Hadoop集群上执行,就可以得出结果。


      3楼2015-10-23 14:27
      回复
        在MapReduce中,Shuffle是一个非常重要的过程,正是有了看不见的Shuffle过程,才可以使在MapReduce之上写数据处理的开发者完全感知不到分布式和并发的存在。


        4楼2015-10-23 14:32
        回复
          Hadoop的局限和不足
          但是,MapRecue存在以下局限,使用起来比较困难。
          抽象层次低,需要手工编写代码来完成,使用上难以上手。
          只提供两个操作,Map和Reduce,表达力欠缺。


          5楼2015-10-23 14:40
          回复
            Apache Tez,Tez是HortonWorks的Stinger Initiative的的一部分。作为执行引擎,Tez也提供了有向无环图(DAG),DAG由顶点(Vertex)和边(Edge)组成,Edge是对数据的移动的抽象,提供了One-To-One,BroadCast,和Scatter-Gather三种类型,只有Scatter-Gather才需要进行Shuffle。


            6楼2015-10-23 14:47
            回复
              这个抽象就是RDD(Resilient Distributed Dataset),RDD就是一个不可变的带分区的记录集合,RDD也是Spark中的编程模型。Spark提供了RDD上的两类操作,转换和动作。转换是用来定义一个新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,动作是返回一个结果,包括collect, reduce, count, save, lookupKey。


              7楼2015-10-23 14:51
              回复
                通过提供DAG语义和操作,提供了整体的逻辑,通过减少不必要的操作,Tez提升了数据处理的执行性能


                8楼2015-10-23 14:52
                回复
                  广告
                  立即查看
                  在Spark中,所有RDD的转换都是是惰性求值的。RDD的转换操作会生成新的RDD,新的RDD的数据依赖于原来的RDD的数据,每个RDD又包含多个分区。那么一段程序实际上就构造了一个由相互依赖的多个RDD组成的有向无环图(DAG)。并通过在RDD上执行动作将这个有向无环图作为一个Job提交给Spark执行。


                  9楼2015-10-23 14:58
                  回复
                    Spark为迭代式数据处理提供更好的支持。每次迭代的数据可以保存在内存中,而不是写入文件。


                    10楼2015-10-23 15:07
                    回复
                      Spark的优势不仅体现在性能提升上的,Spark框架为批处理(Spark Core),交互式(Spark SQL),流式(Spark Streaming),机器学习(MLlib),图计算(GraphX)提供一个统一的数据处理平台,这相对于使用Hadoop有很大优势。


                      11楼2015-10-23 15:40
                      回复
                        javabean最简单的理解是数据包.这个数据包里包含了一些信息(属性).比如名称,性别,年龄等.包含了可以给这些属性赋值和取值的方法(get和set方法).通过实例化后的赋值操作(set方法),可以在别的地方把这个实例取出来,然后通过get方法把值取出来.这就是javabean.或者叫vo.如果在方法中含有了一些逻辑.比如getName的时候,要给name前面加上公司名称.通常情况下,就叫做bo.表对应的持久化类,一般叫po.或者pojo.


                        12楼2015-10-23 16:36
                        回复
                          而我自己仍然赞成“java是编译型语言”的说法,因为“编译”其本质就是“把一个相对高级的语言转换为另一个相对低级的语言”,而由java-> class文件的编译已经满足了这个特征; 而后面你要说jvm是“解释执行”的,那其实硬件对于机器码又何尝不是“解释执行”呢?


                          13楼2015-10-23 16:39
                          回复
                            我尽然把下面的看完了,建议换个输入法吧
                            感谢楼主,好人一生平安


                            14楼2015-10-23 16:41
                            回复
                              广告
                              立即查看
                              一个人如果完全遵照他的内心去活着.他要么 成为一个疯子.要么 成为一个传奇


                              15楼2015-10-23 16:43
                              回复