hbase的特征是什么
)1) Hbase是分布式的基于列的存储数据库,由基于Hadoop的hdfs存储zookeeper管理。
) Hbase适合半结构化或非结构化数据的存储,是数据结构字段不充分确定或杂乱无章、难以用一个概念提取的数据。
)3) Hbase为空的记录不被存储。
基于(4)的表包括rowkey、时间戳和列族。 写入新数据时,时间戳更新,可以同时询问早期版本。
)5) hbase为主从结构。 hmaster为主节点,hregionserver为从节点。
Hbase和hive有什么区别
Hive和Hbase是两种基于Hadoop的不同技术。 Hive是一种SQL引擎,运行MapReduce任务。 Hbase是Hadoop之上的NoSQL的Key/vale数据库。 当然,这两个工具可以同时使用。 Hive可以用于统计查询,HBase可以用于实时查询,就像在谷歌上搜索或在脸书上社交一样。 数据也可以从Hive写入HBase,然后进行设置并从HBase写回Hive。
Hive是基于Hadoop构建的数据仓库。 Hive允许您用HQL语言查询存储在HDFS中的数据。
HQL是最终转换为Map/Reduce的SQL语言。 Hive提供了SQL查询功能,但Haoop只能批量运行Hadoop,因此Hive无法进行交互式查询。
Hive被分割成表,表进一步被分割成列簇。 列群集必须使用架构定义。 列集群总结某一类型的列。 列不需要架构定义。
限制:
Hive目前不支持更新操作。
此外,由于hive在hadoop中执行批量操作,因此检索查询结果通常需要几分钟到几个小时。
Hive适用于分析一段时间内的数据,例如计算趋势和网站日志。
请勿将Hive用于实时查询。 因为返回结果需要时间。
HBase查询是用特定语言创建的,需要重新学习。 类SQL的功能可以在Apache Phonenix上实现,但代价是必须提供架构。 此外,Hbase支持某些特性,但并不与所有ACID特性兼容。 最后,也不是最重要的。 为了运行Hbase,需要Zookeeper。 Zookeeper是用于分布式协调的服务,包括服务配置、元信息维护和命名空间服务。
Hbase非常适合大数据实时查询。 脸书通过Hbase进行消息和实时分析。 也可以用于计数Facebook的连接数。
HBase是Key/Value系统,在HDFS上运行。 与Hive不同,Hbase的是
不是在数据库上执行MapReduce任务,而是在数据库上实时执行。
参考URL:http://www.cn blogs.com/Justin zang/p/4273470.html
说明Hbase的rowKey的设计原则。
Rowkey长度原则
Rowkey是二进制码流,许多开发人员建议Rowkey的长度设计为10到100字节
但是,建议越短越好,不要超过16字节。
理由如下。
)1)数据的永久化文件HFile中按照KeyValue进行存储,但如果Rowkey过长,例如100个
字节、1000万列的数据仅Rowkey就消耗100*1000万=10亿字节、约1G的数据。 这是极其
对HFile的存储效率有很大影响
)2) MemStore将部分数据缓存在内存中,Rowkey字段过长会降低内存的有效利用率
否则,系统将无法缓存更多的数据,从而降低搜索效率。 因此,Rowkey的字节长度越短越好。
)3)目前操作系统均为64位系统,内存按8字节对齐。 16字节、8字节的
整数倍利用操作系统的最佳特性。
Rowkey散列原则
如果Rowkey以时间戳递增,并且不在二进制代码之前放置时间,则建议使用Rowkey
的高位作为散列字段,在程序周期中生成,低位放在时间字段中,从而提高数据的均衡分布
Regionserver实现负载平衡的概率。 如果没有散列字段,则第一个字段直接生成时间信息
由于新数据堆积在区域服务器上的热点现象,在数据检索时负荷集中
在单个RegionServer上降低查询效率。
Rowkey的唯一原则
在设计方面必须保证其唯一性。
对Hbase的sc进行说明
an和get的功能以及实现的异同.
HBase的查询实现只提供两种方式:
1、按指定RowKey 获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get)
Get 的方法处理分两种 : 设置了ClosestRowBefore 和没有设置的rowlock .主要是用来保证行的事务性,即每个get 是以一个row 来标记的.一个row中可以有很多family 和column.
2、按指定的条件获取一批记录,scan方法(org.apache.Hadoop.hbase.client.Scan)实现条件查询功能使用的就是scan 方式.
1)scan 可以通过setCaching 与setBatch 方法提高速度(以空间换时间);
2)scan 可以通过setStartRow 与setEndRow 来限定范围([start,end)start 是闭区间,
end 是开区间)。范围越小,性能越高。
3)、scan 可以通过setFilter 方法添加过滤器,这也是分页、多条件查询的基础。
请描述Hbase中scan对象的setCache和setBatch 方法的使用.
为设置获取记录的列个数,默认无限制,也就是返回所有的列.每次从服务器端读取的行数,默认为配置文件中设置的值.
23 请详细描述Hbase中一个Cell 的结构
HBase 中通过row 和columns 确定的为一个存贮单元称为cell。
Cell:由{row key, column(=<family> + <label>), version}唯一确定的单元。cell 中的数
据是没有类型的,全部是字节码形式存贮。
请描述如何解决Hbase中region太小和region太大带来的冲突.
Region过大会发生多次compaction,将数据读一遍并重写一遍到hdfs 上,占用io,region过小会造成多次split,region 会下线,影响访问服务,调整hbase.hregion.max.filesize 为256m.
start-hbase.sh 的流程如下:
1.运行 hbase-config.sh
hbase-config.sh的作用:
1>.装载相关配置,如HBASE_HOME目录,conf目录,regionserver机器列表,JAVA_HOME 目录等,它会调用$HBASE_HOME/conf/hbase-env.sh .
2>.解析参数(0.96 版本及以后才可以带唯一参数 autorestart,作用就是重启)
3>.调用 hbase-daemon.sh 来启动 master.
4>.调用 hbase-daemons.sh 来启动 regionserver zookeeper master-backup.
2.hbase-env.sh 的作用:
主要是配置 JVM 及其 GC 参数,还可以配置 log 目录及参数,配置是否需要 hbase 管
理 ZK,配置进程 id 目录等.
3.hbase-daemons.sh 的作用:根据需要启动的进程,
如 zookeeper,则调用 zookeepers.sh
如 regionserver,则调用 regionservers.sh
如 master-backup,则调用 master-backup.sh
4.zookeepers.sh 的作用:
如果 hbase-env.sh 中的 HBASE_MANAGES_ZK"="true",那么通过ZKServerTool这个类解析xml配置文件,获取 ZK 节点列表,然后通过 SSH 向这些节点发送远程命令执行。
5.regionservers.sh 的作用:
与 zookeepers.sh 类似,通过配置文件,获取 regionserver 机器列表,然后 SSH 向这些机器发送远程命令:
6.master-backup.sh 的作用:
通过 backup-masters 这个配置文件,获取 backup-masters 机器列表,然后 SSH 向这些机器发送远程命令。
简述 HBASE中compact用途是什么,什么时候触发,分为哪两种,有什么区别,有哪些相关配置参数?
在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当storeFile的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。
Compact 的作用:
1>.合并文件
2>.清除过期,多余版本的数据
3>.提高读写数据的效率
HBase 中实现了两种 compaction 的方式:minor and major. 这两种 compaction 方式的区别是:
1、Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过
期版本清理,不做任何删除数据、多版本数据的清理工作。
2、Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。
相关配置举例: