zoukankan      html  css  js  c++  java
  • 大数据面试题

    判断题:

    1.如果 NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工作。(错误)  

    分析:

    SecondaryNameNode是帮助恢复,而不是替代

    SecondaryNameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份

    首先,它定时到NameNode去获取edit logs,并更新到fsimage上。[注:Secondary NameNode自己的fsimage]

    一旦它有了新的fsimage文件,它将其拷贝回NameNode中。

    NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。

    它的职责是合并NameNode的edit logs到fsimage文件中。

    2. NameNode 负责管理 数据Metadataclient 端每次读写请求,它都会从磁盘中读取或会写入metadata信息并反馈client 端。(错误)

    分析:

    NameNode 不需要从磁盘读取 metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。

    1)文件写入

    Client向NameNode发起文件写入的请求。

    NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。

    Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

    2)文件读取

    Client向NameNode发起文件读取的请求。

    3.hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。(错误)
    分析:
    hadoop dfsadmin -report 
    用这个命令可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况,但是并不能定位HDFS损坏块。

    4.Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。(错误)
    hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。

    5.DataNode 首次加入 集群(cluster) 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行“Hadoop namenode -format”操作格式化磁盘。(错误)
    分析:
    这个报错是说明 DataNode 所装的Hadoop版本和其它节点不一致,应该检查DataNode的Hadoop版本

    简答题:

    1.请列出你所知道的hadoop调度器,并且简要说明其工作方法。

    参考:https://www.cnblogs.com/skyl/p/4785681.html

    hadoop调度器的作用是将系统中空闲的资源按一定策略分配给作业.
    比较流行的三种调度器有:默认调度器FIFO,计算能力调度器Capacity Scheduler,公平调度器Fair Scheduler
    1) 默认调度器FIFO
    hadoop中默认的调度器,采用先进先出的原则
    2) 计算能力调度器Capacity Scheduler
    选择占用资源小,优先级高的先执行
    3) 公平调度器Fair Scheduler
    同一队列中的作业公平共享队列中所有资源

    2.Hive有哪些方式保存元数据,各有哪些特点


    通俗的讲,元数据就是存储在Hive中的数据的描述信息。

    Hive中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录。Hive元存储(Metastore)管理参数默认储存在自带的Derby数据库中。缺点就是不适合多用户操作,并且数据存储目录不固定。数据库和Hive所在的机器绑定,极度不方便管理。通常将元数据存储在我们自己创建的MySQL数据库(本地或远程)当中。

    元数据存储两种方法:

    1)derby数据库

    默认内存数据库,一次只能打开一个会话,会话关闭metastore数据消失

    2)MySQL数据库

    外部metastore存储引擎,可以让多个会话使用



    :
    自带的Derby数据库
    本地RDBMS数据库,即关系数据库管理系统(Relational Database Management System), 如MySQL
    远程MySQL

    26.flume介绍,采集日志时中间停了,怎么记录之前的日志?

    当节点出现故障时,日志能够被传送到其他节点上而不会丢失

    事件在通道中进行,该通道管理从故障中恢复。Flume支持一个由本地文件系统支持的持久文件通道。还有一个内存通道,它只是将事件存储在内存中的队列中,这更快,但是当代理进程死亡时仍然留在内存通道中的任何事件都无法恢复。

    a)Flume提供了三种级别的可靠性保障,从强到弱依次分别为

    i.end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送)

    ii.Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送)

    iii.Best effort(数据发送到接收方后,不会进行确认)

    27.Sqoop在导入数据到mysql中,如何让数据不重复导入?如果存在数据问题sqoop如何处理?

    答:增量导入。

    指定--last-value

    增量更新时指定增量或更新的键

    在实际应用中还存在这样一个问题,比如导入数据的时候,Map Task 执行失败, 那么该 Map 任务会转移到另外一个节点执行重新运行,这时候之前导入的数据又要重新导入一份,造成数据重复导入。 因为 Map Task 没有回滚策略,一旦运行失败,已经导入数据库中的数据就无法恢复。

    Sqoop export 提供了一种机制能保证原子性, 使用--staging-table 选项指定临时导入的表。

    Sqoop export 导出数据的时候会分为两步:

    第一步,将数据导入数据库中的临时表,如果导入期间 Map Task 失败,会删除临时表数据重新导入;

    第二步,确认所有 Map Task 任务成功后,会将临时表名称为指定的表名称。

    sqoop export --connect jdbc:mysql://db.dajiangtai.net:3306/djtdb_hadoop --username sqoop --password sqoop --table user --staging-table staging_user

  • 相关阅读:
    CentOS系统一键部署jdk,maven,tomcat,mysql
    使用sed在源文件上直接替换某一行的内容,只替换第一次找到的那行
    MLPerf 机器学习基准测试实战入门(一)NAVIDA-GNMT
    SpringBoot Controller接收参数的几种常用方式(转)
    使用延时队列DelayQueue
    Oracle、MySql、SQLServer 数据分页查询(转)
    SqlServer收缩日志
    防火墙升级导致产环境服务中止20小时的问题
    NFS相关
    jquery.validate不使用submit提交,而是使用button按钮提交
  • 原文地址:https://www.cnblogs.com/beiyi888/p/9647454.html
Copyright © 2011-2022 走看看