0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Hadoop/Hive 面经总结

Last updated at Posted at 2021-11-07

概要

看了同事分享的面经,自己做点总结
面经网址: https://www.iteblog.com/archives/10040.html

Hadoop

Hadoop写流程

  1. Client上传请求。NameNode检查权限,文件重名
  2. Client文件切分。默认block 128MB
  3. 向NameNode获得DataNode地址
  4. 和DataNode建立连接,进行传送
  5. 一个block传送完毕后重复3,4过程

Hadoop写失败处理

  • DataNode写完会返回ack确认。如果没有ack确认,NameNode会复制DataNode,然后下线DataNode

Hadoop读过程

  1. Client向NameNode请求block位置
  2. NameNode检查DataNode然后提供最近的活的DataNode地址
  3. block的读取是并行的
  4. 每次读完一个block,进行checksum验证。如果有问题会通知NameNode
  5. 合并全部block

Hadoop读失败处理

  • Checksum验证。发现错误会通知NameNode,并且获取下一个block副本的DataNode地址

NameNode启动

首次启动

  1. 格式化文件系统,生成fsimage
  2. 读取fsimage进内存,等待DataNode注册
  3. 启动DataNode
  4. 出现文件操作时生成edit

二次启动

  1. 读取fsimage和edits文件
  2. 合并成新的fsimage
  3. 创建新的edit
  4. 启动DataNode

DataNode的添加

  1. Install jdk和ssh
  2. 修改Hosts,添加NameNode的IP
  3. 修改Config文件
  4. 启动DataNode进程
  5. 设置Load Balance

Secondary NameNode

  • 用于合并NameNode的edit logs到fsimage

Kerberos

高可用结构

高可用结构里面不需要Secondary NameNode
log的更新由JournalNode担当

MapReduce

Architecture
大图: http://4.bp.blogspot.com/_j6mB7TMmJJY/SS0CEJLklnI/AAAAAAAAAGQ/ogPGJ3WYpt4/s1600-h/P4.png

Map过程

  1. split。切割split文件
  2. spill(溢出写入) to disk
    1. sort
    2. combine。局部汇总,适用于求和类,不适用于求平均值
  3. merge

Reduce过程

  1. copy
  2. sort
  3. reduce

shuffle

  • map的2,3和reduce的1,2
  • 压缩机制。
    • 为了减少IO
    • snappy最常用

Tez

Tez vs MapReduce

YARN

Architecture

  • 管理节点
    • Resource Manager
  • 工作节点
    • NodeManager
    • Application Master
    • Container

三种调度模型

  1. FIFO Scheduler
  2. Capacity Scheduler
  3. Fair Scheduler

怎么限制不同的用户的资源使用量

Queue: unfunded, schedule

Hive

Hive结构

Hive内部表和外部表

  • 内部表由Hive管理,外部表(external)由HDFS管理
  • 内部表删除。metadata+object
  • 外部表删除。metadata only

Hive支持索引吗

  • Hive有索引。用于制定HDFS文件路径和偏移量
  • Hive索引不支持主键或者外键

文件存储类型

ORC/Parquest

  • 压缩
  • 二进制文件

Metastore

  • 是个service
  • 通过metastore获得metadata
  • 多个client可以同时访问metastore并不需要知道保存metadata的mysql的用户名和密码

如何提高Hive效率

  • Partition
    • 合理分割, 防止数据倾斜
  • Map
    • 适当增大分割文件大小
    • Map前进行合并
    • 增加Map的数量
  • Reduce
    • 提高每个reduce的数据处理量
    • 调整reduce数量(并不是越多越好,消耗资源)
  • Query
    • 用group by代替distinct等

Spark

architecture
with yarn
row object

Kafka

kafka architecture

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?