Flume】【大数据基础】flume配置文件怎么设置

2021-01-22 17:29发布

8条回答
来自幽府的客人
2楼 · 2021-01-24 22:48

一、什么是flume

Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

二、flume特点

flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

flume的可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。


无需指教
3楼 · 2021-01-25 08:38

概述

  • 本篇文章是根据Flume官网对Flume组件(Source,Channel,Sink)的常用配置参数做一个主要介绍,如有表达意思错误希望不吝指出。

Sources

  • Flume中常用的Source有NetCat,Avro,Exec,Spooling Directory,Taildir,也可以根据业务场景的需要自定义Source,具体介绍如下。

NetCat Source

  • NetCat Source可以使用TCP和UDP两种协议方式,使用方法基本相同,通过监听指定的IP和端口来传输数据,它会将监听到的每一行数据转化成一个Event写入到Channel中。(必须参数以@标示,下类同)

    Property Name   Default       Description
    channels@          –     
    type@              –          类型指定为:netcat
    bind@              –          绑定机器名或IP地址
    port@              –          端口号
    max-line-length   512         一行的最大字节数
    ack-every-event   true        对成功接受的Event返回OK
    selector.type   replicating   选择器类型replicating or multiplexing
    selector.*                    选择器相关参数
    interceptors       –          拦截器列表,多个以空格分隔
    interceptors.*                拦截器相关参数
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

Avro Source

  • 不同主机上的Agent通过网络传输数据可使用的Source,一般是接受Avro client的数据,或和是上一级Agent的Avro Sink成对存在。

    Property Name              Default          Description
    channels@                    –   
    type@                        –              类型指定为:avro
    bind@                        –              监听的主机名或IP地址
    port@                        –              端口号
    threads                      –              传输可使用的最大线程数
    selector.type        
    selector.*       
    interceptors                 –              拦截器列表
    interceptors.*       
    compression-type            none            可设置为“none” 或 “deflate”. 压缩类型需要和AvroSource匹配
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

Exec Source

  • Exec source通过执行给定的Unix命令的传输结果数据,如,cat,tail -F等,实时性比较高,但是一旦Agent进程出现问题,可能会导致数据的丢失。

    Property Name            Default                 Description
    channels@                   –    
    type@                       –                    类型指定为:exec
    command@                    –                    需要去执行的命令
    shell                       –                    运行命令的shell脚本文件
    restartThrottle           10000                  尝试重启的超时时间
    restart                   false                  如果命令执行失败,是否重启
    logStdErr                 false                  是否记录错误日志
    batchSize                  20                    批次写入channel的最大日志数量
    batchTimeout              3000                   批次写入数据的最大等待时间(毫秒)
    selector.type          replicating               选择器类型replicating or multiplexing
    selector.*                                       选择器其他参数
    interceptors                –                    拦截器列表,多个空格分隔
    interceptors.*
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    • 14

Spooling Directory Source

  • 通过监控一个文件夹将新增文件内容转换成Event传输数据,特点是不会丢失数据,使用Spooling Directory Source需要注意的两点是,1)不能对被监控的文件夹下的新增的文件做出任何更改,2)新增到监控文件夹的文件名称必须是唯一的。由于是对整个新增文件的监控,Spooling Directory Source的实时性相对较低,不过可以采用对文件高粒度分割达到近似实时。

    Property Name                 Default             Description
    channels@                        –   
    type@                            –                类型指定:spooldir.
    spoolDir@                        –                被监控的文件夹目录
    fileSuffix                  .COMPLETED            完成数据传输的文件后缀标志
    deletePolicy                   never              删除已经完成数据传输的文件时间:never or immediate
    fileHeader                     false              是否在header中添加文件的完整路径信息
    fileHeaderKey                   file              如果header中添加文件的完整路径信息时key的名称
    basenameHeader                 false              是否在header中添加文件的基本名称信息
    basenameHeaderKey             basename            如果header中添加文件的基本名称信息时key的名称
    includePattern                 ^.*$               使用正则来匹配新增文件需要被传输数据的文件
    ignorePattern                   ^$                使用正则来忽略新增的文件
    trackerDir                  .flumespool           存储元数据信息目录
    consumeOrder                  oldest              文件消费顺序:oldest, youngest and random.
    maxBackoff                     4000               如果channel容量不足,尝试写入的超时时间,如果仍然不能写入,则会抛出ChannelException
    batchSize                      100                批次处理粒度
    inputCharset                  UTF-8               输入码表格式
    decodeErrorPolicy              FAIL               遇到不可解码字符后的处理方式:FAIL,REPLACE,IGNORE
    selector.type               replicating           选择器类型:replicating or multiplexing
    selector.*                                        选择器其他参数
    interceptors                    –                 拦截器列表,空格分隔
    interceptors.*
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    • 14

    • 15

    • 16

    • 17

    • 18

    • 19

    • 20

    • 21

    • 22

