Flume基础(十四):基础面试题

1、组成source channel sink 事务(put/take)

     1)taildir source 

  (1)断点续传、多目录
  (2)哪个flume版本产生的?Apache1.7 cdh1.6
  (3)没有断点续传功能时怎么做的?
      自定义
  (4)taildir挂了怎么办?
    不会丢数:断点续传 ,但可能重复数据:
  (5)怎么处理重复数据?
    不处理:生产环境通常不处理
    处理
       自身:在taildirsource里面增加自定义事务
       找兄弟:下一级处理(hive dwd sparkstreaming flink布隆)
           去重手段(groupby、开窗取窗口第一条、redis)
  (6)taildir source 是否支持递归遍历文件夹读取文件?
    不支持。 自定义 递归遍历文件夹 +读取文件

 2)file channel /memory channel/kafka channel
  (1)file channel
    数据存储于磁盘,优势:可靠性高;劣势:传输速度低
    默认容量:100万event
  (2)memory channel
    数据存储于内存,优势:传输速度快;劣势:可靠性差
    默认容量:100个event
  (3)kafka channel
    数据存储于Kafka,基于磁盘;
    优势:可靠性高;
    传输速度快  kafka channel 》memory channel+kafka sink 原因省去了sink阶段
  (4)kafka channel哪个版本产生的?
    flume1.6 版本产生=》并没有火;因为有bug
    topic-start 数据内容
    topic-event 数据内容 ture 和false 很遗憾,都不起作用。
    增加了额外清洗的工作量。
    flume1.7解决了这个问题,开始火了。
  (5)生产环境如何选择
    如果下一级是kafka,优先选择kafka channel
    如果下一级不是:

            如果是金融、对钱要求准确的公司,选择file channel
          如果就是普通的日志,通常可以选择memory channel
    每天丢几百万数据 pb级 亿万富翁,掉1块钱会捡?

 3)HDFS sink(优化配置)

             小文件:

                  文件大小 128m

                  文件时间(1小时-2小时)

                  event个数(0禁止)

2、三个器(拦截器、选择器、监控器)

  1)拦截器
    (1)ETL  拦截器  判断json的完整性 { }

      数据清洗:轻度清洗{} =》保证传输效率
      服务器时间:13位 必须全部是数字

               (2) 事件拦截器 event start

          start 启动

                         event (商品点击、商品列表、商品详情、、
        广告;

                             故障
        点赞、评论、收藏

                             后台活跃、通知

        )
        一个表一个topic,一定能满足下一级所有消费者;
        可以做适当的轻度聚合
    (3)自定义拦截器的步骤
        定义一类,实现interceptor接口,重写里面4个方法
            (初始化、关闭、单event、多event,创建一个静态内部类Builder)
        打包=》上传到flume的lib包下=》在配置文件中管理拦截器
    (4)拦截器可以不用吗?
        可以器可以不用;需要在下一级hive的dwd层和sparksteaming里面处理
        优势:只处理一次,轻度处理,
        劣势:影响性能,不适合做实时推荐这种对实时要求比较高的场景

  2)选择器

    rep(默认,发往下一级所有通道)
    m(选择性发往对应通道)
    ReplicatingChannelSelector
    MultiPlexingChannelSelector
    本次项目用m,根据flume头发往对应的topic
    start-topic event-topic

  3)监控器
    Ganglia
    尝试提交的次数远远大于最终成功的次数。
    自身:增加内存flume-env.sh 4-6g
    找朋友:先增加服务器台数,后增加flume服务器,通道打通

    搞活动 618 =》增加服务器=》用完在退出
    日志服务器配置(阿里云):8-16g内存、磁盘8T

3、优化

  1)file channel  能够多配置磁盘就多配置磁盘,  提高吞吐量
  2)HDFS sink 小文件
    (1)时间(1小时-2小时) or 大小128m、event个数(0禁止)
  3)监控器
    调整内存
    自身 提高自己内存
    找朋友 增加flume台数

4、flume挂了怎么办?

     1) 如果是memorychannel 有可能丢数据 

     2) 如果是taildirsource 不会丢数据,但是有可能重复数据

     

 

Flume基础(十四):基础面试题

上一篇:简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ


下一篇:transformCSS.js