![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hbase
商俊超
大数据猿人。努力不被开猿节流!
展开
-
Hbase-协处理器操作过程(二级索引)
1. 创建两个表2. 编写代码import java.io.IOException;import java.util.List;import java.util.Map.Entry;import java.util.NavigableMap;import java.util.Optional;import java.util.Set;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbas..原创 2020-11-29 22:10:46 · 158 阅读 · 0 评论 -
Hbase-过滤器(所有过滤)
1. Filter接口和FilterBase抽象类Filter接口中定义了过滤器的基本方法,FilterBase抽象类实现了Filter接口。所有内置的过滤器则直接或者间接继承自FilterBase抽象类。用户只需要将定义好的过滤器通过setFilter方法传递给Scan或put的实例即可。// Scan 中定义的setFilter @Override public Scan setFilter(Filter filter) { super.setFilter(filter);.原创 2020-11-29 20:28:49 · 511 阅读 · 0 评论 -
Hbase-自定义MR生成Hfile
自定义MR生成Hfile 生成Hfile基本流程:1.设置Mapper的输出KV类型: K: ImmutableBytesWritable(代表行键) V: KeyValue (代表cell)2.开发Mapper 读取你的原始数据,按你的需求做处理 输出rowkey作为K,输出一些KeyValue(Put)作为V3.配置job参数 Zookeeper的连接地址 配...原创 2020-11-29 20:08:56 · 395 阅读 · 0 评论 -
Hbase-原理-region合并和hfile的合并(大合并、小合并)
Hbase-原理-region合并为什么要合并region呢?因为在删除region中的信息的过程中会急剧减少region的行数,导致一个region server中的region太小,所以将多个region合并成少量的regionregion手动合并(shell)表tb_stu的原region信息list_regions 'tb_stu'合并两个regionmerge_region 'a8c282eafa0589e96213b79b6132410d','aaa7d4f6003原创 2020-11-27 21:34:26 · 1581 阅读 · 0 评论 -
Hbase-原理-region拆分
Hbase 表的拆分 (shell)未拆分前表的样子list_regions 'tb_stu'拆分后split 'a338a854bfcdd315f4e28c0cb0ac0d11', 'rk001'在HDFS中查看拆分完,原来的region Name 会保留一段时间,一段时间后原来的region Name会被删除,只保留拆分后的region Name移动拆分后的一个region将region...原创 2020-11-27 20:59:06 · 827 阅读 · 0 评论 -
Hbase原理——写数据、读数据和布隆过滤器(算法)
写数据客户端写数据–> put a rk1001 cf1:age 21 (a表 rk1001行 列族为cf 属性是age 值为21)1.客户端写数据找zookeeper,知道要写的数据的元数据在哪个regionserver中(由于表的META(元数据)过大,存储不了这么大的数据,只能存储META的位置)2.zookeeper返回给客户端meta的位置3.客户端向存有META的regionserver下载元数据表(为什么要下载:因为meta比较大,实际存储meta的是原创 2020-11-26 22:06:51 · 244 阅读 · 0 评论 -
Hbase扫描表的信息
扫描全表数据// 多行 多列族 多属性 Scan scan = new Scan(); // 扫描全表数据 ResultScanner results = tb_user.getScanner(scan); // 思路 一行 Result 行 Iterator<Result> iterator = results.iterator(); while (iterator.hasNext(原创 2020-11-26 19:34:51 · 716 阅读 · 0 评论 -
Hbase表中插入数据
Hbase表中插入数据插入一条数据// 插入数据 Table tbUser = HbaseUtils.getTable("tb_user"); // put 'tb_user' , 'rk' ,'cf:q' , 'v' Put put = new Put(Bytes.toBytes("rk1001")); // 行键 put.addColumn(Bytes.toBytes("cf1"),// 列族 Byt原创 2020-11-26 16:53:51 · 3659 阅读 · 0 评论 -
Hbase建表(多种方式)
Hbase建表(一个列族)Admin admin = HbaseUtils.getAdmin(); // 建表 表名 列族 TableName tb_stu1 = TableName.valueOf("ns1:tb_stu"); // 表的描述构建器 TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tb_stu1); // 列族的构建器原创 2020-11-26 16:47:36 · 3168 阅读 · 0 评论 -
Hbase 创建、修改名称空间(namespace)
Hbase 创建、修改名称空间(namespace)创建名称空间配置文件创建连接创建名称空间(namaespace)设置描述属性 //创建连接 Connection conn = ConnectionFactory.createConnection(conf); Admin admin = conn.getAdmin(); //创建名称空间 NamespaceDescriptor.Builder nsd = Namesp原创 2020-11-26 16:05:34 · 1445 阅读 · 0 评论 -
Hbase创建预设region表
Hbase创建预设region表好处避免并发热点的问题。shell端实现create 'tb_z','cf',SPLITS=>['10', '20', '30', '40']Java端代码实现Connection conn = getConn(); Admin admin = conn.getAdmin(); TableDescriptorBuilder tblname = TableDescriptorBuilder.newBuilde原创 2020-11-26 15:06:42 · 787 阅读 · 0 评论 -
shell方式使用bulkload导入hbase
1 静态数据如下uid001,zss,23,Fuid002,lss,13,Muid003,ww,22,Muid004,zl,34,Fuid005,tq,43,Muid006,wb,55,Fuid007,sj,98,M2 在hbase中创建一张表create 'tb_imp' ,'info'3 根据数据 生成hbase文件hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=, .原创 2020-11-25 15:04:57 · 356 阅读 · 0 评论