- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SparkStreaming写入HBase的实现和优化.doc
SparkStreaming写入HBase的实现和优化
摘 要:海量数据的实时处理不仅要求计算框架快速高效,同时要求流处理过程中产生的中间数据的存储过程同样高效,因此,可通过提高Spark Streaming对中间结果数据的处理速度来提升流处理效率。为提高Spark Streaming处理中间结果的效率,文中选择HBase作为中间数据存储系统,并通过分析Spark Streaming的架构及HBase的存储原理,给出了Spark Streaming向HBase写入数据的方法并进行优化。通过对Spark Streaming存储过程的优化,可以一定程度上提高实时数据的流处理效率。
关键词:Spark Streaming;HBase;大数据;内存计算;流处理
中图分类号:TP274.2 文献标识码:A 文章编号:2095-1302(2016)04-00-03
0 引 言
随着移动互联网、社交网络等领域的快速发展,数据量呈指数式增长,大数据时代全面来临。在这个高速发展的时代,数据的变化速度也越来越快,对数据处理和响应时间的要求也更加苛刻,数据的实时分析和流式处理变得尤为重要。例如,在移动通信领域,对海量数据进行实时的挖掘分析,可以准确识别类似于诈骗的电信请求,从而有效避免电信诈骗的发生。再比如,通过对移动人口数据的实时挖掘分析,快速预测可能的突发事件。Spark Streaming是建立在Spark上的实时计算框架,拥有基于内存的高速执行引擎,并且提供丰富的接口和API,被广泛用于实时数据流的分析处理。
对海量实时数据进行处理,必然会产生大量的中间数据,如何高效存储Spark Streaming处理过程中产生的数据也是大数据处理过程中常见的问题。HBase的LSM树型存储结构使其具有实时读写数据的功能。使用HBase作为Spark Streaming中间数据的存储数据库可大大提高数据处理的效率。
本文基于实时数据的流式处理过程,给出了Spark Streaming将数据写入HBase的具体方法,并在此基础上进行了优化。
1 Spark Streaming简介
Spark Streaming是Spark生态系统的重要组成部分,主要用于实时数据流的处理。Spark Streaming的工作原理是将流式计算分解成一系列短小的批处理作业,本质上也是数据的批量处理,只是将时间跨度控制在数十毫秒到数秒之间。这里批处理的引擎依然为Spark,Spark Streaming将输入数据按照批量大小(此处指时间跨度如1秒)分成一段一段的数据(Discretized Stream),然后每一段数据都会转换成Spark中的弹性数据集(Resilient Distributed Dataset,RDD),最后将Spark Streaming中对DStream的具体操作都转换成Spark中对RDD的操作,并将中间结果暂存在内存中。整个流式数据处理任务可以根据需求对中间数据加以利用,比如叠加,或者将结果存储到外部设备,例如文件系统HDFS,或者外部数据库Hive,HBase。
HBase ?C Hadoop Database是Apache Hadoop的一个子项目,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase采用LSM树的存储结构,这种结构的核心在于每一次执行插入操作时数据都会先进入MemStore(内存缓冲区),当MemStore达到上限时,HBase会将内存中的数据输出为有序的StoreFile文件数据。而在HBase中数据列是由列簇来组织的,所以每一个列簇都会有对应的一个数据结构,HBase将列簇的存储数据结构抽象为Store,一个Store代表一个列簇。这样在Store中会形成很多个小的StoreFile,当这些小的File数量达到阈值时,HBase会用一个线程来把这些小File合并成一个大File。这样,HBase就把效率低下的文件中的插入、移动操作转变成了单纯的文件输出、合并操作。从而使HBase的读写数据速度非常快,能够支持实时读写。所以在对海量实时数据进行处理时通常使用HBase作为数据存储系统。
2 Spark Streaming写入数据到HBase
2.1 实现方法
Spark Streaming向HBase写入数据时需要对每一条数据执行插入操作,通常会采用输出方法foreachRDD(func),将func(此处指将数据插入HBase表格)作用于DStream的每一个RDD。
在上述代码中,countBase为待处理的DStream,首先对countBase进行foreachRDD操作,然后对每个RDD进行操作。此处依据项目需求对
文档评论(0)