hbase的特点

)hbase适合存储海量数据,是一个分布式的,基于列式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理。
)hbase 适合存储半结构化或非结构化的数据,对于数据结构字段不够确定或者杂乱无章很难按照一个概念去抽取的数据。
),稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,hbase为null的数据不会被存储
)基于的表包含rowKey,时间戳和列族,新写入数据时,时间戳更新,同时可以查询到以前的版本
)易扩展 , hbase是主从结构,hmaster作为主节点,hregionServer作为从节点, 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力

hbase的各个角色以及功能

)HMaster
为RegionServer分配Region
维护整个集群的负载均衡
维护集群的元数据信息
发现失效的Region,并将失效的Region分配到正常的RegionServer上
当RegionSever失效的时候,协调对应Hlog的拆分
)HregionServer
HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
管理master为其分配的Region
处理来自客户端的读写请求
负责和底层HDFS的交互,存储数据到HDFS
负责Region变大以后的拆分
负责Storefile的合并工作
)HDFS
HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存在HDFS)的支持,具体功能概括如下:
提供元数据和表数据的底层分布式存储服务
数据多副本,保证高可靠和高可用性
)其他组件
Write-Ahead logs:数据会先写在Write-Ahead logfile,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建
Region:Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。
Store:HFile存储在Store中,一个Store对应HBase表中的一个列族
MemStore:就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对
HFile:这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以HFile的形式存储在HDFS的。

hbase的数据结构

HBASE 中通过rowkey和columns确定的为一个存贮单元称为cell。cell中的数据是没有类型的,全部是字节数组形式存贮。每个 cell都保存 着同一份数据的多个版本。版本通过时间戳来索引。
每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供 了两种数据版本回收方式。
一是保存数据的最后n个版本,二是保存最近一段 时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。

hbase的存储机构

Hbase 中的每张表都通过行键(rowkey)按照一定的范围被分割成多个子表(HRegion),默认一个 HRegion 超过 256M 就要被分割成两个,
由 HRegionServer 管理,管理哪些 HRegion由 Hmaster 分配。 HRegion 存取一个子表时,会创建一个 HRegion 对象,
然后对表的每个列族(Column Family)创建一个 store 实例,每个 store 都会有 个或多个 StoreFile 与之对应,
每个 StoreFile 都会对应一个 HFile, HFile 就是实际的存储文件,因此,一个 HRegion 还拥有一个 MemStore 实例。

hbase的读流程

)Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息;
)根据namespace、表名和rowkey在meta表中找到对应的region信息;
)找到这个region对应的regionserver;
)查找对应的region;
)先从MemStore找数据,如果没有,再到BlockCache里面读;
)BlockCache还没有,再到StoreFile上读(为了读取的效率)

hbase的写流程

)Client向HregionServer发送写请求;
)HregionServer将数据写到HLog(write ahead log)。为了数据的持久化和恢复;
)HregionServer将数据写到内存(MemStore);
)反馈Client写成功。

hbase的suffer过程

当MemStore数据达到阈值(默认是128M,老版本是64M),将数据刷到硬盘,将内存中的数据删除,同时删除HLog中的历史数据;并将数据存储到HDFS中;

hbase的优化

mster高可用
Row Key设计
列族的设计
预分区 提前把分区规划好,提高hbase性能
内存优化 :因为GC过程持续太久会导致RegionServer处于长期不可用状态
Time To Live
多HTable并发写
多HTable并发读
Blockcache !!!常用,设置读缓存,在服务器端

hbase的rowkey设计

加盐
hash
翻转

hbase和hive的区别和联系

共同点:.hbase与hive都是架构在hadoop之上的。都是用hadoop,hdfs作为底层存储
区别:    .Hive是建立在Hadoop之上为了减少MapReducejobs编写工作的批处理系统,
      HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。
      .想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop
      .Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。
      .Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。
      .hive借用hadoop的MapReduce来完成一些hive中的命令的执行
      .hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
      .hbase是列存储。
      .hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。
      .hive需要用到hdfs存储文件,需要用到MapReduce计算框架。

hbase的scan和get

.按指定RowKey 获取唯一一条记录, get方法(org.apache.hadoop.hbase.client.Get)Get 的方法处理分两种 : 设置了 ClosestRowBefore 和没有设置的 rowlock .主要是用来保证行的事务性,即每个 get 是以一个 row 来标记的.一个 row 中可以有很多 family 和 column.
.按指定的条件获取一批记录, scan 方法(org.apache.Hadoop.hbase.client.Scan)实现条件查询功能使用的就是 scan 方式.)scan 可以通过 setCaching 与 setBatch 方法提高速度(以空间换时间); )scan 可以通过 setStartRow 与 setEndRow 来限定范围([start, end]start 是闭区间, end 是开区间)。范围越小,性能越高。)scan 可以通过 setFilter 方法添加过滤器,这也是分页、多条件查询的基础。
.全表扫描,即直接扫描整张表中所有行记录 

