Hbase
Hbase一步一个脚印
南修子
深圳大数据求坑~
展开
-
南修子学Hbase-Hbase实战项目-xx微博
我们用三张表来实现1:内容表rowkey:uid+“_”+tscf:只有一个列族就是info,info里面有一个列content,因为一个人可能发非常多的微博,使用添加列或者多个版本的形式都不适合,value就是微博内容2:用户关系表rowkey:uidcf1:attends 多个列:uid 这个代表了该用户关注了谁,一个用户使用一个列,value也是uidcf2:fans 多个列:uid 这个代表了该用户的粉丝,一个用户使用一个列,value也是uid3:微博收件箱表rowk.原创 2021-04-09 14:33:10 · 186 阅读 · 0 评论 -
南修子学Hbase-Hbase优化之Rowkey设计
Rowkey三个设计原则散列性:数据尽量均匀的分布在多个分区,避免热点问题唯一性:Rowkey唯一长度原则:70-100位设计Rowkey之前先预分区,因为散列性跟多分区挂钩1,生成随机数,hash,散列值2,字符串反转3,下面我们准备分300个分区,那就是299个分区键,所以前三位就是用来分区用的,|比_大,可以把Rowkey拦截下来,所以直接就不看后面的数值就会直接落到该分区分区键000|001|002|...298|Rowkey000_001_002_.原创 2021-04-07 17:18:37 · 158 阅读 · 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 · 98 阅读 · 0 评论 -
南修子学Hbase-Hbase优化之高可用
当active节点挂了之后,其余的HMaster都会去请求zk,谁先请求到zk,谁就是active节点了,其余继续standby原创 2021-04-07 15:04:25 · 76 阅读 · 0 评论 -
南修子学Hbase-Hbase-Hive关联表
两个框架要关联,需要相互操作的包 我这边是cdh6.3cp /opt/cloudera/parcels/CDH/lib/hive/lib/hive-hbase-handler.jar /opt/cloudera/parcels/CDH/lib/hbase/libhive 建表语句create table hive_hbase_student(id int,name string,address string) STORED BY 'org.apache.hadoop.hive.hba.原创 2021-04-07 14:48:24 · 128 阅读 · 0 评论 -
南修子学Hbase-Hbase与Hive的对比
Hive:数据仓库Hive的本质其实就相当于将Hdfs中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询用于数据分析和清洗Hive适用于离线的数据分析和清洗,延迟较高基于HDFS、MapReduceHive存储的数据依旧在DataNode上,编写的HQL语句最终转换成MapReduce代码去执行HBase数据库是一种面向列族存储的非关系型数据库用于存储结构化和非结构化的数据非结构化用统一资源定位符的方式(就是存储一个资源地址),适用于单表非关系型数据的存储,不适原创 2021-04-01 14:49:53 · 98 阅读 · 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 · 377 阅读 · 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 · 177 阅读 · 0 评论 -
南修子学Hbase-CDH6.3.0 配置Hbase和MapReduce的集成
以下命令每台机器都要执行vim /etc/profileexport HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbaseexport PATH=${HBASE_HOME}/bin:${PATH}执行 source /etc/profilevim /etc/hadoop/conf/hadoop-env.shexport HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/lib/*:$HA原创 2021-03-29 14:43:05 · 199 阅读 · 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 · 76 阅读 · 0 评论 -
南修子学Hbase-Hbase Split流程
0.94版本之前一个Region里面最大的file大小,如果超过就一分为二hbase.hregion.max.filesize默认是10G0.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 · 129 阅读 · 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 · 444 阅读 · 0 评论 -
南修子学Hbase-Hbase Compaction操作
Hbase从MemStore刷写一次数据到磁盘就会生成一个StoreFile,所以会导致小文件过多的情况发生,因此StoreFile Compation就派上用场了。Compation分为两种,Minor Compaction(小)和Major Compaction(大,全局的),常用的是Major Compactionhbase shell命令:默认情况下, 小于3个走的是Minor Compaction,大于等于3个走的是Major Compaction> compact 'ta..原创 2021-03-23 16:49:35 · 205 阅读 · 0 评论 -
南修子学Hbase-Hbase读流程
在hbase读流程中有一个很重要的组件就是Block Cache,这个是用来优化读取速度的,每个RegionServer中只有一个BlockCache。 整个过程是这样的Client首先请求Zookeeper获取到Meta所在的位置,然后请求该位置,获取到目标表的位置,该位置就是表具体所在的RegionServer了,hbase会去读取MemStore和StoreFile,如果BlockCache有值也会返回BlockCache的值,然后取TimeStamp最大的那个值返回给Client,然后..原创 2021-03-23 15:00:56 · 68 阅读 · 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 · 103 阅读 · 1 评论 -
南修子学Hbase_Hbase写流程
客户端准备写一条数据,是怎样一个流程?首先,客户端会链接Zookeeper找到Meta表的位置,在Meta表中找到我们要写入的目标表,并把目标表所在的RegionServer位置返回给ClientClient请求RegionServer,先写入WAL,再写MemStore,然后同步WAL,如果WAL同步失败则清除MemStore的内容代码如下:finally { // if the wal sync was unsuccessful, remove keys from memstor.原创 2021-03-22 10:20:29 · 56 阅读 · 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 · 107 阅读 · 1 评论 -
南修子学Hbase_Hbase基本架构
HMasterHMaster的主要功能有:把HRegion分发到某一个RegionServer。因为Hbase中一张表如果容量超过配置的上线,就会进行切片操作,一个region就会变成两个region,这时候就需要HMaster对region进行分发,Hmaster会尽可能平均的分配给所有的RegionServer。有RegionServer宕机了,HMaster可以把这台机器上的Region迁移到active的RegionServer上。③对HRegionServer进行监控和负载均衡。..原创 2021-03-12 15:47:39 · 99 阅读 · 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 · 83 阅读 · 0 评论