大数据实训笔记Day03

MapReduce

组件

InputFormat - 输入格式

  1. InputFormat发生在Mapper之前,需要先读取数据,然后将读取出来的数据交给Mapper处理,所以InputFormat读取出来的数据是什么样子,那么Mapper就是什么样子
  2. 如果不指定,那么MapReduce默认使用的是TextInputFormat,TextInputFormat在读取数据的时候,默认是按行读取数据,读取出来的数据的键是数据的字节偏移量,值是读取的这一行数据
  3. 在MapReduce中,只有BZip2对应的压缩文件可以切片,其他的压缩文件都是不可切片的
  4. 自定义输入格式:需要定义一个类继承FileInputFormat,覆盖createRecordReader方法
  5. 多源输入:在MapReduce中允许指定多个不同的输入路径,同时处理多个文件。而这多个文件的格式可以不一样,可以利用Mapper来统一格式,最终交给Reducer来进行处理

OuputFormat - 输出格式

  1. OutputFormat发生在Reducer之后,将Reducer产生的数据写出到指定位置上。因此Reducer计算出来的数据是什么格式,那么OutputFormat获取到的数据就是什么格式
  2. 如果不指定,那么MapReduce默认使用的是TextOutputFormat。TextOutputFormat在写出数据的时候,默认键值之间使用制表符\t来间隔
  3. 自定义输出格式:需要定义一个类继承FileOutputFormat,覆盖getRecordWriter方法

其他

join

  1. 如果需要同时处理多个文件,并且多个文件之间相互关联,那么可以确定一个主处理文件,然后将其他文件放到缓存中,等需要使用的时候,再从缓存中来出来文件来处理 - 这个过程称之为MapReduce的join操作
  2. 案例:获取每一天卖了多少钱(文件:order.txt和product.txt)

了解:MapReduce的Shuffle

Flume

简介

概述

  1. Flume是Cloudera公司开发后来贡献给了Apache的一套用于进行日志的收集(collecting)、汇聚(aggregating)和传输(moving)的机制 - 在实际开发中,有超过70%的数据来源于日志 - 日志构成了大数据的基石
  2. 版本
    1. Flume-og:Flume0.9及以前的版本,配置结构复杂,对分布式支持不好
    2. Flume-ng:Flume1.X版本,简化了配置结构,增加了线程安全的特性

基本概念

  1. Event

    1. 在Flume中,将收集到的每一条日志封装成了一个Event对象 - 一个Event对应的就是一条日志

    2. Event本质上是一个json串,固定的包含了两个部分:headers和body。也就意味着Flume会将收集到的日志封装成json格式:

      {"headers":{},"body":""}
      
  2. Agent:是Flume流动模型的基本组成结构,固定的包含了3部分:

    1. Source:从数据源来采集数据 - collecting
    2. Channel:临时存储数据 - aggregating
    3. Sink:将数据写到目的地 - moving

流动模型

  1. 单级流动
    单级流动

  2. 多级流动
    多级流动

  3. 扇入流动/汇聚

扇入流动

  1. 扇出流动

    扇出流动

  2. 将上述流动模型根据需求来进行组合,组合出来就是复杂流动

安装

步骤

  1. 进入opt目录

    cd /opt
    
  2. 上传Flume的安装包

    rz
    # 之后选择Flume的安装包上传
    
  3. 解压

    tar -xvf apache-flume-1.9.0-bin.tar.gz
    
  4. 重命名

    mv apache-flume-1.9.0-bin flume-1.9.0
    
  5. 配置环境变量

    vim /etc/profile.d/flumehome.sh
    # 在文件中添加
    export FLUME_HOME=/opt/flume-1.9.0
    export PATH=$PATH:$FLUME_HOME/bin
    # 保存退出,重新生效
    source /etc/profile.d/flumehome.sh
    
  6. 查看版本

    flume-ng version
    
  7. 进入Flume安装目录的子目录lib下

    cd flume-1.9.0/lib
    
  8. 删除冲突的jar包

    rm -rf guava-11.0.2.jar
    
  9. 回到Flume安装目录下,创建数据目录

    cd ..
    mkdir data
    cd data
    

案例

  1. 编辑文件

    vim basic.conf
    
  2. 添加数据

    # 给Agent起名
    # 给Source起名
    a1.sources = s1 
    # 给Channel起名
    a1.channels = c1
    # 给Sink起名
    a1.sinks = k1
    
    # 配置Source
    a1.sources.s1.type = netcat
    a1.sources.s1.bind = 0.0.0.0
    a1.sources.s1.port = 8090
    
    # 配置Channel
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 10000
    a1.channels.c1.transactionCapacity = 1000
    
    # 配置Sink
    a1.sinks.k1.type = logger
    
    # 将Source和Channel绑定
    a1.sources.s1.channels = c1
    # 将Sink和Channel绑定
    a1.sinks.k1.channel = c1
    
  3. 启动Flume

    flume-ng agent -n a1 -c $FLUME_HOME/conf -f basic.conf -Dflume.root.logger=INFO,console
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值