锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步!接下来的是今日的面试题:
1.HBase的特点是什么?**
1)大:一个表能够有数十亿行,上百万列;
2)无模式:每行都有一个可排序的主键和任意多的列,列能够依据须要动静的减少,同一张表中不同的行能够有截然不同的列;
3)面向列:面向列(族)的存储和权限管制,列(族)独立检索;
4)稠密:空(null)列并不占用存储空间,表能够设计的十分稠密;
5)数据多版本:每个单元中的数据能够有多个版本,默认状况下版本号主动调配,是单元格插入时的工夫戳;
6)数据类型繁多:Hbase中的数据都是字符串,没有类型。
2.HBase和Hive的区别?
① 两者是什么?
Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。通过Hive能够应用HQL语言查问寄存在HDFS上的数据。HQL是一品种SQL语言,这种语言最终被转化为Map/Reduce. 尽管Hive提供了SQL查问性能,然而Hive不可能进行交互查问–因为它只可能在Haoop上批量的执行Hadoop。
Apache HBase是一种Key/Value零碎,它运行在HDFS之上。和Hive不一样,Hbase的可能在它的数据库上实时运行,而不是运行MapReduce工作。Hive被分区为表格,表格又被进一步宰割为列簇。列簇必须应用schema定义,列簇将某一类型列集合起来(列不要求schema定义)。例如,“message”列簇可能蕴含:“to”, ”from” “date”,“subject”, 和”body”. 每一个 key/value对在Hbase中被定义为一个cell,每一个key由row-key,列簇、列和工夫戳。
在Hbase中,行是key/value映射的汇合,这个映射通过row-key来惟一标识。Hbase利用Hadoop的基础设施,能够利用通用的设施进行程度的扩大。
② 两者的特点
Hive帮忙相熟SQL的人运行MapReduce工作。因为它是JDBC兼容的,同时,它也可能和现存的SQL工具整合在一起。运行Hive查问会破费很长时间,因为它会默认遍历表中所有的数据。尽管有这样的毛病,一次遍历的数据量能够通过Hive的分区机制来管制。分区容许在数据集上运行过滤查问,这些数据集存储在不同的文件夹内,查问的时候只遍历指定文件夹(分区)中的数据。这种机制能够用来,例如,只解决在某一个工夫范畴内的文件,只有
这些文件名中包含了工夫格局。
HBase通过存储key/value来工作。它反对四种次要的操作:减少或者更新行,查看一个范畴内的cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据能够被删除,而后通过Hbase compactions就能够开释出空间)。尽管HBase包含表格,然而schema仅仅被表格和列簇所要求,列不须要schema。Hbase的表格包含减少/计数性能。
③ 限度
Hive目前不反对更新操作。另外,因为hive在hadoop上运行批量操作,它须要破费很长的工夫,通常是几分钟到几个小时才能够获取到查问的后果。Hive必须提供事后定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。
HBase查问是通过特定的语言来编写的,这种语言须要重新学习。类SQL的性能能够通过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并不是兼容所有的ACID个性,尽管它反对某些个性。最初但不是最重要的–为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包含配置服务,保护元信息和命名空间服务。
④ 利用场景
Hive适宜用来对一段时间内的数据进行剖析查问,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查问。因为它须要很长时间才能够返回后果。
Hbase非常适合用来进行大数据的实时查问。Facebook用Hbase进行音讯和实时的剖析。它也能够用来统计Facebook的连接数。
⑤ 总结
Hive和Hbase是两种基于Hadoop的不同技术–Hive是一品种SQL的引擎,并且运行MapReduce工作,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。当然,这两种工具是能够同时应用的。就像用Google来搜寻,用FaceBook进行社交一样,Hive能够用来进行统计查问,HBase能够用来进行实时查问,数据也能够从Hive写到Hbase,设置再从Hbase写回Hive。
3.HBase实用于怎么的情景?**
① 半结构化或非结构化数据
对于数据结构字段不够确定或横七竖八很难按一个概念去进行抽取的数据适宜用HBase。以下面的例子为例,当业务倒退须要存储author的email,phone,address信息时RDBMS须要停机保护,而HBase反对动静减少。
② 记录十分稠密
RDBMS的行有多少列是固定的,为null的列节约了存储空间。而如上文提到的,HBase为null的Column不会被存储,这样既节俭了空间又进步了读性能。
③ 多版本数据
如上文提到的依据Row key和Column key定位到的Value能够有任意数量的版本值,因而对于须要存储变动历史记录的数据,用HBase就十分不便了。比方上例中的author的Address是会变动的,业务上个别只须要最新的值,但有时可能须要查问到历史值。
④ 超大数据量
当数据量越来越大,RDBMS数据库撑不住了,就呈现了读写拆散策略,通过一个Master专门负责写操作,多个Slave负责读操作,服务器老本倍增。随着压力减少,Master撑不住了,这时就要分库了,把关联不大的数据离开部署,一些join查问不能用了,须要借助中间层。随着数据量的进一步减少,一个表的记录越来越大,查问就变得很慢,于是又得搞分表,比方按ID取模分成多个表以缩小单个表的记录数。经验过这些事的人都晓得过程是如许的折腾。采纳HBase就简略了,只须要加机器即可,HBase会主动程度切分扩大,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。
发表回复