美文网首页Hadoop
135.如何进行离线计算-1

135.如何进行离线计算-1

作者: 大勇任卷舒 | 来源:发表于2022-11-16 09:14 被阅读0次
    • 应用场景
      • 用户流失预警系统
      • 基于用户购买的挽回系统
      • 用户特征和规则提取系统
      • 数据分析系统
      • 用户画像系统
    • 流程
      • 数据采集
      • 数据预处理
      • 数据建模
      • ETL
      • 数据导出
      • 工作流调度

    135.1 数据采集

    • Flume 收集服务器日志到hdfs
    type=taildir taildir #可以监控一个目录, 也可以用一个正则表达式匹配文件名进行实时收集
    taildir=spooldir + exec + #支持断点续传
    agent1.sources = source1
    agent1.sinks = sink1
    agent1.channels = channel1
    
    agent1.sources.source1.type = TAILDIR 
    agent1.sources.source1.positionFile = /var/log/flume/taildir_position.json
    agent1.sources.source1.filegroups = f1 f2
    
    # 监控文件内容的改变
    
    agent1.sources.source1.filegroups.f1 = /usr/local/nginx/logs/example.log
    
    # 监控生成的文件
    
    agent1.sources.source1.filegroups.f1 = /usr/local/nginx/logs/.*log.*
    
    agent1.sources.source1.interceptors = i1
    agent1.sources.source1.interceptors.i1.type = host
    agent1.sources.source1.interceptors.i1.hostHeader = hostname
    
    # 配置sink组件为hdfs
    
    agent1.sinks.sink1.type = hdfs
    agent1.sinks.sink1.hdfs.path=
    hdfs://node-1:9000/weblog/flume-collection/%y-%m-%d/%H-%M_%hostname
    
    # 指定文件名前缀
    
    agent1.sinks.sink1.hdfs.filePrefix = access_log
    
    # 指定每批下沉数据的记录条数
    
    agent1.sinks.sink1.hdfs.batchSize= 100
    agent1.sinks.sink1.hdfs.fileType = DataStream
    agent1.sinks.sink1.hdfs.writeFormat =Text
    
    # 指定下沉文件按1G大小滚动
    
    agent1.sinks.sink1.hdfs.rollSize = 1024*1024*1024
    
    # 指定下沉文件按1000000条数滚动
    
    agent1.sinks.sink1.hdfs.rollCount = 1000000
    
    # 指定下沉文件按30分钟滚动
    
    agent1.sinks.sink1.hdfs.rollInterval = 30
    
    # agent1.sinks.sink1.hdfs.round = true
    
    # agent1.sinks.sink1.hdfs.roundValue = 10
    
    # agent1.sinks.sink1.hdfs.roundUnit = minute
    
    agent1.sinks.sink1.hdfs.useLocalTimeStamp = true
    
    # 使用memory类型channel
    
    agent1.channels.channel1.type = memory
    agent1.channels.channel1.capacity = 500000
    agent1.channels.channel1.transactionCapacity = 600
    
    # Bind the source and sink to the channel
    
    agent1.sources.source1.channels = channel1
    agent1.sinks.sink1.channel = channel1
    

    135.2 数据预处理

    • 数据预处理编程技巧
      • 对于本次分析无利用的数据 通常采用逻辑删除 建立标记位 通过01或者true false表示数据是否有效
      • 对于最后一个字段不固定的情况 可以采用动态拼接的方式
      • 静态资源过滤
        • js css img (静态数据) 只关心真正请求页面的(index.html)
        • data(动态数据)
      • 在mr中,如果涉及小且频繁使用的数据,如何优化?
        • 每次都从数据库查询 效率极低
        • 可以通过数据结构保存在内存中 方便查询 一般在setup方法中进行初始化操作
      • 关于mr程序输出文件名
        • part-r-00000 表示是reducetask的输出
        • part-m-00000 表示是maptask的输出

    大数据视频推荐:
    网易云课堂
    CSDN
    人工智能算法竞赛实战
    AIops智能运维机器学习算法实战
    ELK7 stack开发运维实战
    PySpark机器学习从入门到精通
    AIOps智能运维实战
    腾讯课堂
    大数据语音推荐:
    ELK7 stack开发运维
    企业级大数据技术应用
    大数据机器学习案例之推荐系统
    自然语言处理
    大数据基础
    人工智能:深度学习入门到精通

    相关文章

      网友评论

        本文标题:135.如何进行离线计算-1

        本文链接:https://www.haomeiwen.com/subject/scldxdtx.html