apple13810
1、 Spark VSHadoop哪些异同点Hadoop:布式批处理计算强调批处理用于数据挖掘、析Spark:基于内存计算源集群计算系统目让数据析更加快速, Spark 种与 Hadoop 相似源集群计算环境两者间存些同处些用同处使 Spark 某些工作负载面表现更加优越换句说Spark 启用内存布数据集除能够提供交互式查询外优化迭代工作负载Spark Scala 语言实现 Scala 用作其应用程序框架与 Hadoop 同Spark Scala 能够紧密集其 Scala 像操作本集合象轻松操作布式数据集尽管创建 Spark 支持布式数据集迭代作业实际 Hadoop 补充 Hadoop 文件系统并行运行通名Mesos第三集群框架支持行Spark 由加州伯克利校 AMP 实验室 (Algorithms,Machines,and People Lab) 发用构建型、低延迟数据析应用程序虽 Spark 与 Hadoop 相似处提供具用差异新集群计算框架首先Spark 集群计算特定类型工作负载设计即些并行操作间重用工作数据集(比机器习算)工作负载优化些类型工作负载Spark 引进内存集群计算概念内存集群计算数据集缓存内存缩短访问延迟.数据处理面相信家hadoop已经耳熟能详基于GoogleMap/Reduce实现Hadoop发者提供map、reduce原语使并行批处理程序变非简单优美Spark提供数据集操作类型种像Hadoop提供MapReduce两种操作比map,filter, flatMap,sample, groupByKey, reduceByKey, union,join, cogroup,mapValues, sort,partionBy等种操作类型些操作称Transformations同提供Count,collect, reduce, lookup, save等种actions些种数据集操作类型给层应用者提供便各处理节点间通信模型再像Hadoop唯Data Shuffle种模式用户命名物化控制间结区等说编程模型比Hadoop更灵.2、Spark容错性面否比其工具更优越性Spark论文《Resilient Distributed Datasets: AFault-TolerantAbstraction for In-Memory Cluster Computing》没看容错性做倒提布式数据集计算做checkpoint两种式checkpoint dataloggingthe updates貌似Spark采用者文提虽者看似节省存储空间由于数据处理模型类似DAG操作程由于图某节点错由于lineage chains依赖复杂性能引起全部计算节点重新计算本低说存数据存更新志做checkpoint由用户说算吧相于都没说皮球踢给用户所我看由用户根据业务类型衡量存储数据IO磁盘空间代价重新计算代价选择代价较种策略取代给间结进行持久化或建立检查点Spark记住产某些数据集操作序列节点现故障Spark根据存储信息重新构造数据集认错其节点帮助重建3、Spark于数据处理能力效率哪些特色Spark提供高性能数据处理能力使用户快速反馈体验更另类应用做数据挖掘Spark充利用内存进行缓存利用DAG消除必要步骤所比较合适做迭代式运算相部机器习算通迭代收敛算所适合用Spark实现我些用算并行化用Spark实现R语言便调用降低用户进行数据挖掘习本Spark配流数据处理模型与Twitter Storm框架相比Spark采用种趣且独特办Storm基本像放入独立事务管道其事务布式处理相反Spark采用模型收集事务短间内(我假设5秒)批处理式处理事件所收集数据自RDD使用Spark应用程序用组进行处理作者声称种模式缓慢节点故障情况更加稳健且5秒间间隔通于数应用已经足够快种统流式处理与非流式处理部总结几看Hadoop权威指南、hbase权威指南、hive权威指南、规模布式存储系统、zoopkeeper、数据互联网规模数据挖掘与布式处理等书同补充能静完整看完本书相错
Camillemcc
Spark对硬件的要求估计所有的spark开发者都很关心spark的硬件要求。恰当的硬件配置需要具体情况具体分析,在这里给出以下建议。主要译自官网 一,存储系统 因为大多数Spark工作可能需要从外部存储系统(例如Hadoop文件系统或HBase)中读取输入数据,所以将spark尽可能部署到靠近存储系统很重要。所以,有如下建议: 1,如果可能,在与HDFS相同的节点上运行Spark。最简单的方式是将spark的Standalone集群和hadoop集群安装在相同的节点,同时配置好Spark和hadoop的内存使用,避免相互干扰(对于hadoop,每个task的内存配置参数是mapred.child.java.opts;mapreduce.tasktracker.map.tasks.maximum 和mapreduce.tasktracker.reduce.tasks.maximum决定了task的数目)。也可以将hadoop和spark运行在共同的集群管理器上,如mesos和 yarn。 2,如果不可能,请在与HDFS相同的局域网中的不同节点上运行Spark。 3,对于低延迟数据存储(如HBase),可能优先在与存储系统不同的节点上运行计算任务以避免干扰。 二,本地磁盘 虽然Spark可以在内存中执行大量的计算,但它仍然使用本地磁盘来存储不适合RAM的数据,以及在stage之间,也即shuffle的中间结果。建议每个节点至少有4-8块磁盘,并且不需要RAID,仅仅是独立的磁盘挂在节点。在Linux中,使用noatime选项安装磁盘,以减少不必要的写入。在spark任务中,spark.local.dir配置可以十多个磁盘目录,以逗号分开。如果运行在hdfs上,与hdfs保持一致就很好。 使用noatime选项安装磁盘,要求当挂载文件系统时,可以指定标准Linux安装选项(noatime),这将禁用该文件系统上的atime更新。磁盘挂在命令: mount -t gfs BlockDevice MountPoint -onoatime BlockDevice 指定GFS文件系统驻留的块设备。 MountPoint 指定GFS文件系统应安装的目录。 例子: mount -t gfs /dev/vg01/lvol0 /gfs1 -onoatime 三,内存 单台机器内存从8GB到数百GB,spark都能运行良好。在所有情况下,建议仅为Spark分配最多75%的内存;留下其余的操作系统和缓冲区缓存。 需要多少内存取决于你的应用程序。要确定你的应用的特定数据集需要多大内存,请加载部分数据集到内存,然后在Spark UI的Storage界面去看它的内存占用量。 请注意,内存使用受到存储级别和序列化格式的极大影响 - 有关如何减少内存使用的技巧,请参阅另一篇调优的文章。 最后,请注意,对于超过200GB的内存的机器JAVA VM运行状态并不一直表现良好。如果买的机器内存超过了200GB,那么可以在一个节点上运行多个worker。Spark Standalone模式下,可以在配置文件 conf/spark-env.sh中设置SPARK_WORKER_INSTANCES的值来设置单节点worker的数目。也可以设置SPARK_WORKER_CORES参数来设置每个Worker的cpu数目。 四,网络 根据以往的经验,假如数据是在内存中,那么spark的应用的瓶颈往往就在网络。用10 Gigabit或者更高的网络,是使spark应用跑的最更快的最佳方式。特别是针对“distributed reduce”应用,如group-bys,reduce-bys和sql joins,就表现的更加明显。在任何给定的应用程序中,可以通过spark ui查看spark shuffle过程夸网络传输了多少数据。 五, cpu 对于每台机器几十个cpu的机器,spark也可以很好的扩展,因为他在线程之间执行最小的共享cpu。应该每台机器至少配置8-16个内核。根据cpu负载,可能需要更多的cpu:一旦数据在内存中,大多数应用程序的瓶颈就在CPU和网络。 推荐阅读: 面试必备|spark 高层通用调优 Spark Adaptive Execution调研Spark 的硬件配置 从MapReduce的兴起,就带来一种思路,就是希望通过大量廉价的机器来处理以前需要耗费昂贵资源的海量数据。这种方式事实上是一种架构的水平伸缩模式——真正的以量取胜。毕竟,以现在的硬件发展来看,CPU的核数、内存的容量以及海量存储硬盘,都慢慢变得低廉而高效。然而,对于商业应用的海量数据挖掘或分析来看,硬件成本依旧是开发商非常关注的。当然最好的结果是:既要马儿跑得快,还要马儿少吃草。 \\ Spark相对于Hadoop的MapReduce而言,确乎要跑得迅捷许多。然而,Spark这种In-Memory的计算模式,是否在硬件资源尤其是内存资源的消耗上,要求更高呢?我既找不到这么多机器,也无法租用多台虚拟instance,再没法测评的情况下,只要寻求Spark的官方网站,又或者通过Google搜索。从Spark官方网站,Databricks公司Patrick Wendell的演讲以及Matei Zaharia的Spark论文,找到了一些关于Spark硬件配置的支撑数据。 \\ Spark 与存储系统 \\ 如果Spark使用HDFS作为存储系统,则可以有效地运用Spark的standalone mode cluster,让Spark与HDFS部署在同一台机器上。这种模式的部署非常简单,且读取文件的性能更高。当然,Spark对内存的使用是有要求的,需要合理分配它与HDFS的资源。因此,需要配置Spark和HDFS的环境变量,为各自的任务分配内存和CPU资源,避免相互之间的资源争用。 \\ 若HDFS的机器足够好,这种部署可以优先考虑。若数据处理的执行效率要求非常高,那么还是需要采用分离的部署模式,例如部署在Hadoop 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的机器足够干净。 \\ 考虑内存消耗问题,倘若我们要处理的数据仅仅是进行一次处理,用完即丢弃,就应该避免使用cache或persist,从而降低对内存的损耗。若确实需要将数据加载到内存中,而内存又不足以加载,则可以设置Storage Level。0.9版本的Spark提供了三种Storage Level:MEMORY_ONLY(这是默认值),MEMORY_AND_DISK,以及DISK_ONLY。 \\ 关于数据的持久化,Spark默认是持久化到内存中。但它也提供了三种持久化RDD的存储方式: \\ • \\t in-memory storage as deserialized Javaobjects \\t\\t • \\t in-memory storage as serialised data \\t\\t • \\t on-disk storage \\t\ 第一种存储方式性能最优,第二种方式则对RDD的展现方式(Representing)提供了扩展,第三种方式则用于内存不足时。 \\ 然而,在最新版(V1.0.2)的Spark中,提供了更多的Storage Level选择。一个值得注意的选项是OFF_HEAP,它能够将RDD以序列化格式存储到Tachyon中。相比MEMORY_ONLY_SER,这一选项能够减少执行垃圾回收,使Spark的执行器(executor)更小,并能共享内存池。Tachyon是一个基于内存的分布式文件系统,性能远超HDFS。Tachyon与Spark同源同宗,都烙有伯克利AMPLab的印记。目前,Tachyon的版本为0.5.0,还处于实验阶段。 \\ 注意,RDDs是Lazy的,在执行Transformation操作如map、filter时,并不会提交Job,只有在执行Action操作如count、first时,才会执行Job,此时才会进行数据的加载。当然,对于一些shuffle操作,例如reduceByKey,虽然仅是Transformation操作,但它在执行时会将一些中间数据进行持久化,而无需显式调用persist()函数。这是为了应对当节点出现故障时,能够避免针对大量数据进行重计算。要计算Spark加载的Dataset大小,可以通过Spark提供的Web UI Monitoring工具来帮助分析与判断。 \\ Spark的RDD是具有分区(partition)的,Spark并非是将整个RDD一次性加载到内存中。Spark针对partition提供了eviction policy,这一Policy采用了LRU(Least Recently Used)机制。当一个新的RDD分区需要计算时,如果没有合适的空间存储,就会根据LRU策略,将最少访问的RDD分区弹出,除非这个新分区与最少访问的分区属于同一个RDD。这也在一定程度上缓和了对内存的消耗。 \\ Spark对内存的消耗主要分为三部分: \\ 1. \\t 数据集中对象的大小; \\t\\t 2. \\t 访问这些对象的内存消耗; \\t\\t 3. \\t 垃圾回收GC的消耗。 \\t\ 一个通常的内存消耗计算方法是:内存消耗大小= 对象字段中原生数据 * (2~5)。这是因为Spark运行在JVM之上,操作的Java对象都有定义的“object header”,而数据结构(如Map,LinkedList)对象自身也需要占用内存空间。此外,对于存储在数据结构中的基本类型,还需要装箱(Boxing)。Spark也提供了一些内存调优机制,例如执行对象的序列化,可以释放一部分内存空间。还可以通过为JVM设置flag来标记存放的字节数(选择4个字节而非8个字节)。在JDK 7下,还可以做更多优化,例如对字符编码的设置。这些配置都可以在spark-env.sh中设置。 \\ Spark 对网络的要求 \\ Spark属于网络绑定型系统,因而建议使用10G及以上的网络带宽。 \\ Spark 对 CPU 的要求 \\ Spark可以支持一台机器扩展至数十个CPU core,它实现的是线程之间最小共享。若内存足够大,则制约运算性能的就是网络带宽与CPU数。 \\ Spark官方利用Amazon EC2的环境对Spark进行了基准测评。例如,在交互方式下进行数据挖掘(Interative Data Mining),租用Amazon EC2的100个实例,配置为8核、68GB的内存。对1TB的维基百科页面查阅日志(维基百科两年的数据)进行数据挖掘。在查询时,针对整个输入数据进行全扫描,只需要耗费5-7秒的时间。如下图所示: 在Matei Zaharia的Spark论文中还给出了一些使用Spark的真实案例。视频处理公司Conviva,使用Spark将数据子集加载到RDD中。报道说明,对于200GB压缩过的数据进行查询和聚合操作,并运行在两台Spark机器上,占用内存为96GB,执行完全部操作需要耗费30分钟左右的时间。同比情况下,Hadoop需要耗费20小时。注意:之所以200GB的压缩数据只占用96GB内存,是因为RDD的处理方式,使得我们可以只加载匹配客户过滤的行和列,而非所有压缩数据。`Spark集群硬件配置推荐 计算与存储: 大多数Spark作业可能需要从外部存储系统(例如 :Cassandra、Hadoop文件系统或HBase)读取输入数据,所以要让Spark计算引擎尽可能靠近数据持久层。如果使用HDFS作为数据存储集群,可以在相同的集群上部署Spark集群,并配置Spark和Hadoop的内存和CPU使用率以避免干扰。我们的生产存储使用的是Cassandra集群,spark master 服务单独部署,其它节点同时部署:Cassandra + spark worker,保证spark worker 节点可以快速从本地读取数据进行计算汇总。 磁盘: 虽然Spark可以在内存中执行大量的计算,但它仍然可能会使用本地磁盘来存储不适用于RAM的数据,建议每个节点配置4-8个磁盘,不需要配置RAID(磁盘阵列),磁盘成本越来越低,可以考虑配置ssd硬盘,可以大幅提升性能。另外;在Linux中,使用noatime选项挂载磁盘,以减少不必要的写入操作。 在Spark中,可以将spark.local.dir变量配置为多个本地磁盘的地址,多个地址之间以逗号分隔。 内存 建议为Spark分配的内存容量不大于机器总内存容量的75%;确保为操作系统和缓冲区留下足够的内存。根据业务特点评估需要多少内存。请注意,当内存容量超过200GB时Java 虚拟机的性能表现会不稳定。如果您购买的RAM大于200G,则可以为每个节点运行多个worker JVM。在Spark的standalone模式下,您可以通过conf/spark-env.sh中的SPARK_WORKER_INSTANCES变量设置每个节点运行的worker进程数,以及通过SPARK_WORKER_CORES变量设置每个worker可用的cpu核心数。 网络 当数据已经存储在内存中时,很多Spark应用程序的性能瓶颈在于网络的传输速率。推荐最低使用10G的网络。 CPU Spark运行汇总计算任务比较多,推荐配置更多的cpu核数,性能提升还是比较明显,推荐:每台机器至少配置8-16个核。可以根据Spark作业的CPU负载情况,进行配置调整。一旦数据已经在内存中,大多数应用程序的性能瓶颈在于CPU和网络。 参考文档
问题一:引用硕士或博士学位论文 参考文献的格式怎样写 5.学位论文 【格式】[序号]作者.篇名[D].出版地:保存者,出版年份:起始页码. 【举例】
我也是会计专业,今年刚毕业。我没有遇到像你那样的问题呀,开题报告只是一个最初的思路而已,最终还是以你的论文为准的。我们学校发模板的。最主要的是你的论文题目是否定
1、 Spark VSHadoop哪些异同点Hadoop:布式批处理计算强调批处理用于数据挖掘、析Spark:基于内存计算源集群计算系统目让数据析更加快速, S
论文后面的参考文献格式怎么写 论文后面的参考文献格式怎么写? J——期刊文章 M——专著(含古籍中的史、志论著) 参考文献的'类型 根据GB3469-83《文献
房地产论文主要参考文献 在个人成长的多个环节中,大家都写过论文,肯定对各类论文都很熟悉吧,论文对于所有教育工作者,对于人类整体认识的提高有着重要的意义。怎么写论