java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起

Flume

  • 一、Flume基本概念
    • 1.Flume是什么?从哪来、来干啥?
    • 2.Flume中的角色:
    • 3.Flume与kafka的区别:
  • 二、Flume实操
  • 巨人的肩膀


一、Flume基本概念

1.Flume是什么?从哪来、来干啥?

  • 为啥要用这个货,可能得先看看这个–做项目经验之~高速项目大数据及机器学习算法方面的思路总结
  • Flume算是一个日志收集工具,可以从不同的源(比如不同的节点,如Nginx服务器)中收集到数据,用来从sources源把数据发送到一个物理机上【物理源上】
    • 官方文档:https://flume.apache.org/
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第1张图片
      • FlumeUserGuide:https://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html

2.Flume中的角色:

  • Flume的角色【或者说agent中的角色】
    • source源:https://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html#flume-sources
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第2张图片
      • Exec Source
        java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第3张图片
      • HTTP source
        • 咱们玩java的可以用java代码,通过发送HTTP请求直接向flume中发送数据
      • Kafka:
    • Channel:https://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html#flume-channels。有时候从source中向sink中发数据时由于网络不可靠会存在数据不一致或者发送接收失败等问题,所以搞一个channel当作缓冲区域,暂存一下留一点叉腰的思考处理时间
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第4张图片
      • JDBC Channel:往内存中放有风险,所以可以通过JDBC放进DB中,但是效率太低没人用
      • Kafka Channel:
    • Sink:https://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html#flume-sinks
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第5张图片
      • HDFS Sink:
        java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第6张图片
        • 官网给了一个例子,把logger改为HDFS就行,然后启动
          java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第7张图片
          • 启动flume
            在这里插入图片描述
          • 往HDFS中写数据,你要数据全放到一个HFDFS文件夹中,到时候就得一遍又一遍遍历某个文件夹,肯定按照一个粒度进行分隔,比如今天的数据放到一个目录中,明天的数据放到一个目录中,按天分开,这样就不用遍历整个文件夹,flume帮咱们实现了这个功能
            java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第8张图片
      • Kafka Sink

3.Flume与kafka的区别:

  • 两个都可以从不同的源中收集数据,但是kafka的数据是直接写磁盘的,速度很快而且数据不会丢,此外kafka集群能承担的并发量还特别高。flume要持久化的话【不管你是写进磁盘中还是写进文件中还是其他什么,你flume反正很慢】
    • kafka为什么比flume快:
      • 因为kafka用到了顺序读写,所以kafka很快
      • 因为kafka用到了零拷贝,所以kafka很快
    • 另外,kafka可以重复消费,多个线程可以把某个东西重复读,而flume中sink从channel中拿到source向channel中塞的数据后,拿一个少一个,不能重复消费。也因为这kafka可以做消息队列以及存储引擎【存磁盘速度快呀】,flume只能做日志收集工具【从不同数据源拿到数据转存到不同地方】
    • kafka和flume一般整合使用,流式计算中必然要用kafka

二、Flume实操

  • Flume实操步骤:
    • 解压压缩包,/etc/profile中修改环境变量
      在这里插入图片描述
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第9张图片
      • fl验证一下,看有没有flume-og或者flume-ng。flume-ng version如果出现版本号,证明flume配置好了
    • 在配置文件中把jdk的配置路径放出来,一般java写的中间件插件啥的基本上都要到配置文件中把jdk的路径放出来
      在这里插入图片描述
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第10张图片
      • cat flume-conf.properties.template
  • 官网给的案例:
    • 单台flume:https://flume.apache.org/releases/content/1.6.0/FlumeUserGuide.html#a-simple-example
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第11张图片
      • 启动flume:bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console
        在这里插入图片描述
        java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第12张图片
      • 安装telnet并连接
        java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第13张图片
      • 退出:
        在这里插入图片描述
    • 公司中一般是多台flume组成集群模式:
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第14张图片
      • 每个agent相当于一个flume,都得有自己的配置文件
      • 注意bind的配置
      • 这种模式存在单点故障问题:解决方案有LVS【keepalive】和zookeeper【flume中有支持HA(高可用)的模式,flume中包含了failover这个组件,这个需要配置】
        • zookeeper,去公平的抢占锁【子节点】资源,谁先抢到谁就是主,剩下的一台就是备份,主挂掉之后备份顶上【主修好之后主就变成备了,原先顶上的备就成主了】,zookeeper有选举机制以及分布式锁等可以保证安全性
        • keepalive相当于我选择了两台对应的服务器集群,其中一台权重高一台权重低,一般权重高的承载服务,权重高的挂了权重低的切换服务顶上,但是此时权重高的修好了后会把请求等服务抢到自己手里
    • 除了上面集群那种方式,一个flume可以有多个输出:可以从一个源读数据,然后把数据分发到不同的源上
      java基础巩固-宇宙第一AiYWM:为了维持生计,大数据之Flume【Flume的角色、Flume的不同部署方式】~整起_第15张图片

巨人的肩膀

Flume官方文档
Hadoop权威指南

你可能感兴趣的:(人外有人,天外有天,java外有啥呢?,大数据,java,flume)