`
zhangxiong0301
  • 浏览: 363780 次
社区版块
存档分类
最新评论

How-to: Use HBase Bulk Loading, and Why

 
阅读更多

 

 

Hbase对外提供随机、实时的读写访问大数据,但问题是首先需要高效的把数据导入HBASE。通常我们通过mapreduce任务以及设置TableOutputFormat来调用hbase API导入数据。但是这样需要经过hbasewritepath:写数据到memstore,写WALflush数据,以及splitcompact。因此更好的方式是即将介绍的BULKLOAD

 

当我们在hbase使用中碰到以下特征时,可以考虑使用BULKLOAD:

·  You needed to tweak your MemStores to use most of the memory.
·  You needed to either use bigger WALs or bypass them entirely.
·  Your compaction and flush queues are in the hundreds.
·  Your GC is out of control because your inserts range in the MBs.
·  Your latency goes out of your SLA when you import data.

 

 

BULKLOAD就是生成HFILE,直接加载HFILEregionserver的过程,从而绕过writepath

 

bulk loading is the process of preparing and loading HFiles (HBase’s own file format) directly into the RegionServers, thus bypassing the write path and obviating those issues entirely. 

 

 

BULKLOAD的步骤

 

1.  Extract the data from a source, typically text files or another database(准备数据).这个步骤叫准备数据,hbase不会参与其中,需要我们自己用mysqldump等工具将待导入数据提取出来,并上传到HDFS,为后续步骤做好准备。

 

2.   Transform the data into Hfiles(生成HFile.这个步骤是BULKLOAD的核心,通常由一个mapreduce任务为每个region生成一个Hfile。这个mapreduce很多场景下需要我们自己实现map。当然如果默认的map能满足条件的话就不需要自定义mapper,这种情况主要对应tsv文件中的每行的各个字段跟hbase中列完全对应(包括rowkey)。Mapreduce任务的输出键必须是rowkey,值必须是KeyValue, Put, orDelete之一。Reducer是完全由HBASE控制的,主要通过HFileOutputFormat.configureIncrementalLoad() 来完成,这个方法做了很多事:

 

·  Inspects the table to configure a total order partitioner
·  Uploads the partitions file to the cluster and adds it to the    DistributedCache
·  Sets the number of reduce tasks to match the current number of    regions
·  Sets the output key/value class to match HFileOutputFormat’s requirements
·  Sets the reducer up to perform the appropriate sorting (either KeyValueSortReducer or PutSortReducer)

 

3. Load the files into HBase by telling the RegionServers where to find them(加载HFile)。很简单,只需使用LoadIncrementalHFiles (通常叫做 completebulkload)。只需要指定刚生成的Hfile所在的文件夹,就可以直接把各个文件加载到对应的region。有一种情况是,当我们生成好Hfile但还没有导入进Hbase时,目标表发生了split,我们的工具也能在加载Hfile到表的时候自动将Hfile拆分到对应的region,只是不太高效,所以如果在我们的BULKLOAD过程中有其他进程在写目标表,则应该尽快将Hfile加载到hbase

 

 

 

使用场景

1.  原始数据导入(Original dataset load)。这种场景主要是从其他存储系统迁移数据到hbase。我们先要创建好表,并进行预分区,预分区的splitKey需要考虑rowkey的分布和region的数量。

2. 增量导入(Incremental load)。当hbase中某张表已经在对外提供服务,但是我们需要再导入一部分数据到这张表时,就是这种场景

 

 

使用案例

1.    直接导入假如有一个wordcountTSV文件需要导入hbase,每一行的格式为[wordcount]Hbase表则设计为:wordrowkeycount为唯一的一列。则操作步骤如下:

 上传CSVTSV文件:

                    hdfs dfs-put word_count.csv

 

预分区方式创建好表:

     create'wordcount',{NAME=>'f'},   {SPLITS=>['g','m','r','w']}

 

生成Hfile,需要注意的是如果不指定importtsv.bulk.output则会直接将数据写入hbaseHBASE_ROW_KEY代表rowkey,是约定好的。如果想了解这个命令的用法,则输入命令不加参数,然后回车。

./bin/hbase org.apache.hadoop.hbase.mapreduce.Driver importtsv -Dimporttsv.separator=, -Dimporttsv.bulk.output=/user/hadoop/wordcount/ -Dimporttsv.columns=HBASE_ROW_KEY,f:count wordcount /user/hadoop/word_count.csv

 

执行完命令,则会看见目标目录下已经生成对应分区的Hfile

Found 5 items
-rw-r--r--   3 hadoop supergroup      10201 2015-06-26 10:36 /user/hadoop/wordcount/f/558cfca392a945e9acf7abb5851d50c9
-rw-r--r--   3 hadoop supergroup       7468 2015-06-26 10:36 /user/hadoop/wordcount/f/61e199926f2347a9a444d2a7ad1ffeb3
-rw-r--r--   3 hadoop supergroup       6311 2015-06-26 10:36 /user/hadoop/wordcount/f/b559aa29e7074a5fb79c2ffa746f1717
-rw-r--r--   3 hadoop supergroup       5529 2015-06-26 10:36 /user/hadoop/wordcount/f/d34d5903715e423f99eef210cc3c5123
-rw-r--r--   3 hadoop supergroup       2383 2015-06-26 10:36 /user/hadoop/wordcount/f/d570e72200114d39896632808095b6c9

 

 

加载数据到hbase

./bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /user/hadoop/wordcount/ wordcount

 

 

 

2自定义Mapreduce的导入。这种导入也很简单,只要自己实现一个mapper以及Driver就                行,reduce可通过上文所述的调HFileOutputFormat.configureIncrementalLoad(job,hTable)       方法,由hbase实现。所以HFileOutputFormat.configureIncrementalLoad实际上实现了                  除mapper之外的shufflereducer逻辑。因此,执行hadoop jar命令完成mareduce任务即生         成额Hfile。假如以FACEBOOK 2010NBA决赛消息为TSV,则过程如下:

 

   1.上传TSV以及建表,同[直接导入]的步骤12

 

   2.mapreduce任务,实际上[直接导入]方式的步骤3也是跑的mapreduce。参数只需要csv数         据文件路径,输出路径以及hbase对应的表名。

 

       hadoop jar my_map_reduce.jar com.my.mapreduce.Driver data.csvoutput_dir NBAFinal2010_tableName

 

   3.加载数据

 

  Hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles output_dirNBAFinal2010_tableName

   

   附件是自定义的mapreduce代码

 

 

分享到:
评论

相关推荐

    基于springboot框架的毕业设计系统的开发(完整Java源码+数据库sql文件+项目文档+Java项目编程实战+编程练手好项目).zip

    在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生毕业设计信息管理的提升,也为了对学生毕业设计信息进行更好的维护,毕业设计系统的出现就变得水到渠成不可缺少。通过对毕业设计系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 毕业设计系统通过MySQL数据库与Spring Boot框架进行开发,毕业设计系统能够实现教师管理,公告类型管理,班级管理,课题信息管理,任务类型管理,选题申请管理,学院管理,课题任务管理,最终成绩管理,公告信息管理,学生管理等功能。 通过毕业设计系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源

    hegaojian_WanAndroid_1742851819.zip

    hegaojian_WanAndroid_1742851819.zip

    《基于YOLOv8的违章停车识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    使用matlab基于卷积神经网络实现的汉语短句语音识别,输出拼音( 我正在学torch,这个已停止更.zip

    毕业设计

    移动开发_iOS_OpenUrl_快捷方式创建技术_App桌_1742856949.zip

    移动开发_iOS_OpenUrl_快捷方式创建技术_App桌_1742856949.zip

    《基于YOLOv8的体育发展识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    uappkit_uapp_1742847088.zip

    app开发

    蓝桥杯python相关资源

    蓝桥杯python相关资源

    招聘_实时聊天_APP_React_Redux_前后端分离_1742854279.zip

    招聘_实时聊天_APP_React_Redux_前后端分离_1742854279.zip

    《基于YOLOv8的玩具产品分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    vscode1.98.1版本,适用于macos

    vsco1.98.1版本,适用于macos

    《基于YOLOv8的体育产业监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Kotlin_基础篇教程_函数与类实践_开发参考_1742851889.zip

    Kotlin_基础篇教程_函数与类实践_开发参考_1742851889.zip

    电子发票统计并生成表格

    电子发票统计并生成表格

    IIS重写IIS rewirte的插件ARR(Application Request Routing) Microsoft Application Request Routing 3.0 (x64)

    网上很多都是IIS7的教程ARR,对IIS10来说已经无效了。这个是最新的插件IIS重写IIS rewirte的插件ARR(Application Request Routing)

    linux相关课程学习笔记

    linux系统相关知识、shell编程相关知识、虚拟机安装及配置

    毕业设计神器!最新学生成绩管理系统源码(thinkphp6 框架),让你的毕设轻松出彩

    还在为毕业设计选题纠结?这款基于 thinkphp6 框架 开发的学生成绩管理系统源码,前端采用 X - adminV2.2,功能完备、结构清晰,完美适配毕业设计需求,助你在答辩中脱颖而出! 功能全面,轻松应对毕设考核 全流程管理模块:覆盖系统信息设置、单位信息管理、类别管理,以及学期、班级、学科等基础配置,更有管理员、权限、角色管理,完整呈现系统设计与实现的深度。 智能化成绩处理:支持考试信息自定义,灵活设置学科分数线;一键生成考试号、试卷标签、成绩采集表。多样化成绩录入(在线、表格、扫码枪)、实时查看成绩列表与图表,统计结果以柱形图、折线图、雷达图等形式展示,搭配学生历次成绩对比(表格 + 折线图),充分展现数据处理与分析能力。 精细化权限设计:区分教师、学生双身份登录,按职务、任务分工细化数据权限,体现系统安全性与合理性,为毕设增添专业亮点。 三大核心优势,锁定高分 极简操作,演示无忧:界面简洁直观,操作流程优化至 “三步到位”,答辩演示流畅自然,轻松征服导师。 热门技术栈,学习轻松:基于流行的 thinkphp6 框架,前端 X - adminV2.2,前后端分离。

    《基于YOLOv8的摄像设备分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    前端技术_React_TS_豆瓣电影信息_缓存优化扩展_1742857602.zip

    app开发

Global site tag (gtag.js) - Google Analytics