Taildir Source

  • 可以实时的监控指定一个或多个文件中的新增内容,由于该方式将数据的偏移量保存在一个指定的json文件中,即使在Agent挂掉或被kill也不会有数据的丢失,需要注意的是,该Source不能在Windows上使用。

    Property Name                      Default            Description
    channels@                             –  
    type@                                 –               指定类型:TAILDIR.
    filegroups@                           –               文件组的名称,多个空格分隔
    filegroups.@           –               被监控文件的绝对路径
    positionFile         ~/.flume/taildir_position.json      存储数据偏移量路径
    headers..   –               Header key的名称
    byteOffsetHeader                    false             是否添加字节偏移量到key为‘byteoffset’值中
    skipToEnd                           false             当偏移量不能写入到文件时是否跳到文件结尾
    idleTimeout                         120000            关闭没有新增内容的文件超时时间(毫秒)
    writePosInterval                    3000              在positionfile 写入每一个文件lastposition的时间间隔
    batchSize                            100              批次处理行数
    fileHeader                          false             是否添加header存储文件绝对路径
    fileHeaderKey                       file              fileHeader启用时,使用的key
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    • 14

Channels

  • 官网提供的Channel有多种类型可供选择,这里介绍Memory Channel和File Channel。

Memory Channel

  • Memory Channel是使用内存来存储Event,使用内存的意味着数据传输速率会很快,但是当Agent挂掉后,存储在Channel中的数据将会丢失。

    Property Name                 Default                Description
    type@                            –                   类型指定为:memory
    capacity                        100                  存储在channel中的最大容量
    transactionCapacity             100                  从一个source中去或者给一个sink,每个事务中最大的事件数
    keep-alive                       3                   对于添加或者删除一个事件的超时的秒钟
    byteCapacityBufferPercentage    20                   定义缓存百分比
    byteCapacity              see description            Channel中允许存储的最大字节总数
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

File Channel

  • File Channel使用磁盘来存储Event,速率相对于Memory Channel较慢,但数据不会丢失。

    Property Name            Default                  Description    
    type@                      –                      类型指定:file.
    checkpointDir   ~/.flume/file-channel/checkpoint  checkpoint目录
    useDualCheckpoints       false                    备份checkpoint,为True,backupCheckpointDir必须设置
    backupCheckpointDir        –                      备份checkpoint目录
    dataDirs    ~/.flume/file-channel/data           数据存储所在的目录设置
    transactionCapacity      10000                    Event存储最大值
    checkpointInterval       30000                    checkpoint间隔时间
    maxFileSize            2146435071                 单一日志最大设置字节数
    minimumRequiredSpace    524288000                 最小的请求闲置空间(以字节为单位)
    capacity                 1000000                  Channel最大容量
    keep-alive                 3                      一个存放操作的等待时间值(秒)
    use-log-replay-v1         false                   Expert: 使用老的回复逻辑
    use-fast-replay           false                   Expert: 回复不需要队列
    checkpointOnClose         true
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    • 14

    • 15

Sinks

  • Flume常用Sinks有Log Sink,HDFS Sink,Avro Sink,Kafka Sink,当然也可以自定义Sink。

Logger Sink

  • Logger Sink以INFO 级别的日志记录到log日志中,这种方式通常用于测试。

    Property Name          Default           Description
    channel@                 –   
    type@                   –               类型指定:logger
    maxBytesToLog           16               能够记录的最大Event Body字节数
    • 1

    • 2

    • 3

    • 4

