周末小作业

5 篇文章 0 订阅
3 篇文章 0 订阅

一、填空
hive填空:

  1. 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是__CLI_____,它启动的时候,会同时启动一个hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动_Client__模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。___WUI_____是通过浏览器访问Hive。
  2. Hive的数据由两部分组成:数据文件__和元数据。元数据用于存放Hive库的基础信息,元数据包括:数据库信息表的名字_、__表的列和分区及其属性,表的属性,表的数据所在目录________等。
  3. Hive中主要包括四类数据模型:表(Table)外部表(ExternalTable)___、__分区(Partition)桶(Bucket)_。
  4. 基于socket通讯,支持跨语言。_Hive Thrift____服务简化了在多编程语言中运行Hive的命令。绑定支持C++,Java,PHP,Python和Ruby语言。
  5. Hive 从两个维度 对表的存储进行管理:“行格式(row format)”和“文件格式(file format)___ ”。
  6. hive元数据对应的表约有几十个,其中TBLS表中存有_所有hive表的基本_______信息,PARTITIONS 表中存有__hive表分区信息________。
  7. Hive中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为__空格、”\t”、”\x001″)、行分隔符(通常为”\n”_____)以及读取文件数据的方法(Hive中默认有三个文件格式 TextFile_____、_ SequenceFile______、__ RCFile______)。
  8. Hive支持基本数据类型和复杂类型,基本数据类型主要有_数值型、布尔型和字符串类型________,复杂类型有三种:数据组(ARRAY)映射(MAP)和_结构体(STRUCT)和共同体(UNION)__
    文本格式文件:以逗号或制表符分割的文本文件。但这两种文件格式有一个共同的缺点:用户需要对文本文件中那些不需要作为分隔符处理的逗号或者制表符格外小心。因此,Hive默认使用了几个控制字符\n、A(Ctrl+A)、B、^C,其中在CREATE TABLE语句中,^A八进制编码表示是
    \001
    ,^B八进制编码表示是
    \002______,^C八进制编码表示是
    _ \003______。
    Hbase填空:
    传统行式数据库特点:数据是按行存储的,没有建立索引的查询将消耗很大的io____、建立索引和视图需要花费一定的物理空间和时间资源,面对大量的查询,复杂的查询,数据库必须被大量膨胀才能满足性能需求________;
    列式数据库特点:数据是按列存储的,每一列单独存放___、数据既是索引_、只访问查询涉及的列,大量降低系统io_____、每一列有一个线索来处理,支持查询的高并发____、数据类型一致,数据特征相似,高效的压缩_______;
    HBase特点:它介于 nosql 和 RDBMS 之间,仅能通过主键(row key)和主键的 range 来检索数据,仅支 持单行事务(可通过 hive 支持来实现多表 join 等复杂操作)。 Hbase 查询数据功能很简单, 不支持 join 等复杂操作 ._ 不支持复杂的事务(行级的事务) ._ Hbase 中支持的数据类型: byte[] ._ 主要用来存储结构化和半结构化的松散数据。 __;
  9. HBase的服务器体系结构遵从简单的主从服务器架构,它由 HRegion服务器(HRegion Server)群 和 HBase Master服务器(HBase Master Server) 构成。HBase中所有的服务器都是通过 ZooKeeper 来进行协调,并处理HBase服务器运行期间可能遇到的错误。
  10. HBase Master Server本身并不存储HBase中的任何数据,HBase逻辑上的表可能会被划分成多个 HRegion ,然后存储到 HRegion Server 群中。HBase Master Server中存储的是从数据到 HRegion Server中 的映射。
  11. HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与_ HMaster 进行RPC;对于数据读写类操作,Client与 HRegionServer 进行RPC。
    每台HRegion Server都会HMaster通信,HMaster的主要任务_就是要告诉每台HRegion服务器它要维护哪些HRegion。 。
    当一台新的HRegion Server登录到HMaster时,HMaster会告诉它等待分配数据。而当一台HRegion死机时,HMaster会做的工作:把它负责的HRegion标记为未分配,然后再把它们分配到其他HRegion服务器中。 。
    HMaster没有单点问题(SPFO),HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:管理用户对Table的 增、删、改、查操作 ;管理HRegion Server的 负载均衡 、 调整Region分布 ;在Region Split后,负责 新Region分布 。
  12. 从物理上来说,一张表被拆分成多块,每块就是一个HRegion。用 表名+开始/结束主键 ,来区分每一个HRegion,一个HRegion会保存一个表里面某段连续的数据,从开始主键到结束主键,一张完整的表格是保存在多个HRegion上面。 HRegionServer 主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
  13. HRegion Server内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个 Region ,HRegion中由多个 HStore 组成,它的存储是HBase存储的核心,它由两部分组成,一部分是 MemStore ,一部分是StoreFiles。每个StoreFiles对应了Table中的一个 的存储。
    是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦HRegion Server意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了。每个HRegion Server中都有一个HLog对象,HLog作用实现Write Ahead Log的类 。
  14. HBase中有3 个主要组件:客户端库、一台主服务器、多台 region 服务器。可以动态地增加和移除region 服务器,以适应不断变化的负载。HBase是按照列存储的稀疏行/列矩阵,物理模型实际上就是把概念模型中的一行进行切割,并按照 列族 存储,这点在进行数据设计和程序开发的时候必须牢记。最基本的单位是列(column) 。一列或多列形成一行(row) ,并由唯一的 行键(row key) 来确定存储。一张表初始的时候只有一个region ,用户开始向表中插入数据时,系统会检查这个region的大小,确保其不超过配置的最大值。如果超过了限制,系统会在 中间键 _______处将这个region 拆分成两个大致相等 的子region。
  15. HBase中两种主要的数据读取函数是get和scan,但是他们缺少一些细粒度的筛选功能,不能对 _行键、列名或列值_____进行过滤,但是通过过滤器 可以达到这个目的。
    过滤器最基本的接口叫Filter。所有的过滤器都在服务端生效,叫做谓词下推(predicate push down) 。这样可以保证被过滤掉的数据不会被传送到客户端。请举例你所知道的过滤器:列值过滤器—SingleColumnValueFilter 列名前缀过滤器—ColumnPrefixFilter 多个列名前缀过滤器—MultipleColumnPrefixFilter rowKey过滤器—RowFilter ;
    Hive简答:
    二、简述题
    1、按下图简述一下Hive运行机制。(5分)
    在这里插入图片描述
    用户提交hql语句给driver。driver把这个hql发给compiler,让compiler返回一个执行计划plan。compiler通过查询metaStorre获取元数据,回来解析成执行计划存储在 HDFS 中,将这些指令翻译成MapReduce,发给driver。dirver把执行计划,发给excuter,让它向hadoop提交mr job作业。提交job,就涉及yarn资源分配,和job执行监控和结果获取了。最后,将执行返回的结果输出到用户交互接口。

