- Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS
- Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的
- Agent 主要有 3 个部分组成,Source、Channel(缓冲区,管道)、Sink
[mnlg@XJ202 ~]$ cd /opt/software/ [mnlg@XJ202 software]$ tar -xf apache-flume-1.9.0-bin.tar -C /opt/module/ //解压Flume安装包 [mnlg@XJ202 software]$ cd /opt/module/ [mnlg@XJ202 module]$ ll [mnlg@XJ202 module]$ mv apache-flume-1.9.0-bin/ flume-1.9.0 //更改安装包的名称 [mnlg@XJ202 module]$ ll2、将lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3
[mnlg@XJ202 module]$ cd flume-1.9.0/ [mnlg@XJ202 flume-1.9.0]$ ll [mnlg@XJ202 flume-1.9.0]$ cd lib/ //需删除的文件在lib中 [mnlg@XJ202 lib]$ ll [mnlg@XJ202 lib]$ rm guava-11.0.2.jar //删除此文件 [mnlg@XJ202 lib]$ cd .. //或写成[mnlg@XJ202 lib]$ rm /opt/module/flume/lib/guava 11.0.2.jar3、创建 dir-flume-hdfs.conf 文件
[mnlg@XJ202 flume-1.9.0]$ mkdir job //新建job文件夹 [mnlg@XJ202 flume-1.9.0]$ cd job/ [mnlg@XJ202 job]$ vim dir-flume-hdfs.conf //dir-flume-hdfs.conf内容(第17行‘XJ202’根据需求进行更改) a3.sources = r3 a3.sinks = k3 a3.channels = c3 # Describe/configure the source a3.sources.r3.type = spooldir a3.sources.r3.spoolDir = /opt/module/upload a3.sources.r3.fileSuffix = .COMPLETED a3.sources.r3.fileHeader = true #忽略所有以.tmp 结尾的文件,不上传 a3.sources.r3.ignorePattern = ([^ ]*.tmp) # Describe the sink a3.sinks.k3.type = hdfs a3.sinks.k3.hdfs.path =hdfs://XJ202:8020/flume/upload/%Y%m%d/%H #上传文件的前缀 a3.sinks.k3.hdfs.filePrefix = upload- #是否按照时间滚动文件夹 a3.sinks.k3.hdfs.round = true #多少时间单位创建一个新的文件夹 a3.sinks.k3.hdfs.roundValue = 1 #重新定义时间单位 a3.sinks.k3.hdfs.roundUnit = hour #是否使用本地时间戳 a3.sinks.k3.hdfs.useLocalTimeStamp = true #积攒多少个 Event 才 flush 到 HDFS 一次 a3.sinks.k3.hdfs.batchSize = 100 #设置文件类型,可支持压缩 a3.sinks.k3.hdfs.fileType = DataStream #多久生成一个新的文件 a3.sinks.k3.hdfs.rollInterval = 60 #设置每个文件的滚动大小大概是 128M a3.sinks.k3.hdfs.rollSize = 134217700 #文件的滚动与 Event 数量无关 a3.sinks.k3.hdfs.rollCount = 0 # Use a channel which buffers events in memory a3.channels.c3.type = memory a3.channels.c3.capacity = 1000 a3.channels.c3.transactionCapacity = 100 # Bind the source and sink to the channel a3.sources.r3.channels = c3 a3.sinks.k3.channel = c34、启动监控文件夹命令
[mnlg@XJ202 job]$ my_hadoop.sh start //启动集群 [mnlg@XJ202 job]$ cd .. [mnlg@XJ202 flume-1.9.0]$ cd .. [mnlg@XJ202 module]$ mkdir upload //新建upload文件夹 [mnlg@XJ202 module]$ cd flume-1.9.0/ [mnlg@XJ202 flume-1.9.0]$ bin/flume-ng agent -n a3 -f job/dir-flume-hdfs.conf //执行监控命令5、新开一个一样的窗口运行(以下都在新窗口输入)
[mnlg@XJ202 ~]$ ll [mnlg@XJ202 ~]$ cp 1.txt /opt/module/upload/ //复制1.txt文件到upload文件夹下6、进入浏览器端口查看Flume文件夹中是否有文件上传成功
[mnlg@XJ202 ~]$ cat 1.txt //查看文件内容是否与端口文件内容一致注:可添加打印日志功能
//将监控文件夹命令语句加入 - Dflume.root.logger=INFO,console [mnlg@XJ202 flume-1.9.0]$ bin/flume-ng agent -n a3 -f job/dir-flume-hdfs.conf - Dflume.root.logger=INFO,console
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)