ImportTsv-HBase数据导入工具 作者:幽鸿 一、概述 HBase官方提供了基于Mapreduce的批量数据导入工具:Bulk load和ImportTsv。...通常HBase用户会使用HBase API导数,但是如果一次性导入大批量数据,可能占用大量Regionserver资源,影响存储在该Regionserver上其他表的查询,本文将会从源码上解析ImportTsv...二、ImportTsv介绍 ImportTsv是Hbase提供的一个命令行工具,可以将存储在HDFS上的自定义分隔符(默认\t)的数据文件,通过一条命令方便的导入到HBase表中,对于大数据量导入非常实用...三、源码解析 本文基于CDH5 HBase0.98.1,ImportTsv的入口类是org.apache.hadoop.hbase.mapreduce.ImportTsv [java] view plaincopyprint...$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c $ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv
importtsv 是一个实用工具,它将 TSV 格式的数据加载到 HBase 中。...它有两种用法,分别为: importtsv 工具默认使用 HBase put API 导入数据,将数据从 HDFS 中的 TSV 格式直接加载到 HBase 的 MemStore 中。...中没有创建表,是否使用 importtsv 工具创建该表,如果设置为 no,则在 HBase 中表必须存在。...4.3 通过importtsv工具生成HFile文件 使用 importtsv 工具生成 HFile 文件,执行如下命令: sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.ImportTsv...#importtsv http://hbase.apache.org/book.html#completebulkload 在使用 importtsv 工具时,一定要注意参数 -Dimporttsv.bulk.output
第10章 HBase:Hadoop数据库 10.7 HBase 批量导入 10.7.1 批量导入数据的方法 向HBase表中导入一条数据可以使用HBase Shell的put命令或HBase API的Put...一般有三种方法:ImportTsv工具、编写MapReduce程序和Hive外表。本节重点介绍ImportTsv工具和编写MapReduce程序两种方法,Hive外表将在第11章介绍。...10.7.2 ImportTsv (1)介绍 ImportTsv是HBase官方提供了基于mapreduce进行批量数据导入的工具,ImportTsv可以将HDFS上的TSV格式(默认制表符分隔\t,或者自定义分隔符的其他格式数据文件也可...:002:0> quit [root@node1 data]# (4)上传数据 执行导入命令: hbase org.apache.hadoop.hbase.mapreduce.ImportTsv...~]# hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \ > -Dimporttsv.columns=HBASE_ROW_KEY,info:data1
我们可以有很多方式可以把数据导入到hbase当中,比如说用map-reduce,使用TableOutputFormat这个类,但是这种方式不是最优的方式。 ...一般的步骤有两步 (1)使用ImportTsv或者import工具或者自己写程序用hive/pig生成HFiles (2)用completebulkload把HFiles加载到hdfs上 ImportTsv...能把用Tab分隔的数据很方便的导入到hbase当中,但还有很多数据不是用Tab分隔的 下面我们介绍如何使用hive来导入数据到hbase当中。 .../* /tmp/hbase_splits; c.创建hfiles.hql ADD JAR /usr/lib/hbase/hbase-0.94.6.1.3.0.0-104-security.jar;...INFO streaming.StreamJob: Output: /tmp/hbase_splits_txt 再执行这一句 hadoop fs -cat /tmp/hbase_splits_txt
将各种类型的数据库或者文件导入到HBase,常见有三种方法: (1)使用HBase的API中的Put方法 (2)使用HBase 的bulk load工具 (3)使用定制的MapReduce...使用bulk load功能最简单的方式就是使用importtsv 工具。importtsv 是从TSV文件直接加载内容至HBase的一个内置工具。...Hive、MySQL、HBase hive的操作命令和SQL基本一致 HBase的操作和SQL有些区别,使用hbase shell进入Hbase, 1.创建表 create 'student','Sname...: (1)现有的迁移工具如Hadoop的官方工具Sqoop只支持单表的增量加载,无法完成数据库系统中众多表模式的迁移; (2)HBase的Importtsv 工具只支持TSV等指定文件的迁移; (3)Put...importtsv工具,执行如下脚本 hac@client1$ $HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase- 0.92.1.jar importtsv \
当需要大批量的向Hbase导入数据时,我们可以使用Hbase Bulkload的方式,这种方式是先生成Hbase的底层存储文件 HFile,然后直接将这些 HFile 移动到Hbase的存储目录下。...bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=$'\x01' -Dimporttsv.columns...Hbase 默认采用第二种方式,如果用户想使用第一种方式,需要在运行命令时,指定 importtsv.mapper.class 的值为 org.apache.hadoop.hbase.mapreduce.TsvImporterTextMapper...客户在使用命令时,通过 importtsv.separator 参数指定分隔符,通过 importtsv.columns 参数指定列格式。...TsvParser 类负责解析数据,它定义在 ImportTsv 类里。这里需要注意下,它不支持负责的 CSV 格式,只是简单的根据分隔符作为列的划分,根据换行符作为每条数据的划分。
利用Python调用HBASE的 需要安装thrift hbase-thrift 启动hbase的thrift服务:bin/hbase-daemon.sh start thrift 默认端口是9090...mysql 到hbase的数据同步: 1、put 2、Importtsv 3、编写MapReduce Job导入 4、sqoop 简单code: #!.../usr/bin/env python #coding=utf-8 import sys sys.path.append('/usr/lib/python2.6/site-packages/hbase'...import Hbase from hbase.ttypes import * import csv from hbase.ttypes import ColumnDescriptor, Mutation..., BatchMutation, TRegionInfo from hbase.ttypes import IOError, AlreadyExists ###### def client_conn()
HBase 自带MapReduce程序 1.导入Hadoop与Hbase的环境变量 2.使用HBase-server-cdh.jar中方法导入数据 Hive集成Hbase Hive是存储在HDFS中,将...SQL语句转化为MapReduce中的,通过Hive将表添加到HBase,Hive进行复杂的数据分析,同过HBase进行快速实时查询 hive整合Hbase hive映射Hbase的表0.90,0.92...如果hbase中该表不存在则创建 --hbase-table对应的hbase表名 --hbase-row-key hbase表中的rowkey,注意格式 --column-family hbase...mysql表的where条件,写法和sql中一样 --split-by CREATE_TIME默认情况下sqoop使用4个并发执行任务,需要制订split的列,如果不想使用并发,可以用参数--m 1 importTsv...的使用 hbase org.apache.hadoop.hbase.mapreduce.ImportTsv'-Dimporttsv.separator=,' -Dimporttsv.columns='HBASE_ROW_KEY
一.前述 1.HBase,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。...二.Hbase数据模型 ? 2.1 ROW KEY(相当于关系型数据库中的ID) 决定一行数据 按照字典顺序排序的。...HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。 2.3 Timestamp时间戳(相当于版本!!!)...三.Hbase架构 ?...3.1 Client 包含访问HBase的接口并维护cache来加快对HBase的访问 3.2 Zookeeper 保证任何时候,集群中只有一个master(HA) 存贮所有Region的寻址入口。
来加速Hbase的访问,比如cache的.META.元数据的信息。...流程 老的Region寻址方式 在Hbase 0.96版本以前,Hbase有两个特殊的表,分别是-ROOT-表和.META.表,其中-ROOT-的位置存储在ZooKeeper中,-ROOT-本身存储了...(3)Hlog数量上限 前面说到Hlog为了保证Hbase数据的一致性,那么如果Hlog太多的话,会导致故障恢复的时间太长,因此Hbase会对Hlog的最大个数做限制。...该参数为:hbase.hregion.majorcompaction.jitter 具体算法为: hbase.hregion.majorcompaction参数的值乘于一个随机分数,这个随机分数不能超过...通过hbase.hregion.majorcompaction参数的值加上或减去hbase.hregion.majorcompaction参数的值乘于一个随机分数的值就确定下一次大合并的时间区间。
HBase Shell 常用命令: 注意:HBase在linux命令行下操作时,区分大小写 HBase API HBase 提供Java方式的原生接口,其中需要注意的有: (1)创建Connection...HBase Rest Gateway HBase附带的REST服务器,该服务器将HBase表,行,单元和元数据作为URL指定的资源公开。...HBase到Hive 将HBase的数据作为数据源,建立Hive外部表关联到HBase,利用Hive的HQL查询HBase数据,更进一步,将Hive的元数据同步到Impala,利用Impala的SQL...这是HBase二级索引出现的背景。即二级索引是为了让HBase能够提供更多维度的查询能力。...注意:HBase原生并不支持二级索引方案,但基于HBase的KeyValue数据模型与API,可以轻易地构建出二级索引数据。
分布式NoSQL列存储数据库Hbase(九) 知识点01:课程回顾 知识点02:课程目标 MapReduce读写Hbase 重点:记住读写的规则 Spark中读写Hbase规则与MapReduce...Hbase中的优化方案【重点:记住】 对于Hbase做了哪些性能的优化?...内存优化 压缩优化 参数优化 …… 知识点03:MR集成Hbase:读Hbase规则 知识点04:MR集成Hbase:读Hbase实现 知识点05:MR集成Hbase:写Hbase规则 知识点06:MR...文件加载到Hbase的表中【直接将文件放入了Hbase表对应的HDFS目录中】 总结 应用场景:Hbase提供BulkLoad来实现大数据量不经过内存直接写入Hbase 特点 优点:不经过内存...,降低了内存和磁盘的IO吞吐 缺点:性能上相对来说要慢一些,所有数据都不会在内存中被读取 知识点08:BulkLoad的实现 知识点09:ImportTSV的使用 知识点10:协处理器的介绍 目标
Hbase(四):Hbase原理 Hbase的工作方式 region的分裂和结构 hbase表中的数据按照行键的字典顺序排序 hbase表中的数据按照行的的方向切分为多个region 最开始只有一个...写入数据到hdfs的过程其实是不断追加hfile的过程 Hbase写入数据 数据写入hbase时 先在hlog中记录日志 再修改memstore 直接返回成功 这样 不需要真正等待写入hdfs的过程 所以很快...由于hbase中的数据天然排序 再加上索引 整个查询也可以非常的快 Hbase中的region的寻址 在hbase中有一个hbase:meta表,其中存放了 表和region和regionSever 之间的对应关系信息... 支持增、删、读、改、顺序扫描操作 牺牲了一部分读的性能换取了高效写入能力 Hbase系统架构 hbase中的老大叫hmaster 小弟叫hregionServer 客户端叫Client...Zookeepr为hbase提供集群协调 client 访问hbase 保留一些缓存信息提升效率 zookeeper 保证任何时候集群只有一个HMaster 监控regionServer的状态
可以用如下语句在hive上实行创表,然后hbase上会出现对应的表 ? ?...此时可以看见basketball2已经在hbase上建立了 ps:CREATE TABLE basketball2(num int,team string,state string) STORED BY...‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “...:key,player:team,player:state”) TBLPROPERTIES (“hbase.table.name” = “basketball2”); create table后面跟hive...上要创建的表名,mapping相当于映射,:前面没有东西就相当于是hbase里的rowkey,后面的player相当于列族里的Column family,而team和state相当于Column qualifier
/bin/hbase shell hbase> snapshot 'myTable', 'myTableSnapshot-122112' 3.列出已经存在的快照 $ ..../bin/hbase shell hbase> list_snapshots 4.删除快照 $ ..../bin/hbase shell hbase> delete_snapshot 'myTableSnapshot-122112' 5.从快照复制生成一个新表 $ ..../bin/hbase shell hbase> disable 'myTable' hbase> restore_snapshot 'myTableSnapshot-122112' 提示:因为备份(...7.复制到别的集群当中 该操作要用hbase的账户执行,并且在hdfs当中要有hbase的账户建立的临时目录(hbase.tmp.dir参数控制) 采用16个mappers来把一个名为MySnapshot
Hbase(五): JavaApi操作Hbase 依赖 org.apache.hbase hbase-client 0.98.17-hadoop2 org.apache.hbase hbase-server</artifactId...版本一致 Hbase版本可以通过连接Hbase client使用version命令查看 定义静态配置变量 public static Configuration conf; static{ conf...= HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","hadoop1:2181"); } 由于配置变量都是一样的,
二.具体优化 1.表的设计 1.1 预分区 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region...因此Hbase的更新其实是不断追加的操作。...的应用场景,可以考虑在应用程序中做缓存,当有新的查询请求时,首先在缓存中查找,如果存在则直接返回,不再查询HBase;否则对HBase发起读请求查询,然后在应用程序中将查询结果缓存起来。...HTable和HTablePool使用注意事项 HTable和HTablePool都是HBase客户端API的一部分,可以使用它们对HBase表进行CRUD操作。...使用solr和hbase整合完成全文搜索。 a) 使用MR批量读取hbase中的数据,在solr里面建立索引(no store)之保存rowkey的值。
官方HBase-MapReduce 1.查看HBase的MapReduce任务的执行 [bigdata@hadoop002 hbase]$ bin/hbase mapredcp 上图标记处为所需jar...-2.7.2 $ export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp` // 也可以直接这样 [bigdata@hadoop002 hbase...importtsv \ -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color fruit \ hdfs://hadoop002:9000/input_fruit...运行验证 [bigdata@hadoop002 hbase]$ hadoop jar hbase-0512-1.0-SNAPSHOT.jar com.buwenbuhuo.hbase.mr.Driver...自定义HBase-MapReduce2 目标:实现将HDFS中的数据写入到HBase表中。 1.
表中 hbase自带实现: 1.ImportTSV,是hbase-server.jar包中自带的一个命令,可以实现使用put方式将数据导入hbase表中,也实现了将普通文件转换成一个hfile文件的两种方式...2.completebulkload,上面的importtsv命令将普通文件转换成一个hfile文件,但是并没有加载到hbase表中,completebulkload负责将hfile文件加载到hbase...importtsv -Dimporttsv.columns=a,b,c -Dimporttsv.separator=','...操作的同时,也用mapreduce操作hbase表 实现:在hive中创建一张与hbase关联的表,操作hive中关联表,实际上是对hbase在操作 phoenix第三方工具: 原理:基于hbase构建了二级索引...,直接调用hbase的api实现,因此在于hbase集成度和性能是最优选 sqoop第三方工具: 原理:底层也是使用mapreduce程序导入数据,从关系型数据库中导入到hdfs,然后使用importtsv
本文将介绍大数据的知识和Hbase的基本概念,作为大数据体系中重要的一员,Hbase弥补了Hadoop只能离线批处理的不足,支持存储小文件,随机检索。...而这种特性使得Hbase对于实时计算体系的事件存储有天然的较好的支持。这使得Hbase在实时流式计算中也扮演者重要的角色。 ?...Hbase使用Java编写,还是一种NoSQL数据库,这些特性决定了Hbase独特的应用场景。...的表模型与关系型数据库的表模型不同: Hbase的表没有固定的字段定义; Hbase的表中每行存储的都是一些key-value对; Hbase的表中有列族的划分,用户可以指定将哪些kv...通过将数据增量的存入Hbase,并在流式处理中实时查询Hbase,结合历史得到最终的分析结果。
领取专属 10元无门槛券
手把手带您无忧上云