一种基于Spark内存技术对HBase数据库加速读写的方法与流程

文档序号:16736259发布日期:2019-01-28 12:39阅读:402来源:国知局
本发明涉及大数据计算
技术领域
:,具体地说是一种基于spark内存技术对hbase数据库加速读写的方法。
背景技术
::在大数据时代,每日均会存储计算数以亿计的海量数据。优秀的列式存储组件hbase具有较好的存储、计算、稳定性和平行扩展能力,被使用的范围越来越广,但仍面临一些问题。如,高并发读写混合不足、全局扫描性能不高、复杂语法支持不够等。内存计算组件spark作为一款高性能的内存计算框架,在实时计算领域具有很大的优势。技术实现要素:本发明的技术任务是提供一种基于spark内存技术对hbase数据库加速读写的方法。本发明的技术任务是按以下方式实现的:一种基于spark内存技术对hbase数据库加速读写的方法,对hbase数据库进行改进,将数据的计算单元由hbase转到spark内存计算,数据的高效存储使用hbaseonhdfs架构,调用相应的api进行增加、删除、修改、查找操作,利用内存计算的优势实现大规模列式数据库在高并发、低延时场景的实时查询要求。所述的调用相应的api进行增加、删除、修改、查找操作,包括,采用scala或java语言调用相应的api进行操作。该方法操作具体步骤如下:步骤1)配置hbase相应jar包文件依赖,确保hbase方法可被spark正常获取;步骤2)使用hbaseshell创建表,create'access_log','info';步骤3)启动sparkshell,执行bin/spark-shell–masteryarn–deploy-modeclient–num-executors5–executor-memory500m–executor-cores2;步骤4)配置文件修改,spark应用需要连接到zookeeper集群,然后借助zookeeper访问hbase集群;步骤5)bulkload数据写入hbase,将45m大小的access_log.log文件导入到hbase中,用时7秒。所述的步骤1)中,配置hbase相应jar包文件依赖,是基于spark1.0及以上版本。所述的步骤4)中,借助zookeeper访问hbase集群,包括:将hbase-site.xml文件加入classpath。所述的步骤4)中,借助zookeeper访问hbase集群,包括:在hbaseconfiguration实例中设置。本发明的一种基于spark内存技术对hbase数据库加速读写的方法和现有技术相比,采用内存计算对传统hbase数据库进行改造,对海量数据的入库、查询均有大幅度性能提升,使用sparkonhbase的方式,不仅能够有效提高大数据集群计算性能、缩短产品研发周期,通过内存的高io特性还可对集群的高并发能力和稳定性进行有效提升。具体实施方式实施例1:一种基于spark内存技术对hbase数据库加速读写的方法,对hbase数据库进行改进,将数据的计算单元由hbase转到spark内存计算,数据的高效存储使用hbaseonhdfs架构,采用scala或java语言调用相应的api进行增加、删除、修改、查找操作,利用内存计算的优势实现大规模列式数据库在高并发、低延时场景的实时查询要求。该方法操作具体步骤如下:步骤1)基于spark1.0及以上版本,配置hbase相应jar包文件依赖,确保hbase方法可被spark正常获取;例如:spark-defaults.conf添加配置项spark.driver.extraclasspath/opt/hadoop/data/lib/*,其中/opt/hadoop/data/lib/路径下放hbase依赖的jar包;步骤2)使用hbaseshell创建表,create'access_log','info';步骤3)启动sparkshell,执行bin/spark-shell–masteryarn–deploy-modeclient–num-executors5–executor-memory500m–executor-cores2;步骤4)配置文件修改,spark应用需要连接到zookeeper集群,然后借助zookeeper访问hbase集群;实现方法有两种:一种是将hbase-site.xml文件加入classpath;另一种是在hbaseconfiguration实例中设置;例如:valconf=hbaseconfiguration.create();conf.set("hbase.zookeeper.quorum","slave1,slave2,slave3");conf.set("hbase.zookeeper.property.clientport","2181");conf.set("zookeeper.znode.parent","/hbase")步骤5)bulkload数据写入hbase,将45m大小的access_log.log文件导入到hbase中,用时7秒。相比传统插入模式使用7分钟展现出60倍速度的提升。例如:valconf=hbaseconfiguration.create();conf.set("hbase.zookeeper.quorum","slave1,slave2,slave3");conf.set("hbase.zookeeper.property.clientport","2181");conf.set("zookeeper.znode.parent","/hbase");conf.set(tableinputformat.input_table,"access_log");valtable=newhtable(conf,"access_log");lazyvaljob=job.getinstance(conf);job.setmapoutputkeyclass(classof[immutablebyteswritable]);job.setmapoutputvalueclass(classof[keyvalue]);hfileoutputformat.configureincrementalload(job,table);valrdd=sc.textfile("/opt/hadoop/data/access.log").zipwithindex().map(x=>{valkv:keyvalue=newkeyvalue(bytes.tobytes(x._2+1),"info".getbytes(),"value".getbytes(),x._1.getbytes())(newimmutablebyteswritable(bytes.tobytes(x._2+1)),kv)});rdd.saveasnewapihadoopfile("/tmp/data1",classof[immutablebyteswritable],classof[keyvalue],classof[hfileoutputformat],conf);valbulkloader=newloadincrementalhfiles(conf);bulkloader.dobulkload(newpath("/tmp/data1"),table)。通过上面具体实施方式,所述
技术领域
:的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述
技术领域
:的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1