2. 请简述Hive适用的场景。(5分)
1.Hive中的表为纯逻辑表,仅仅对表的元数据进行定义。Hive没有物理存储的功能,它完全依赖HDFS和MapReduce。尚学堂陈老师指出这样就可以将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。HBase表则是物理表,适合存放非结构化的数据。
2.Hive是在MapReduce的基础上对数据进行处理,而MapReduce的数据处理依照行模式;而HBase为列模式,这样使得对海量数据的随机访问变得可行。
3.HBase的存储表存储密度小,因而用户可以对行定义成不同的列;而Hive是逻辑表,属于稠密型,即定义列数,每一行对列数都有固定的数据。
4.Hive使用Hadoop来分析处理数据,而Hadoop系统是批处理系统,所以数据处理存在延时的问题;而HBase是准实时系统,可以实现数据的实时查询。
5.Hive没有row-level的更新,它适用于大量append-only数据集(如日志)的批任务处理。而基于HBase的查询,支持和row-level的更新。
6.Hive全面支持SQL,一般可以用来进行基于历史数据的挖掘、分析。而HBase不适用于有join,多级索引,表关系复杂的应用场景。

3. 请简述Hive内部表与外部表区别,及适用场景。(5分)
⑴区别:
①Hive创建内部表时(默认创建内部表),会将数据移动到数据仓库指向的路径;创建外部表(需要加关键字external),仅记录数据所在的路径,不对数据的位置做任何改变;
⑵Hive删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据;
⑵场景:

①外部表:比如某个公司的原始日志数据存放在一个目录中,多个部门对这些原始数据进行分析,那么创建外部表是明智选择,这样原始数据不会被删除;
②内部表:对原始数据或比较重要的中间数据进行建表存储;
③分区表:将每个小时或每天的日志文件进行分区存储,可以针对某个特定时间段做业务分析,而不必分析扫描所有数据;
4. 请简述Hive中分区、分桶的适用场景。(5分)
分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助。
分区是一种根据“分区列”(partition column)的值对表进行粗略划分的机制。Hive中的每个分区对应数据库中相应分区列的一个索引,每个分区对应着表下的一个目录,在HDFS上的表现形式与表在HDFS上的表现形式相同,都是以子目录的形式存在。
分区中的数据可以被进一步拆分成桶,bucket,不同于分区对列直接进行拆分,桶往往使用列的哈希值进行数据采样。

在分区数量过于庞大以至于可能导致文件系统崩溃时,建议使用桶。
  桶的数量是固定的。
  Hive使用基于列的哈希函数对数据打散,并分发到各个不同的桶中从而完成数据的分桶过程。
  注意,hive使用对分桶所用的值进行hash,并用hash结果除以桶的个数做取余运算的方式来分桶,保证了每个桶中都有数据,但每个桶中的数据条数不一定相等。
  哈希函数的选择依赖于桶操作所针对的列的数据类型。除了数据采样,桶操作也可以用来实现高效的Map端连接操作。
  记住,分桶比分区,更高的查询效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值