HDFS Sink

  • Sink数据到HDFS,目前支持text 和 sequence files两种文件格式,支持压缩,并可以对数据进行分区,分桶存储。

    Name                   Default               Description
    channel@                  –  
    type@                     –                  指定类型:hdfs
    hdfs.path@                –                  HDFS的路径,eg hdfs://namenode/flume/webdata/
    hdfs.filePrefix        FlumeData             保存数据文件的前缀名
    hdfs.fileSuffix           –                  保存数据文件的后缀名
    hdfs.inUsePrefix          –                  临时写入的文件前缀名
    hdfs.inUseSuffix         .tmp                临时写入的文件后缀名
    hdfs.rollInterval         30                 间隔多长将临时文件滚动成最终目标文件,单位:秒,
                                                 如果设置成0,则表示不根据时间来滚动文件
    hdfs.rollSize            1024                当临时文件达到多少(单位:bytes)时,滚动成目标文件,
                                                 如果设置成0,则表示不根据临时文件大小来滚动文件
    hdfs.rollCount            10                 当 events 数据达到该数量时候,将临时文件滚动成目标文件,
                                                 如果设置成0,则表示不根据events数据来滚动文件
    hdfs.idleTimeout          0                  当目前被打开的临时文件在该参数指定的时间(秒)内,
                                                 没有任何数据写入,则将该临时文件关闭并重命名成目标文件
    hdfs.batchSize           100                 每个批次刷新到 HDFS 上的 events 数量
    hdfs.codeC                –                  文件压缩格式,包括:gzip, bzip2, lzo, lzop, snappy
    hdfs.fileType         SequenceFile           文件格式,包括:SequenceFile, DataStream,CompressedStre,
                                                 当使用DataStream时候,文件不会被压缩,不需要设置hdfs.codeC;
                                                 当使用CompressedStream时候,必须设置一个正确的hdfs.codeC值;
    hdfs.maxOpenFiles        5000                最大允许打开的HDFS文件数,当打开的文件数达到该值,
                                                 最早打开的文件将会被关闭
    hdfs.minBlockReplicas     –                  HDFS副本数,写入 HDFS 文件块的最小副本数。
                                                 该参数会影响文件的滚动配置,一般将该参数配置成1,才可以按照配置正确滚动文件
    hdfs.writeFormat        Writable             写 sequence 文件的格式。包含:Text, Writable(默认)
    hdfs.callTimeout         10000               执行HDFS操作的超时时间(单位:毫秒)
    hdfs.threadsPoolSize      10                 hdfs sink 启动的操作HDFS的线程数
    hdfs.rollTimerPoolSize    1                  hdfs sink 启动的根据时间滚动文件的线程数
    hdfs.kerberosPrincipal    –                  HDFS安全认证kerberos配置
    hdfs.kerberosKeytab       –                  HDFS安全认证kerberos配置
    hdfs.proxyUser                               代理用户
    hdfs.round              false                是否启用时间上的”舍弃”
    hdfs.roundValue           1                  时间上进行“舍弃”的值
    hdfs.roundUnit          second               时间上进行”舍弃”的单位,包含:second,minute,hour
    hdfs.timeZone         Local Time             时区。
    hdfs.useLocalTimeStamp  false                是否使用当地时间
    hdfs.closeTries 0       Number               hdfs sink 关闭文件的尝试次数;
                                                 如果设置为1,当一次关闭文件失败后,hdfs sink将不会再次尝试关闭文件,
                                                 这个未关闭的文件将会一直留在那,并且是打开状态;
                                                 设置为0,当一次关闭失败后,hdfs sink会继续尝试下一次关闭,直到成功
    hdfs.retryInterval        180                hdfs sink 尝试关闭文件的时间间隔,
                                                 如果设置为0,表示不尝试,相当于于将hdfs.closeTries设置成1
    serializer               TEXT                序列化类型
    serializer.*
    • 1

    • 2

    • 3

    • 4

    • 5

    • 6

    • 7

    • 8

    • 9

    • 10

    • 11

    • 12

    • 13

    • 14

    • 15

    • 16

    • 17

    • 18

    • 19

    • 20

    • 21

    • 22

    • 23

    • 24

    • 25

    • 26

    • 27

    • 28

    • 29

    • 30

    • 31

    • 32

    • 33

    • 34

    • 35

    • 36

    • 37

    • 38

    • 39

    • 40

    • 41

    • 42

    • 43

    • 44

    • 45

