day220708,面试笔记,

zookeeper节点类型

Znode有两种, 分别为临时节点永久节点

节点的类型在创建时即被确定, 并且不能改变

1) 临时节点: 该节点的生命周期依赖于创建他们的会话. 一旦会话结束, 临时节点将被自动删除, 当然也可以手动删除. 临时节点不允许拥有子节点.

2) 永久节点: 该节点的生命周期不依赖于会话, 并且只有在客户端显示执行删除操作的时候, 他们才能被删除. 

Znode还有一个序列化的特性, 如果创建的时候指定的话, 该Znode的名字后面会自动追加一个不断增加的序列号. 序列号对于此节点的父节点来说是唯一的, 这样便会记录每个子节点创建的先后顺序. 他的格式为"%10d" .

这样便会存在四种类型的Znode节点, 分别对应:

1) 永久非序列化节点

2) 临时非序列化节点

3) 永久序列化节点

4) 临时序列化节点

NameNode

SecondaryNameNode

hdfs优化、面试:小文件存储问题?

小文件吃NN内存 文件再小也需要一条元数据记录。

解决:合并
    上传之前  本地合并----java python程序合并
    上传之中  appendtofile追加上传
    上传之后  archive归档 再使用程序合并

MapReduce---分布式计算框架 解决海量数据计算问题。

  • 思想:先分再合、分而治之。

1、大的拆分成若干个小的  并行处理各个小的 -----map阶段

2、将上一步的结果全局汇总合并----reduce阶段

限制条件:
    能不能分?
    分为之后有没有依赖?

mr思想效率:拆分并行处理上  如果不能并行处理  也没必要mr

MapReduce执行流程

  • mapper|map阶段-------程序maptask

  • 1、如何分?启动几个maptask? ---逻辑切片 逻辑规划机制
        split size ==block size==128M
        1个split启动1个maptask
    2、maptask读数据
        TextInputFormat  一行一行读 按行读取数据  返回kv键值对
    3、读取数据进行map阶段业务逻辑处理
    4、对输出的结果进行partition分区的计算(哈希取模法)
        key.hashcode  %  reducetask个数 ==余数  ==分区标号
    5、写入缓冲区
        100M   0.8触发溢写
    6、spill溢出 溢写
        把缓冲区的数据写入磁盘临时文件中   写的时候排序:默认key字典序 a-z
    7、merge 合并
        再次排序 key的字典序   

reducer|reduce阶段-----程序reducectask

1、启动几个reducetask? ---默认只有1个
2、copy 拉取数据  放入内存缓冲区
    从maptask拉取属于自己处理的数据
3、merge合并 排序sort      默认key字典序 a-z
4、分组
    key一样的分为一组
5、一组数据处理一次      进行reduce阶段业务逻辑处理
6、输出结果
    TextOutPutFormat

MapReduce的shuffle机制

  • shuffle描述了数据从无序到有序的一个过程。

  • shuffle指的是MapReduce当中一个过程,一个阶段。

    • 从map处理完业务逻辑开始

    • 到reduce准备处理业务逻辑之前

  • shuffle是一个横跨MapReduce两个阶段的一个过程。

    • map阶段shuffle

      • partition分区

      • collect 收集到缓冲区

      • spill溢写到磁盘

      • merge合并

      • sort排序

      • Combiner 归并(该组件默认不存在)

    • reduce阶段shuffle

      • copy拉取数据

      • merge合并

      • sort 排序

      • grouping 分组

  • ResourceManager RM

    • 资源申请分配的入口 仲裁者 调度的管理

  • NodeManager NM

    • 负责每台机器的资源管理

    • 通过响应RM的命令 启动回收资源容器container

  • ApplicationMaster AM

    • 每个程序内部的老大 负责程序内部的资源申请 执行监督 管理

    • 向RM汇报程序的执行情况 资源申请

mr程序提交yarn运行交互流程

  • client提交程序-------->RM------->申请资源运行本次程序AM

  • AM---->向RM注册 保持通信

  • AM根据切片数量-------->RM申请资源----->maptask ----->队列排队

  • AM---->NM 配合启动容器 运行maptask 监督执行情况

  • AM----->RM申请资源 reducetask 监督执行情况

  • 所有task运行完毕 AM----->RM 汇报执行情况 回收资源

  • 把自己给注销掉

内部表和外部表的区别
​ EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(Location),Hive创建内部表时,会将数据移动到数据仓库指定的路径下;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删出数据。

优化表

  • 分区表 partitioned table

    • 分区裁剪 减少全表扫描

    • 静态分区 动态分区插入

      • 分区字段值是如何决定的?

        • 用户sql中写死的 ------>静态分区

        • 通过查询结果决定的---->动态分区

    • 常见的分区字段

      • 时间: 年月日(day dayinfo daysrt dt dt_date)

      • 地域: 省市县

      • 类别: 学科、产品

  • 分桶表 Bucketed Table

    • join优化 提高join效率

      • 减少笛卡尔积

      • 使用map端join

高阶函数应用及案例

  • explode UDTF函数 输入一行输出多行

  • lateral view 侧视图

  • 行列转换问题

    • 多行转单列 collect_set 收集

    • 单列转多行 explode +侧视图

  • json处理问题

    • 内置json函数

    • jsonSerDe序列化类

  • url解析问题

    • parse_url_tuple

  • 开窗函数的应用

    • 累加求和问题

      • sum + row between 注意range between数字区间

    • 分组topN问题

      • row_number和它的兄弟们函数 去重

    • 连续登陆访问问题

      • lead lag函数

    • 几分之几的问题

      • ntile函数

通用调优

  • 数据文件格式 压缩问题

    • 列式存储 压缩的优缺点 ORC+snappy ORC的两种索引

  • 数据倾斜调优

    • 数据倾斜是什么意思? 分布式程序中 数据分配不平均

    • 数据倾斜造成原因?

      • 数据本身问题

      • 分的规则

      • 受业务影响 数据短期剧烈波动问题

    • 数据倾斜后果

    • 数据倾斜通用调优

      • 分步执行 将倾斜的数据拆散 分别处理 最终再合并

    • hive中哪些地方会数据倾斜呢?解决方案

      • group by 、count(distinct )

        • map预聚合 map.agg

        • 倾斜时负载均衡 skewindata

        • 自己手动将倾斜的数据拼接随机字符串 打散

      • join

        • 不走reduce端join 就不会倾斜 如何才能不走reduce端join

        • join之前先过滤 所谓小表

        • bucket map join SMB

        • skew join

  • join的调优

    • hive join语句底层MapReduce是如何执行的?

      • map端join---效率最高的

      • reduce端join

      • 优化的方向 如何让它走map端join

        • join之前先过滤 所谓小表

        • bucket map join SMB

  • task个数调整

    • maptask 直接去hdfs调整文件 小文件合并 大文件提高block size

    • reducetask 不设置 hive自己编译推算 用户可以自己设置 设置不一定生效 order by

  • 其他

    • 执行计划 explain

    • 并行机制

    • 推测执行机制

    • 严格模式

    • fetch本地抓取

    • mr本地模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值