zoukankan      html  css  js  c++  java
  • 2020寒假生活学习日记(十三)

    林子雨实验六

    Spark Streaming 编程初级实践
    一、实验目的
    (1)通过实验学习日志采集工具 Flume 的安装和使用方法;
    (2)掌握采用 Flume 作为 Spark Streaming 数据源的编程方法。
    二、实验平台
    操作系统: Ubuntu
    Spark 版本:3.0.0-preview2
    Flume 版本:1.7.0
    三、实验内容和要求
    安装下载Flume
    下载地址 https://pan.baidu.com/s/1NwfiZ6WGAkeKMZKW53ZF-w 提取码 t20q
    通过Filezilla上传到ubuntu /home/hadoop/下载。
    (1)解压安装包
    sudo tar -zxvf /home/hadoop/下载/apache-flume-1.7.0-bin.tar.gz -C /usr/local cd /usr/local sudo mv ./apache-flume-1.7.0-bin ./flume sudo chown -R hadoop:hadoop ./flume

     (2)配置环境变量

    sudo vim ~/.bashrc
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;
    export FLUME_HOME=/usr/local/flume                   
    export FLUME_CONF_DIR=$FLUME_HOME/conf
    export PATH=$PATH:$FLUME_HOME/bin
    

    注意, 上面的JAVA_HOME,如果以前已经在.bashrc文件中设置过,就不要重复添加了,使用以前的设置即可。

     接下来使环境变量生效:

     source ~/.bashrc
    

    修改 flume-env.sh 配置文件:

    cd /usr/local/flume/conf 
    sudo cp ./flume-env.sh.template ./flume-env.sh
    sudo vim ./flume-env.sh

    3.查看flume版本信息

    cd /usr/local/flume
        ./bin/flume-ng version 
    

      注意:如果系统里安装了hbase,会出现错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty。如果没有安装hbase,这一步可以略过。

     cd  /usr/local/hbase/conf
      sudo vim hbase-env.sh
     #1、将hbase的hbase.env.sh的这一行配置注释掉,即在export前加一个#
      #export HBASE_CLASSPATH=/home/hadoop/hbase/conf
      #2、或者将HBASE_CLASSPATH改为JAVA_CLASSPATH,配置如下
      export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      #笔者用的是第一种方法
    

    安装成功:

    使用Avro数据源测试Flume

    Avro 可以发送一个给定的文件给 Flume,Avro 源使用 AVRO RPC 机制。请对 Flume 的的相关配置文件进行设置,从而可以实现如下功能:在一个终端中新建一个文件helloworld.txt(里面包含一行文本“Hello World”),在另外一个终端中启动 Flume 以后,可以把 helloworld.txt 中的文本内容显示出来。

    创建agent配置文件

    cd /usr/local/flume
      sudo vim ./conf/avro.conf
    

    然后,我们在avro.conf写入以下内容

     a1.sources = r1
      a1.sinks = k1
      a1.channels = c1
     
    # Describe/configure the source
      a1.sources.r1.type = avro
      a1.sources.r1.channels = c1
      a1.sources.r1.bind = 0.0.0.0
      a1.sources.r1.port = 4141
        #注意这个端口名,在后面的教程中会用得到
     
    # Describe the sink
      a1.sinks.k1.type = logger
     
    # Use a channel which buffers events in memory
      a1.channels.c1.type = memory
      a1.channels.c1.capacity = 1000
      a1.channels.c1.transactionCapacity = 100
     
    # Bind the source and sink to the channel
      a1.sources.r1.channels = c1
      a1.sinks.k1.channel = c1
    

     启动flume agent a1

    /usr/local/flume/bin/flume-ng agent -c . -f /usr/local/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console
    

    创建指定文件
    先打开另外一个终端,在/usr/local/flume下写入一个文件log.00,内容为hello,world:

    我们再打开另外一个终端,执行:

    cd /usr/local/flume
      bin/flume-ng avro-client --conf conf -H localhost -p 4141 -F /usr/local/flume/log.00 #4141是avro.conf文件里的端口名
    

     

    3. 使用 netcat 数据源测试 Flume
    请对 Flume 的相关配置文件进行设置,从而可以实现如下功能:在一个 Linux 终端(这
    里称为“Flume 终端”)中,启动 Flume,在另一个终端(这里称为“Telnet 终端”)中,
    输入命令“telnet localhost 44444”,然后,在 Telnet 终端中输入任何字符,让这些字符可以
    顺利地在 Flume 终端中显示出来。

    创建agent配置文件

    cd /usr/local/flume
      sudo vim ./conf/example.conf

    在example.conf里写入以下内容:

    #example.conf: A single-node Flume configuration  
     
        # Name the components on this agent  
        a1.sources = r1  
        a1.sinks = k1  
        a1.channels = c1  
     
        # Describe/configure the source  
        a1.sources.r1.type = netcat  
        a1.sources.r1.bind = localhost  
        a1.sources.r1.port = 44444 
            #同上,记住该端口名
     
        # Describe the sink  
        a1.sinks.k1.type = logger  
     
        # Use a channel which buffers events in memory  
        a1.channels.c1.type = memory  
        a1.channels.c1.capacity = 1000  
        a1.channels.c1.transactionCapacity = 100  
     
        # Bind the source and sink to the channel  
        a1.sources.r1.channels = c1  
        a1.sinks.k1.channel = c1  
    

    启动flume agent (即打开日志控制台):

     /usr/local/flume/bin/flume-ng agent --conf ./conf --conf-file ./conf/example.conf --name a1 -Dflume.root.logger=INFO,console
    

    再打开一个终端,输入命令:telnet localhost 44444

    telnet localhost 44444 
    

     然后我们可以在终端下输入任何字符,第一个终端的日志控制台也会有相应的显示,如我们输入”hello,world”,得出

    第一个终端的日志控制台显示:

     

     netcatsource运行成功!
    这里补充一点,flume只能传递英文和字符,不能用中文。


     
  • 相关阅读:
    Kafka日志段源码分析
    Kafka日志结构概览
    LDAP统一身份认证解读及实践
    Keycloak集成三方身份提供者的注销流程
    Keycloak会话管理-refreshToken
    Cas校验INVALID_TICKET-not recognized
    如何获取Docker容器的root权限
    OIDC-code to token
    Newrelic集成wildfly报NoClassDefFoundError
    Cookie深入详解
  • 原文地址:https://www.cnblogs.com/jccjcc/p/12298639.html
Copyright © 2011-2022 走看看