Avro Sink

    Property Name              Default              Description
    channel@                         –   
    type@                        –                  指定类型:avro.
    hostname@                    –                  主机名或IP
    port@                        –                  端口号
    batch-size                  100                 批次处理Event数
    connect-timeout            20000                连接超时时间
    request-timeout            20000                请求超时时间
    compression-type            none                压缩类型,“none” or “deflate”.
    compression-level            6                  压缩级别,0表示不压缩,1-9数字越大,压缩比越高
    ssl                        false                使用ssl加密1234567891011

Kafka Sink

  • 传输数据到Kafka中,需要注意的是Flume版本和Kafka版本的兼容性

    Property Name              Default             Description
    type                         –                 指定类型:org.apache.flume.sink.kafka.KafkaSink
    kafka.bootstrap.servers      –                 kafka服务地址
    kafka.topic          default-flume-topic       kafka Topic
    flumeBatchSize              100                批次写入kafka Event数
    kafka.producer.acks          1                 多少个副本确认后才能确定消息传递成功,0表示不需要确认
                                                   1表示只需要首要的副本得到确认,-1表示等待所有确认。


小王霸
4楼 · 2021-01-25 09:01

这种模式,有两种方式,一种是用来复制(Replication),另一种是用来分流(Multiplexing)。Replication方式,可以将最前端的数据源复制多份,分别传递到多个channel中,每个channel接收到的数据都是相同的。


722
5楼 · 2021-01-25 09:42

一、什么是flume

Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

二、flume特点

flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

flume的可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。


buzuofa100
6楼 · 2021-01-25 11:39

一、什么是flume

Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

二、flume特点

flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

flume的可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。


cccc
7楼 · 2021-01-25 13:30

有两种方式,一种是用来复制(Replication),另一种是用来分流(Multiplexing)。Replication方式,可以将最前端的数据源复制多份,分别传递到多个channel中,每个channel接收到的数据都是相同的。

ban_gank
8楼 · 2021-01-25 13:34

无论是怎么配置在开头出都要进行命名

组件命名一:单个source和sink用这个

组件命名二:单个source,多个sink用这个,当然有副本和负载均衡等模式

我的网名不再改
9楼 · 2021-01-26 14:12

无论是怎么配置在开头出都要进行命名

组件命名一:单个source和sink用这个

# Name the components on this agenta1.sources = r1a1.sinks = k1a1.channels = c1

组件命名二:单个source,多个sink用这个,当然有副本和负载均衡等模式

# Name the components on this agenta1.sources = r1a1.sinks = k1 k2a1.channels = c1 c2# 将数据流复制给多个channel 副本,还有负载均衡a1.sources.r1.selector.type = replicating

一、source配置

1、netcat的source:bind指定IP,port指定port

# Describe/configure the sourcea1.sources.r1.type = netcata1.sources.r1.bind = localhosta1.sources.r1.port = 44444

2、读文件exec:commd中写命令,如果用tail的话记得用大写的F

# Describe/configure the sourcea1.sources.r1.type = execa1.sources.r1.command = tail -F /opt/module/hive/logs/hive.loga1.sources.r1.shell = /bin/bash -c

3、读取文件夹source:spooldir source ,tmp记得一定要忽略

# Describe/configure the sourcea1.sources.r1.type = spooldir# 指定文件夹a1.sources.r1.spoolDir = /opt/module/flume/upload#指定文件上传后的后缀a1.sources.r1.fileSuffix = .COMPLETEDa1.sources.r1.fileHeader = true#忽略所有以.tmp结尾的文件,不上传a1.sources.r1.ignorePattern = ([^ ]*\.tmp)

4、最常用的source: arvo模式,bind指的是接收的主机,port不是随意的,是看sink给的端口

# Describe/configure the sourcea1.sources.r1.type = avroa1.sources.r1.bind = hadoop102a1.sources.r1.port = 4141

二、sink配置文件

sink的选择特别多,常用的是hdfs,kafka,hbase,logger,同时还可能是avro,arvo主要是给下一个flume接收

1、hdfs的sink:

