【面经】联想大数据开发面经

欢迎点击此处关注公众号。

1.说一下实习和学校做过什么事情,有什么收获。

问了一些细节。

2.Hive 怎么把 SQL 编译成 MapReduce

Hive 的基本流程:

  • UI 调用 DRIVER 的接口;

  • DRIVER 为查询创建会话句柄,并将查询发送到 COMPILER 生成执行计划;

  • COMPILER 从元数据存储中获取本次查询所需要的元数据,该元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词修建分区;

  • COMPILER 生成的计划是分阶段的 DAG,每个阶段要么是 map/reduce 作业,要么是一个元数据或者 HDFS 上的操作。将生成的计划发给 DRIVER。如果是 map/reduce 作业,该计划包括 map operator trees 和一个 reduce operator tree,执行引擎将会把这些作业发送给 MapReduce。

  • 执行引擎将这些阶段提交给适当的组件。在每个 task(mapper/reducer) 中,从 HDFS 文件中读取与表或中间输出相关联的数据,并通过相关算子树传递这些数据。最终这些数据通过序列化器写入到一个临时 HDFS 文件中(如果不需要 reduce 阶段,则在 map 中操作)。临时文件用于向计划中后面的 map/reduce 阶段提供数据。

  • 最终的临时文件将移动到表的位置,确保不读取脏数据(文件重命名在 HDFS 中是原子操作)。对于用户的查询,临时文件的内容由执行引擎直接从 HDFS 读取,然后通过 Driver 发送到 UI。

编译 SQL 的任务是在上述的 COMPILER(编译器组件)中完成的。Hive 将 SQL 转化为 MapReduce 任务,整个编译过程分为六个阶段:

  1. 词法、语法解析:将 SQL 转化为抽象语法树 AST Tree;
  2. 语义解析:遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock;
  3. 生成逻辑执行计划:遍历 QueryBlock,翻译为执行操作树 OperatorTree;
  4. 优化逻辑执行计划:逻辑层优化器进行 OperatorTree 变换,合并 Operator,达到减少 MapReduce Job,减少数据传输及 shuffle
大数据发中,Shell脚本是非常常用的工具。以下是一些常见的面试问题和答案: 1. 问: 如何执行一个已经创建的Sqoop job? 答: 可以使用以下命令执行Sqoop job: sqoop job -exec job名称 。 2. 问: 你使用过哪些Shell脚本? 答: 我使用过awk、sed、cut和sort等命令来处理文本数据。我还写过一些用于集群启动、脚本分发、数据导入导出以及数仓层级内部导入的Shell脚本 。 3. 问: 如何通过Shell脚本杀死远程服务器上的进程? 答: 有两种方法可以杀死远程服务器上的进程。一种是使用以下命令: ssh $i “ps -ef | grep 进程名 | grep -v grep |awk ‘{print $2}’ | xargs -n1 kill”。另一种是使用以下命令: ps -ef | awk ‘/进程名/ && !/awk/ {print $2}’ | xargs -n1 kill -9 。 4. 问: Shell中单引号和双引号有什么区别? 答: 在Shell脚本中,双引号可以保留变量的值并将其扩展,而单引号则会将变量视为普通的字符串。双引号内的特殊字符会被解释,而单引号内的特殊字符会被视为字符串的一部分。此外,双引号内可以使用转义字符来表示特殊字符,而单引号不支持转义字符 。 希望以上回答对你有所帮助。如果你有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [shell编程之大数据面试题](https://blog.csdn.net/qq_27924553/article/details/111938876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [大数据高频面试题——linux&shell-详解](https://blog.csdn.net/zlmldylinke/article/details/113886037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值