• 5月面试问题总结


    算法

    算数表达式求解(不用递归)

    1.HIVE和HBASE区别

    1. 两者分别是什么?  

     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的基础设施,可以利用通用的设备进行水平的扩展。

    2. 两者的特点

      Hive帮助熟悉SQL的人运行MapReduce任务。因为它是JDBC兼容的,同时,它也能够和现存的SQL工具整合在一起。运行Hive查询会花费很长时间,因为它会默认遍历表中所有的数据。虽然有这样的缺点,一次遍历的数据量可以通过Hive的分区机制来控制。分区允许在数据集上运行过滤查询,这些数据集存储在不同的文件夹内,查询的时候只遍历指定文件夹(分区)中的数据。这种机制可以用来,例如,只处理在某一个时间范围内的文件,只要这些文件名中包括了时间格式。

        HBase通过存储key/value来工作。它支持四种主要的操作:增加或者更新行,查看一个范围内的cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据可以被删除,然后通过Hbase compactions就可以释放出空间)。虽然HBase包括表格,但是schema仅仅被表格和列簇所要求,列不需要schema。Hbase的表格包括增加/计数功能。

    3. 限制

      Hive目前不支持更新操作。另外,由于hive在hadoop上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。

        HBase查询是通过特定的语言来编写的,这种语言需要重新学习。类SQL的功能可以通过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并不是兼容所有的ACID特性,虽然它支持某些特性。最后但不是最重要的--为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。

    4. 应用场景

        Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。

        Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。

    5. 总结

        Hive和Hbase是两种基于Hadoop的不同技术--Hive是一种类SQL的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。当然,这两种工具是可以同时使用的。就像用Google来搜索,用FaceBook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

    2、Hbase优化

           参考博客:https://www.cnblogs.com/LHWorldBlog/p/8299363.html

    3、Hbase架构

           参考博客:https://www.yiibai.com/hbase/hbase_architecture.html

    4、Sql优化

           参考博客:https://blog.csdn.net/tian31233/article/details/52052963

    5、MapReduce工作原理

    参考:https://www.cnblogs.com/hadoop-dev/p/5894911.html

           https://blog.csdn.net/wyqwilliam/article/details/81009792

    5、数据库左连接、右连接、内连接

    参考:https://www.cnblogs.com/boundless-sky/p/6594518.html

           https://www.cnblogs.com/buxingzhelyd/p/7853454.html


    YARN架构
    1 RM(ResourceManager) + N NM(NodeManager)

    ResourceManager的职责: 一个集群active状态的RM只有一个,负责整个集群的资源管理和调度
    1)处理客户端的请求(启动/杀死)
    2)启动/监控ApplicationMaster(一个作业对应一个AM)
    3)监控NM
    4)系统的资源分配和调度


    NodeManager:整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况
    1)定期向RM汇报本节点的资源使用请求和各个Container的运行状态
    2)接收并处理RM的container启停的各种命令
    3)单个节点的资源管理和任务管理

    ApplicationMaster:每个应用/作业对应一个,负责应用程序的管理
    1)数据切分
    2)为应用程序向RM申请资源(container),并分配给内部任务
    3)与NM通信以启停task, task是运行在container中的
    4)task的监控和容错

    Container:
    对任务运行情况的描述:cpu、memory、环境变量

    YARN执行流程
    1)用户向YARN提交作业
    2)RM为该作业分配第一个container(运行AM)
    3)RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM
    4) AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况
    5)AM采用轮训的方式通过RPC协议向RM申请和领取资源
    6)AM申请到资源以后,便和相应的NM通信,要求NM启动任务
    7)NM启动我们作业对应的task

  • 相关阅读:
    es6 javascript对象方法Object.assign()
    在vue中使用axios实现跨域请求并且设置返回的数据的格式是json格式,不是jsonp格式
    Vue中应用CORS实现AJAX跨域,及它在 form data 和 request payload 的小坑处理
    nvm、nzm、npm 安装和使用详解
    Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动......
    npm安装/删除/发布/更新/撤销发布包
    web前端性能优化总结
    一道经典面试题-----setTimeout(function(){},0)和引发发的其它面试题
    渐进增强和优雅降级之间的区别在哪里?
    大学物理(上)期中考试参考答案
  • 原文地址:https://www.cnblogs.com/aishanyishi/p/10865467.html
Copyright © 2020-2023  润新知