# Describe the sinka1.sinks.k1.type = hdfsa1.sinks.k1.hdfs.path = hdfs://hadoop102:9000/flume/%Y%m%d/%H#上传文件的前缀a1.sinks.k1.hdfs.filePrefix = logs-#是否按照时间滚动文件夹a1.sinks.k1.hdfs.round = true#多少时间单位创建一个新的文件夹a1.sinks.k1.hdfs.roundValue = 1#重新定义时间单位a1.sinks.k1.hdfs.roundUnit = hour#是否使用本地时间戳a1.sinks.k1.hdfs.useLocalTimeStamp = true#积攒多少个Event才flush到HDFS一次a1.sinks.k1.hdfs.batchSize = 1000#设置文件类型,可支持压缩a1.sinks.k1.hdfs.fileType = DataStream#多久生成一个新的文件 单位是秒a1.sinks.k1.hdfs.rollInterval = 600#设置每个文件的滚动大小  128Ma1.sinks.k1.hdfs.rollSize = 134217700#文件的滚动与Event数量无关a1.sinks.k1.hdfs.rollCount = 0#最小冗余数a1.sinks.k1.hdfs.minBlockReplicas = 1

2、arvo sink:hostname是IP指的是发送给谁,port指的是监听端口可以任意写

a1.sinks.k2.type = avroa1.sinks.k2.hostname = hadoop102a1.sinks.k2.port = 4142

3、logger sink:  如果是像在控制台看打印,要在命令加,-Dflume.root.logger=INFO,console

# Describe the sinka1.sinks.k1.type = logger

4、hbase待续

三、channel的配置

channel主要分为memory  channel和file channel,如果是要求速度和不追求数据的完整性用,memory channel, 一般也都用它

1、memory channel:1000指的是队列的容量,100指的是sink取数据的时候最大值

# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100

2、file channel:见文档

四、channel 和source,sink的绑定

1、单个source和单个sink

# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1

2、单个source和多个

# Bind the source and sink to the channela1.sources.r1.channels = c1 c2a1.sinks.k1.channel = c1a1.sinks.k2.channel = c2

启动命令是:  bin/flume-ng agent --conf conf/ --name a1 --conf-file job/flume-dir-hdfs.conf

或者是bin/flume-ng agent  -a a1 -c conf/ --conf  -f job/flume-dir-hdfs.conf   a1不是乱写的


相关问题推荐

  • 回答 11

    数据库设计的根本目标是要解决A)数据共享问题 B)数据安全问题C)大量数据存储问题 D)简化数据维护一般书上很少这么提,大家在答这个题的时候,可以从数据库的概念上入手,数据库设计的根本目标是要解决应该是共享问题。四个答案可以做一些比较,最好的答案...

  • 回答 4

    bin/flume-ng agent \ --conf ./conf/ \ -f conf/file_memory_avro.conf  \ -Dflume.root.logger=DEBUG,console \ -n agent1

  • 回答 7

    概述本篇文章是根据Flume官网对Flume组件(Source,Channel,Sink)的常用配置参数做一个主要介绍,如有表达意思错误希望不吝指出。SourcesFlume中常用的Source有NetCat,Avro,Exec,Spooling Directory,Taildir,也可以根据业务场景的需要自定义Source,具体...

  • 回答 17

    flume和kafka的侧重点不同,flume追求的是数据和数据源、数据流向的多样性,适合多个生产者的场景;flume有自己内置的多种source和sink组件,具体操作方式是编写source、channel和sink的.conf配置文件,开启flume组件的时候用命令关联读取配置文件实现kafka追...

  • 回答 4

    Flume的运行原理是:Flume的核心角色为Agent,Flume分布式系统常常是由很多的Agent连接而形成的。Agent内部有三个组件,一是Source采集源,用于跟数据源对接,获取数据。二是Channel通道,Agent内部的数据传输通道,用于从source将数据传递到Sink。三是Sink目...

  • 回答 4

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。...

  • 回答 2

    想考计算机相关证书或者想学技术的同学可以抓紧时间啦!双11更多优惠活动详情咨询18597153017(微信同号)

  • 回答 2

    一、Selector(选择器)Selector概述Selector(选择器)可以工作在复制或多路复用(路由) 模式下 。复制模式Selector复制模式-属性说明selector.type replicating 类型名称,默认是 replicatingselector.optional – 标志通道为可选Selector复制模式-案例 #命...

  • 回答 2

    (1)电子商务网站比如我们在做一个电子商务网站,然后我们想从消费用户中访问点特定的节点区域来分析消费者的行为或者购买意图. 这样我们就可以更加快速的将他想要的推送到界面上,实现这一点,我们需要将获取到的她访问的页面以及点击的产品数据等日志数据信...

没有解决我的问题,去提问