
Hbase
Hbase一步一个脚印
南修子
深圳大数据求坑~
展开
-
南修子学Hbase-Hbase实战项目-xx微博
我们用三张表来实现 1:内容表 rowkey:uid+“_”+ts cf:只有一个列族就是info,info里面有一个列content,因为一个人可能发非常多的微博,使用添加列或者多个版本的形式都不适合,value就是微博内容 2:用户关系表 rowkey:uid cf1:attends 多个列:uid 这个代表了该用户关注了谁,一个用户使用一个列,value也是uid cf2:fans 多个列:uid 这个代表了该用户的粉丝,一个用户使用一个列,value也是uid 3:微博收件箱表 rowk.原创 2021-04-09 14:33:10 · 211 阅读 · 0 评论 -
南修子学Hbase-Hbase优化之Rowkey设计
Rowkey三个设计原则 散列性:数据尽量均匀的分布在多个分区,避免热点问题 唯一性:Rowkey唯一 长度原则:70-100位 设计Rowkey之前先预分区,因为散列性跟多分区挂钩 1,生成随机数,hash,散列值 2,字符串反转 3, 下面我们准备分300个分区,那就是299个分区键,所以前三位就是用来分区用的,|比_大,可以把Rowkey拦截下来,所以直接就不看后面的数值就会直接落到该分区 分区键 000| 001| 002| ... 298| Rowkey 000_ 001_ 002_ .原创 2021-04-07 17:18:37 · 181 阅读 · 0 评论 -
南修子学Hbase-Hbase优化之预分区
之前测试的都是默认的一个分区 创建一个预分区的表 hbase(main):019:0> create 'pre_region_student','info','partition1',SPLITS=>['1000','2000','3000','4000','5000'] 通过文件内容进行分区 hbase(main):019:0> create 'pre_region_student','info','partition1',SPLITS_FILE=>'split..原创 2021-04-07 16:08:45 · 109 阅读 · 0 评论 -
南修子学Hbase-Hbase优化之高可用
当active节点挂了之后,其余的HMaster都会去请求zk,谁先请求到zk,谁就是active节点了,其余继续standby原创 2021-04-07 15:04:25 · 101 阅读 · 0 评论 -
南修子学Hbase-Hbase-Hive关联表
两个框架要关联,需要相互操作的包 我这边是cdh6.3 cp /opt/cloudera/parcels/CDH/lib/hive/lib/hive-hbase-handler.jar /opt/cloudera/parcels/CDH/lib/hbase/lib hive 建表语句 create table hive_hbase_student( id int, name string, address string) STORED BY 'org.apache.hadoop.hive.hba.原创 2021-04-07 14:48:24 · 145 阅读 · 0 评论 -
南修子学Hbase-Hbase与Hive的对比
Hive: 数据仓库 Hive的本质其实就相当于将Hdfs中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询 用于数据分析和清洗 Hive适用于离线的数据分析和清洗,延迟较高 基于HDFS、MapReduce Hive存储的数据依旧在DataNode上,编写的HQL语句最终转换成MapReduce代码去执行 HBase 数据库 是一种面向列族存储的非关系型数据库 用于存储结构化和非结构化的数据 非结构化用统一资源定位符的方式(就是存储一个资源地址),适用于单表非关系型数据的存储,不适原创 2021-04-01 14:49:53 · 129 阅读 · 0 评论 -
南修子学Hbase-Hbase-读hbase表并写入另一张表
Mapper类 package org.nanxiuzi.hbase_demo.mr.read; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.io.Immut原创 2021-04-01 11:12:20 · 410 阅读 · 0 评论 -
南修子学Hbase-HBase和MapperReducer 写入数据到hbase
pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/x原创 2021-03-31 10:43:49 · 204 阅读 · 0 评论 -
南修子学Hbase-CDH6.3.0 配置Hbase和MapReduce的集成
以下命令每台机器都要执行 vim /etc/profile export HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase export PATH=${HBASE_HOME}/bin:${PATH} 执行 source /etc/profile vim /etc/hadoop/conf/hadoop-env.sh export HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/lib/*:$HA原创 2021-03-29 14:43:05 · 235 阅读 · 0 评论 -
南修子学Hbase-Hbase java API
package org.nanxiuzi.test; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException; import org.apache.hadoop.hbase.util原创 2021-03-26 11:10:17 · 92 阅读 · 0 评论 -
南修子学Hbase-Hbase Split流程
0.94版本之前 一个Region里面最大的file大小,如果超过就一分为二 hbase.hregion.max.filesize默认是10G 0.94版本之后 当一个Region中某个Store下面所有的StoreFile的总大小超过Min(R^2 * "hbase.hregion.memstore.flush.size" , "hbase.hregion.max.filesize"),该region就会进行拆分,其中R为当前RegionServer中属于该Table的个数,就是当前这个表的R原创 2021-03-24 13:35:35 · 151 阅读 · 0 评论 -
南修子学Hbase-Hbase数据删除
Flush和Major Compaction会删除数据。 Flush会删除历史TimeStamp的数据,Flush在同一个内存中,就能知道过时,就会被删掉,他不能删除跨越了多个文件的数据,就是先Flush了一遍,再插入一条之后再Flush就不会删除 Flush删除数据会有一定的局限性 Major Compaction删除没有局限性 create 'student','info' put 'student','1001','info:name','wodemingzi' put 'stud.原创 2021-03-23 17:20:33 · 470 阅读 · 0 评论 -
南修子学Hbase-Hbase Compaction操作
Hbase从MemStore刷写一次数据到磁盘就会生成一个StoreFile,所以会导致小文件过多的情况发生,因此StoreFile Compation就派上用场了。 Compation分为两种,Minor Compaction(小)和Major Compaction(大,全局的),常用的是Major Compaction hbase shell命令: 默认情况下, 小于3个走的是Minor Compaction, 大于等于3个走的是Major Compaction > compact 'ta..原创 2021-03-23 16:49:35 · 239 阅读 · 0 评论 -
南修子学Hbase-Hbase读流程
在hbase读流程中有一个很重要的组件就是Block Cache,这个是用来优化读取速度的,每个RegionServer中只有一个Block Cache。 整个过程是这样的 Client首先请求Zookeeper获取到Meta所在的位置,然后请求该位置,获取到目标表的位置,该位置就是表具体所在的RegionServer了,hbase会去读取MemStore和StoreFile,如果Block Cache有值也会返回Block Cache的值,然后取TimeStamp最大的那个值返回给Client,然后..原创 2021-03-23 15:00:56 · 107 阅读 · 0 评论 -
南修子学Hbase-Hbase刷写
hbase的memstore刷写到hdfs是受两个因素控制:大小和时间 以下是找了几个常用的参数,看一下 下面,RegionServer级别的配置,数据量到达RegionServer所运行的JVM的堆内存的40%的时候进行Flushing <property> <name>hbase.regionserver.global.memstore.size</name> <value>0.4</value>原创 2021-03-22 17:38:55 · 120 阅读 · 1 评论 -
南修子学Hbase_Hbase写流程
客户端准备写一条数据,是怎样一个流程? 首先,客户端会链接Zookeeper找到Meta表的位置, 在Meta表中找到我们要写入的目标表,并把目标表所在的RegionServer位置返回给Client Client请求RegionServer,先写入WAL,再写MemStore,然后同步WAL,如果WAL同步失败则清除MemStore的内容 代码如下: finally { // if the wal sync was unsuccessful, remove keys from memstor.原创 2021-03-22 10:20:29 · 75 阅读 · 0 评论 -
南修子学Hbase_Hbase高级架构
首先,Hbase依赖于Hdfs和Zookeeper,底层依赖于HDFS,需要存储在DataNode, Hbase里面最核心的HMaster和HRegionServer,Hmaster处理DDL操作,HRegionServer处理DML操作 HRegionServer里面有个HLOG,预写入日志 Hregion也就是我们的表,HRegionServer里面可以有多个Region,HRegionServer里面只有一个Mem Store,多个Store FIle,MeM Store是内存级别,刷写完会清空,S.原创 2021-03-15 15:11:44 · 124 阅读 · 1 评论 -
南修子学Hbase_Hbase基本架构
HMaster HMaster的主要功能有: 把HRegion分发到某一个RegionServer。因为Hbase中一张表如果容量超过配置的上线,就会进行切片操作,一个region就会变成两个region,这时候就需要HMaster对region进行分发,Hmaster会尽可能平均的分配给所有的RegionServer。 有RegionServer宕机了,HMaster可以把这台机器上的Region迁移到active的RegionServer上。 ③对HRegionServer进行监控和负载均衡。..原创 2021-03-12 15:47:39 · 117 阅读 · 1 评论 -
南修子学Hbase_数据模型,结构
Name Space 类似于数据库的Database的概念,每个命名空间下面有多个表,hbase有两个自带的命名空间hbase和defaule,hbase存放的是hbase的元数据,default是用户使用的默认的命名空间 Region 高表按行切分,叫表的切片,表还小的时候可能一个表就一个Region,可以手动对小表就进行切片,默认情况下单个Region大小是256M,可以调整hbase-site.xml中的 hbase.hregion.max.filesize属性进行修改默认Region的大小,R原创 2021-03-12 14:05:56 · 100 阅读 · 0 评论