Hbase实战

启动hbase    start-hbase.sh  stop-hbase.sh  别忘了zookeeper  zkServer.sh start
进入hbase hbase shell
list 列出所有表
scan表信息 scan 'student',{STARTROW=>'',STOPROW =>''}
上传数据 put 'student','','info:sex','nan'
put 'student','','info:name','cc2'
get数据 get 'student',''

Hbase面试题的更多相关文章

  1. 大数据相关的面试题(摘自网络)hbase,kafka,spark

    1.讲讲你做的过的项目, 项目里有哪些难点重点呢?    kafkaDirect ES  /hive  kafka producer   难点值得一提的有两点:  1.rdd中用到外部变量的时候如何处 ...

  2. 大数据相关技术原理资料整理(hdfs, spark, hbase, kafka, zookeeper, redis, hive, flink, k8s, OpenTSDB, InfluxDB, yarn)

    hdfs: hdfs官方文档 深入理解HDFS的架构和原理 https://blog.csdn.net/kezhong_wxl/article/details/76573901 HDFS原理解析(总体 ...

  3. Hadoop 面试题之Hbase

    Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...

  4. Hbase总结(六)hbase37个笔试题

    下面试题是摘自互联网的基础上自己加了选项说明解释便于自己以后看时方便节省时间 1. HBase来源于哪篇博文? C A The Google File System B MapReduce C Big ...

  5. Hadoop 之面试题

    颜色区别: 蓝色:hive,橙色:Hbase.黑色hadoop 请简述hadoop怎样实现二级排序. 你认为用Java,Streaming,pipe 方式开发map/reduce,各有哪些优缺点: 6 ...

  6. Hadoop 面试题redis

    Hadoop 面试题之十 548.redis有什么特别之处,为什么用redis,用hbase 不行么? 答:redis 是基于内存的数据库,速度快 551.redis用什么版本? 3.0以上才支持集群 ...

  7. hadoop面试题答案

    Hadoop 面试题,看看书找答案,看看你能答对多少(2) 1. 下面哪个程序负责 HDFS 数据存储.a)NameNode  b)Jobtracker  c)Datanode d)secondary ...

  8. 大数据之HBase

    大数据之HBase数据插入优化之多线程并行插入实测案例 一.引言: 上篇文章提起关于HBase插入性能优化设计到的五个参数,从参数配置的角度给大家提供了一个性能测试环境的实验代码.根据网友的反馈,基于 ...

  9. hadoop+海量数据面试题汇总(一)

    hadoop面试题 Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following  ...

随机推荐

  1. LeetCode 1099. Two Sum Less Than K

    原题链接在这里:https://leetcode.com/problems/two-sum-less-than-k/ 题目: Given an array A of integers and inte ...

  2. 51、Spark Streaming之输入DStream和Receiver详解

    输入DStream代表了来自数据源的输入数据流.在之前的wordcount例子中,lines就是一个输入DStream(JavaReceiverInputDStream), 代表了从netcat(nc ...

  3. vue-cli之路由独立成JS文件之后,如何在路由中获取vuex属性或者设置国际化i18n的当前使用语言

    国际化vue-i18n的使用: import Vue from 'vue'; import VueI18n from 'vue-i18n'; // 引入语言包 import zh from '@/co ...

  4. javascript使用history api防止|阻止页面后退

    奇葩需求啥时候都会有,最近有个需求是不允许浏览器回退,但是所有页面都是超链接跳转,于是乎脑壳没转弯就回答了做不到,结果尼玛被打脸了,这打脸的声音太响,终于静下心来看了下history api. 先上代 ...

  5. Kafka 消费者到底是什么 以及消费者位移主题到底是什么(Python 客户端 1.01 broker)

    Kafka 中有这样一个概念消费者组,所有我们去订阅 topic 和 topic 交互的一些操作我们都是通过消费者组去交互的. 在 consumer 端设置了消费者的名字之后,该客户端可以对多个 to ...

  6. struct tcphdr

    包含在/usr/src/linux/include/linux/tcp.h struct tcphdr { __be16 source; __be16 dest; __be32 seq; __be32 ...

  7. POI报表打印

    一.Excel报表(POI) 1.需求说明 在企业级应用开发中,Excel报表是一种最常见的报表需求.Excel报表开发一般分为两种形式: 1.为了方便操作,基于Excel的报表批量上传数据 2.通过 ...

  8. mysql 遍历所有表并条件查询

    use eepm_push; DROP PROCEDURE IF EXISTS FountTable; delimiter $$ create procedure FountTable() begin ...

  9. ICEM-tube-water

    原视频下载地址:https://pan.baidu.com/s/1slPfJFv 密码: kjsh

  10. 如何获取select下拉框中option选中的文本值

    $(select的id或者class).change(function(){ $(this).find("option:selected").text() }) 源文:https: ...