Hadoop面试-大数据面试

   1.  Hadoop的3种运行模式:

  • 独立模式: Hadoop的默认模式,它使用本地文件系统进行输入和输出操作。该模式主要用于调试目的,不支持使用HDFS。此外,在这种模式下,不需要对mapred-site.xml,core-site.xml和hdfs-site.xml文件进行自定义配置。与其他模式相比,此模式的运行速度要快得多。
  • 伪分布式模式(单节点群集):在这种情况下,需要为上述三个文件进行配置。在这种情况下,所有守护程序都在一个节点上运行,因此主节点和从节点都是     
  •  完全分布式模式(多节点集群): 这是Hadoop的生产阶段(Hadoop的知名度),在该阶段使用数据并将其分布在Hadoop集群上的多个节点上。将单独的节点分配为主节点和从节点。

      2. Hadoop中常见的输入格式是什么:

Hadoop 中有3中常见的输入格式

  • 文本输入格式:  Hadoop中的默认输入格式
  • 值输入格式: 用于纯文本文件,其中文件分为几行
  • 序列文件输入格式: 用于按顺序读取文件   

3.  如何传输数据从Hive到HDFS: 

hive> insert overwrite directory '/' select * from emp;

可以编写查询,查询要从Hive导入到HDFS的数据。我们收到的输出将存储在指定HDFS路径中的零件文件中。

4 .使用已存在的输出目录运行Hadoop job,会发生什么情况?

它将抛出一个异常,指出输出文件目录已经存在, 要运行 MapReduce job需要确保HDFS中不存在输出目录。

需要在运行作业之前删除目录,我们可以使用shell:

Hadoop fs –rmr /path/to/your/output/

或用Java的API

FileSystem.getlocal(conf).delete(outputDir, true);

   5.如何调试Hadoop代码?

首先,我们应该检查当前正在运行的MapReduce job的列表。接下来,我们需要看到没有孤立的job在运行;如果是,则需要确定RM logs的位置

1. run:

ps –ef | grep –I ResourceManager

 

然后,在显示的结果中查找RM logs,必须从显示的列表中找出job ID,并检查是否有与该job相关的错误消息。

2. 基于RM日志,我们需要确定执行任务所涉及的工作节点。

3. 现在,我们将登录到该节点并运行以下代码:

ps –ef | grep –iNodeManager

4. 然后,我们将检查 Node Manager log。大多数错误来自每个MapReduce job 的用户级日志

6.JobTracker在Hadoop中的作用是什么?

JobTracker的主要功能是资源管理(管理TaskTrackers),跟踪资源可用性和任务生命周期管理(跟踪任务的进度和容错能力)。

  • 它是在单独的节点上运行的进程,通常不在DataNode上。
  • JobTracker与NameNode通信以标识数据位置。
  • 它找到最佳TaskTracker节点以在给定节点上执行任务。
  • 它监视各个TaskTracker,并将整个作业提交回客户端。
  • 它跟踪从属节点本地的MapReduce工作负载的执行情况

 

7.RecordReader 在 Hadoop的用处:

尽管InputSplit定义了工作量,但并未描述如何访问它。这是RecordReader类进入图片的地方, 该类从其源中获取面向字节的数据,并将其转换为面向记录的键-值对,以使其适合Mapper任务读取。同时 InputFormat 定义了此Hadoop RecordReader实例。

 

8. 什么是Hadoop中的SequenceFile:

SequenceFile是MapReduce I / O格式的广泛使用,是一个包含二进制键值对的平面文件。映射输出在内部存储为SequenceFile。它提供了Reader,Writer和Sorter类。三种SequenceFile格式如下:

 

9. 什么是分布式缓存?有什么好处?

    • 未压缩的键值记录
    • 记录压缩的键值记录-此处仅压缩“值”
    • 块压缩键值记录-密钥和值都分别收集在“块”中并进行压缩。“块”的大小是可配置的
       

Hadoop中的分布式缓存是MapReduce框架提供的一项服务,用于在需要时缓存文件。

一旦为特定作业缓存了文件,Hadoop将使其在执行映射和归约任务的系统和内存中的每个DataNode上均可用. 可以轻松访问和读取缓存文件,并在代码中填充所有集合(如数组,哈希图)

使用分布式缓存的好处如下:

  • 它分发简单的只读文本/数据文件和/或复杂的类型(例如jar,档案等)然后,这些归档文件将在从属节点上取消归档。
  • 分布式缓存跟踪缓存文件的修改时间戳,该时间戳指示在执行job 之前不应修改文件。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值