• 200105框架总结复习


    一、Linux
    1、写出常用的5个高级命令
    top/ps iotop tail tar df -h find netstat crontab
    2、查看端口号、查看进程、查看磁盘使用情况 、配置定时器
    netstat ps -aux df -h crontab

    二、Shell
    1、shell的工具(知道就行 17 京东)
    awk、sed、sort、cut
    2、写过哪些shell脚本
    启动停止、分发
    #!/bin/bash

    case $1 in
    "start"){

    };;
    "stop"){

    };;
    esac
    3、如果进程我忘了进程号,不知道哪个是flume进程
    ps -ef |grep

    三、Hadoop
    1、入门
    1)常用端口有哪些?(HR )
    hadoop3.x 9870 8088 19888 8020 50010
    hadoop2.x 50070

    2)安装hadoop需要配置哪些文件?4组成
    core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml
    workers(slaves)

    2、HDFS
    1)读写流程(笔试题) 10亿

    2)默认块大小
    集群模式 128m
    本地模式 32m
    hadoop1.x 64m
    在业务开发是时候通常有:128m 256m一块的
    hive的文件块大小多大:256m

    3)小文件问题
    (1)危害
    namenode 内存 128g;
    一个文件块占用namenode 150字节
    128g*1024m*1024k*1024字节/150字节=9亿

    增加了切片数,maptask(1g)
    (2)解决办法
    a)har归档,自定义FileInputformat seq (k文件名称v内容)
    b)combineInputformat 减少切片个数,进而减少的是maptask
    c)开启JVM重用 60%
    开始
    执行 3s

    执行 3s
    结束
    3、MapReduce
    shuffle及优化
    map方法之后,reduce方法之前,混洗过程

    4、YARN
    1)工作机制

    2)调度器
    (1)FIFO、容量、公平调度器
    Apache默认调度器:容量
    CDH默认调度器:公平调度器
    (2)FIFO调度器特点:
    单队列,先进先出,在企业开发中没人使用
    (3)容量调度器:
    支持多队列,先进来的任务优先享有资源
    (4)公平调度器
    支持多队列,每个任务公平享有资源 并发度最高。
    (5)在生产环境如何选择掉调度器
    对并发度要求比较高,同时机器性能比较好,选择公平; 大公司
    如果并发度不高,机器性能比较差,选择容量: 中小公司

    (6)在生产环境下队列怎么创建?
    容量调度器默认只有一个default队列;
    按照框架名称:hive、spark、flink
    按照业务名称:登录、购物车、支付模块、部门1、部门2 (居多)
    好处:解耦、降低风险、可以实现任务降级(部门1》部门2》购物车)
    四、Flume 三件事
    1、组成( source channel sink 2个事务)
    1)taildir source
    (1)断点续传、多目录
    (2)在Apache flume1.7之后产生的;如果是CDH,1.6之后;
    (3)自定义source实现断点续传的功能(只要能自定义,有很多想象空间了)
    (4)taildir source挂了怎么办? 不会丢失、可能产生数据重复
    (5)对重复数据怎么处理?
    不处理;
    处理:(自身:自定义source实现事务,额外增加了运算量)
    在下一级处理:hive的数仓里面(dwd层,数据清洗ETL)
    spark Streaming里面处理
    去重的手段:group by (id) 开窗(id),只取窗口第一条
    (6)是否支持递归读取文件?
    不支持;自定义tail source(递归+读取) 消费kafka+上传hdfs
    2)channel
    (1)File Channel :基于磁盘、效率低、可靠性高

    (2)memoryChannel:基于内存、效率高、可靠性低

    (3)KafkaChannel:数据存储在Kafka里面,基于磁盘、效率高于memoryChannel+kafkasink,因为省了sink
    flume1.6时 topic + 内容; 无论true还是false都不起作用; bug
    flume1.7解决bug,被大家广泛使用;
    (4)在生产环境:如果下一级是kafka的话,优先选择KafkaChannel;
    如果不是kafka,如果更关心可靠性选择FileChannel;如果更关心性能,选择memoryChannel
    3)HDFS sink
    (1)控制小文件;
    时间(1-2小时)、大小(128m)、event个数(0禁止)
    (2)压缩
    开启压缩流;指定压缩编码方式(lzop/snappy)
    2、三个器
    1)拦截器
    (1)ETL(判断json的完整性 { }; 服务器时间(13 全数字)) 、
    (2)分类型(启动日志、事件日志) kafka(的topic要满足下一级所又消费者) 一张表一个topic
    商品列表、商品详情、商品点击
    广告
    点赞、评论、收藏
    后台活跃、通知
    故障
    启动日志
    (3)自定义拦截器步骤
    定义一个类 实现interceptor接口
    重写4个方法:初始化、关闭、单event、多event()
    创建一个静态内部类Builder
    (4)拦截器不要行不行?
    看需求

    2)选择器
    rep(默认) mul(选择性发往下一级通道)

    3)监控器
    ganglia 发现尝试提交的次数 远远大于最终提交成功次数; 说明flume性能不行;

    自身;提高自己的内存 4-6g flume_env.sh
    外援:增加flume台数 服务器配置(16g/32g 8T)
    3、优化
    1)File Channel 能多目录就多目录(要求在不同的磁盘),提高吞吐量
    2)控制小文件;
    时间(1-2小时)、大小(128m)、event个数(0禁止)
    3)监控器(百度、京东)
    自身;
    外援:
    五、Kafka 24件事
    1、基本信息
    1)Kafka组成:zk里面存储broker信息 消费者信息 唯独没有生产者信息。
    2)搭建多少台Kafka:2(生产者峰值生产速率 * 副本/100)+1 =3
    2 * ( 生产者峰值生产速率* 2/100)+1=3 =>生产者峰值生产速率<50m/s
    50m/s*60秒=3g
    3)副本数:2个居多、3个
    好处:提高可靠性;坏处:增加了网络IO
    4)压测(生产者峰值生产速率) 消费速率
    5)默认数据保存多久
    7天=》3天
    6)Kafka的磁盘预留多大空间
    100g数据*2个副本*3天/0.7=
    7)数据量计算
    100万日活 1个人100条日志 100万*100条=1亿条
    平均速度是的多少 1亿条/(24*3600s)=1150条/s
    每秒多少m 1条日志1k => 1m/s
    生产环境,你的数据量什么时候达到峰值?618 1111
    早上 中午、晚上 晚上8点以后 只要不超过50m/s就行 20-30m/s
    8)分区数设置多少?
    先设置一个分区;
    压测他的 峰值生产速率tp; 峰值消费速率tc
    用户有个期望的吞吐量 p
    p/min(tp,tc)=分区数 P 100m/s tp 20m/s tc 30m/s
    100/20 = 5个分区 (3-10个)
    消费者要有对应的CPU核数
    9)ISR 主要解决Leader挂了谁当老大? 在ISR队列里面都有机会当老大;
    旧版:延迟时间和延迟条数; 新版:延迟时间
    10)分区分配策略
    range(默认) 容易导致数据倾斜
    10个 3个分区
    0 1 2 3
    4 5 6
    7 8 9
    round robin 能够减少数据倾斜
    hash 随机打散,再采用轮询的方式;
    11)监控Kafka
    eagle Kafkamanager Kafkamontor
    面试官 说 他们的自己写的监控器?

    2、挂了 重新启动
    短时间内数据进入flume channel
    长时间,日志服务器保存数据30天

    3、丢数
    ack =
    0 :发送过去数据,就不管了; 可靠性最差,传输效率是最快的
    1 :发送过去数据,Leader应答; 可靠性一般;传输效率一般;
    -1 :发送过去数据,Leader+follower应答; 可靠性最高;传输效率最低

    在生产环境,通常不会用0; 选择1的最多;
    在绝大多数场景都是传输的普通日志,都是效率至上; 配置1
    金融行业,和钱有关的行业,要选-1

    4、重复数据了
    幂等性+事务+ ack=-1
    下一级去重(hive的dwd层;sparksteaming)group by和开窗

    幂等性的是(单分区、会话内不重;Kafka重启容易数据重复)


    5、积压了
    自身:增加分区,消费者CPU核数
    外援:增加消费者消费速度 f kafka f hdfs
    batchsize 1000条=>2000条-3000条

    6、优化
    num.network.threads 计算型任务线程数 CPU +1 =线程数
    num.io.threads IO密集型任务线程数 CPU*2

    7、其他
    1)Kafka 高效读写数据
    (1)分布式模式、分区
    (2)顺序读写600m/s 100m/s
    (3)零拷贝技术
    2)1条日志大小 2m 传输过程会发生什么问题?
    默认为单条最大值是1M

    3)Kafka里面的数据过期了后的处理策略
    (1)压缩
    (2)删除
    4)Kafka可以按照时间消费数据
    六、Zookeeper
    1、安装什么数台? 奇数
    2、选举机制:半数机制 pax(今日头条)
    3、常用命令:ls get create
    4、Zk不是越多越好也不是越少越好
    zk多好处:可靠性高; 坏处:通信延时加长了(选举)
    10台服务器安装多少台; 3台
    20台服务器安装多少台; 5台
    100台服务器安装多少台:11台

    九、项目
    1、我的数据在文件中有一部分;还有一部分在mysql里面;
    2、mysql里面有27张表=》你来做数仓
    (全量都导入、今天新增、数据变化)

    十、Hive
    1、hive的组成
    mr 基于磁盘 统计周、月、年,数据量比较大的场景 (7天)
    tez 基于内存 最快;数据量小的场景(OOM)
    spark 基于磁盘(Shuffle)+内存 绝大多数(主要处理当天的任务)
    6.5 +0.5
    2、Hive和MySQL、HBase数据库的区别? 笔试题
    Hive MySQL
    数据量大 大
    速度快 大数据场景快 小数据场景快
    查询 增删查改
    3、内部表和外部表区别?
    元数据和原始数据
    内部表删数据:元数据和原始数据
    外部表删数据:只删除元数据
    在企业开发时,什么时候创建内部表,什么时候创建外部表?
    绝大多数表都是外部表; 只有自己使用的临时表,才是内部表。
    4、4个By
    o 全局排序
    s 排序
    d 分区
    c 字段相同时,分区+排序
    在企业开发时怎么用? 京东2年 40T-50T内存 分区+排序

    5、函数
    1)系统函数
    日 周 月
    date_add date_sub
    next_day
    last_day date_format()
    get_json_object
    2)自定义函数
    (1)自定义UDF
    定义类,继承 UDF,重写evaluate方法

    (2)自定义UDTF
    定义类,继承G..UDTF ,重写里面三个方法(初始化、process、关闭)

    (3)在项目中用自定义函数干啥 了
    3)窗口函数
    rank
    over
    会实现topn 要求现场手写
    4)优化
    (1)mapjoin默认打开,不要关闭
    (2)行列过滤 join + where => where +join
    (3)创建分区表(防止计算数据的全部扫描)、分桶(对数据量比较大的数据,进行采样) 粮库
    (4)合理设置map个数和reduce个数
    128m数据-1个maptask-1g内存 切片:(max(0,min(块大小,Long的最大值)))

    reduce个数需要测试
    (5)处理小文件
    CombineHiveInputformat
    JVM 重用
    merge true (map only任务默认开启)
    merge true (map reduce任务需要设置开启)
    将小于16m的文件定义为小文件;
    将小文件合并到256m;
    (6)压缩;减少磁盘空间,减少网络传输
    (7)列式存储 查询速度快(parquet、ORC)、增加压缩数据的比例 100g-10g 5-6g
    用的最多的是orc,parquet主要配套spark使用
    id name age
    1 zhangsan 18
    2 lisi 19
    3 wangwu 20

    行 1 zhangsan 18 2 lisi 19 3 wangwu 20

    select name from user

    列 1 2 3 zhangsan lisi wangwu 18 19 20
    (8)开启map端combiner
    set hive.map.aggr=true;


    5)数据倾斜
    十一、Sqoop
    1、再用Sqoop过程中遇到过哪些问题怎么解决的?
    hive底层存储null时 采用的N
    mysql底层存储null时,采用null;
    2、Sqoop什么时间执行?执行多久
    每天00:30,40-50分钟
    3、离线指标常识
    第二天8点前,必须把报表指标计算完毕
    4、每天Sqoop里面的数量是多少?
    100万日活 日常消费品(手纸、面膜)=》
    10万订单 10条(加购物车、下单、支付、发货)
    10万*10条= 约等于1g
















  • 相关阅读:
    python(4):Python应用场景
    python(3):python的优缺点
    MySQL(17):用户登录实例
    MySQL(16):参数化、封装
    MySQL(15):与python交互的增删改查
    MySQL(14):与python交互的类型
    MySQL(13):索引
    c++ --程序编译
    c++ -- 顺序容器操作
    c++ --string操作
  • 原文地址:https://www.cnblogs.com/shan13936/p/13940116.html
Copyright © 2020-2023  润新知