《Hadoop生态系统及开发 实训手册 实训14 用Flume采集数据到HDFS.docx》由会员分享,可在线阅读,更多相关《Hadoop生态系统及开发 实训手册 实训14 用Flume采集数据到HDFS.docx(5页珍藏版)》请在第一文库网上搜索。
1、实训6.2用Flume采集数据到HDFSL实训I目的加深对Flume结构和概念的理解;熟悉Flume的使用。2 .实训内容通过本实训,了解FkIme的系统架构,熟悉Flume与HDFS的结合流程, 相关配置的意义。3 .实训要求以小组为单元进行实训,每小组5人,小组自协商选一位组长,由组长安排 和分配实训任务,具体参考实训操作环节。小组成员需要确保FkIme与HadooP 环境部署正确,对FhIme三大组件有所认识。4 .准备知识(1) FIUme的版本说明Flume有Flume OG与Flume NG两种版本,我们的实训是使用NG这个版 本。对于FIUmec)G ,可以说他是一个分布式日志收
2、集系统,有Mater概念,依赖 于ZOOKeeper, Agent用于采集数据,Agent是FlUme中产生数据流的地方,同 时,Agent会将产生的数据流传输到COneCtor。对应的,COHeCtor用于对数据进 行聚合,往往会产生一个更大的流。而对于FlUmeNG,它摒弃了 MaSter和 ZooKeeper, COneCtor也没有了, Web配置台也没有了,只剩下SoUrCe, Sink和 Channel,此时一个Agent的概念包括SoUrCe、Channel Sink,完全由一个分布 式系统变成了传输工具。不同机器之间的数据传输不再是OG那样由Agent对接 Collector,
3、而是由一个Agent端的Sink流向另一个Agent的Source。(2) FIUme 组件之 SoUrCeNetCatSOUrce:绑定的端口(TCP、UDP),将流经端口的每一个文本行 数据作为Event输入;type: Source的类型必须是netcatobind:要监听的(本机的)主机名或者IP。此监听不是过滤发送方。一台电脑 不是说只有一个IP。有多网卡的电脑,对应多个IP。port:绑定的本地的端口。AVro Source:监听一个Avro服务端口,采集Avro数据序列化后的数 据;type: Avro source 的类型必须是 avroobind:要监听的(本机的)主机名或者
4、ip,此监听不是过滤发送方,一台电脑 不是说只有一个IP。有多网卡的电脑,对应多个IP。port:绑定的本地的端口。EXeC Source:于Unix的command在标准输出上采集数据。type: Source的类型必须是exec。command:要执行命令。Spooling Directory Source:监听一个文件夹里的文件的新增,如果有则 采集作由 Sourceotype: Source 的类型必须是 spooldir。spoolDir:监听的文件夹【提前创建目录】。fileSuffix:上传完毕后文件的重命名后缀,默认为.COMPLETED。 deletePolicy:上传后的文
5、件的删除策略never和immediate,默认为never。 AIeHeader:是否要加上该文件的绝对路径在header里,默认是false。 basenameHeader:是否要加上该文件的名称在header里,默认是falseo(3) FhHne 组件之 ChannelMemOry Channel使用内存作为数据的存储。type: channel 的类型必须为 memoryocapacity: channel 中的最大 Event 数目。IransactionCapacity : channel 中允许事务的最大 event 数目。FiIeChannel使用文件作为数据的存储。type
6、: channel的类型必须为file。CheckpointDir :检查点的数据存储目录【提前创建目录】。dataDirs :数据的存储目录【提前创建目录】。transactionCapacity: channel 中允许事务的最大 Event 数目。SPinable Memory Channel使用内存作为channel超过了阀值就存在文件 中type: channel 的类型必须为 SPlLLABLEMEMORY。memoryCacity :内存的容量 event 数。OverflowCipacity:数据存到文件的event阀值数。CheckpointDir:检查点的数据存储目录。da
7、taDirs:数据的存储目录。(4 ) FlUme 组件之 SinkHDFSSink:将数据传输到HDFS集群中。type: Sink的类型必须是HDFS。hdfs.path: HDFS的上传路径。hdfs.filePrefix: HDFS 文件的前缀,默认是:FlumeDataohdfs.rolllnterval:间隔多久产生新文件,默认是30秒,0表示不以时间间隔 为准。hdfs.rollSize:文件到达多大再产生一个新文件,默认是1024 (bytes) , 0 表示不以文件大小为准。hdfs.rollCount: event达到多大再产生一个新文件,默认是10 (个),0表 示不以e
8、vent数目为准。hdfs.batchSize:每次往HDFS里提交多少个Event,默认是100。hdfs.fileType: HDFS 文件的格式主要包括:SequenceFile DataStream CompressedStream,如果使用了 CompressedStream就要设置压缩方式。hdfs.codeC: 压缩方式:gzip, bzip2, lzo, lzop, snappy o注: host可以使用header的Key,以及%Y%m%d来表示时间,但关于 时间的表示需要在header里有timestamp这个KeyoLogger Sink将数据作为日志处理(根据flume
9、中的设置的日志方式来显示) 要在控制台显示在运行Agent的时候加入:-Dflume.root.logger=INFO,console。type: sink的类型必须是Iogger0maxBytesToLog:打印body的最长的字节数 默认是16。Avro Sink:数据被转换J Avro Event,然后发送到指定的服务端口上。type: Sink的类型必须是avro0hostname:指定发送数据的主机名或者ip。port:指定发送数据的端口。File Roll Sink:数据发送到本地文件。type: Sink的类型必须是file_rolLsink.directory:存储文件的目录【
10、提前创建目录】。batchSize: 一次发送多少个event。默认是100。sink.rolllnterval:多久产生一个新文件,默认是30秒。0为不产生新文件 (即使没有数据也会产生文件)。5 .实训步骤(1) FhIme 数据至IJ HDFS编写Conf文件编辑 hdfs.conf:cd optsoftwareapache-flume-1.10.1 -bin/confvim hdfs.conf# 1、定义agent中各组件名称agent 1 .sources=source 1agent l.sinks=sinklagent 1 .Channels=Channel 1# 2、source
11、 1组件的配置参数agent 1 .sources.sourcel .type=exec# 手动生成/home/SoUrCe.log手动生成agent 1 .sources.sourcel.Command=Uil -n +0 -F homesource.log# 3、channel 1的配置参数agent 1 .Channelsxhannel 1 .type=memoryagent 1 .channels.channel I .capacity= 10(X)agent I .channels.channel 1 .IransaclionCapactiy= 100#4、sinkl的配置参数age
12、nt l.sinks.sink 1 .type=hdfsagentl.sinks.sinkl.hdfs.path=hdfs:/master:8020/flume/dataagent l.sinks.sink 1 .hdfs.fileType=DataStream#时间类型agent l.sinks.sink 1 .hdfs.UseLocalTimeStamp=Irueagent l.sinks.sink 1 .hdfs.writeFormat=TEXT#文件前缀agent l.sinks.sink 1 .hdfs.filePrefix=%Y-%m-%d-%H-%M#60秒滚动生成一个文件age
13、nt l.sinks.sink 1 .hdfs.rolllnterval=60#HDFS块副本数agent l.sinks.sink 1 .hdfs.minBlockReplicas= 1#不根据文件大小滚动文件agent 1 .sinks.sinkl .hdfs.rollSize=0# 不根据消息条数滚动文件agent l.sinks.sink 1 .hdfs.rollCount=0# 不根据多长时间未收到消息滚动文件agent l.sinks.sink 1 .hdfs.idleTimeout=0# 5、将 source 和 sink 绑定到 channel agent 1 .sources
14、.source 1 .channels=channel 1 agent l.sinks.sink Lchannel=Channell新建HDFS Zt flume/data文件夹:hdfs dfs -nkdir -p /flume/data拷贝 HadoOP 的 jar 包至ij$FLUME_HOME/lib 下:Cd optsoftwarehadoop-3.3.4sharehadoopcommoncp -r *.jar lib/*.jar $FLUME_HOME/lib/拷贝程中,如遇相ljar包提示覆盖,直接按回车即可丁(2)执行 Flume启动FkIme (启动前需要先启动HDFS),启
15、动之后阻塞状态,并非卡死。 如图6-26所示。flume-ng agent conf $FLUME_HOME/conf -conf-file $FLUME_HOME/conf/hdfs.confname agent 1 -Dflume.root.logger=DEBUG,consoleIully registered new MBean.I222-11-1T13:26:28,215 INFOIifecycleSupervisor-1-2 instrumentation.MonitordCounterGroup: Component type:SOURCE, name: sou reel started222-11-10T13:26:28,217 INFOIifecycleSupervisor-1-0 instrumentation.MonitoredCounterGroup: Monitored counter group for type: SINK, name: sinkl: Successfully registered new MBean.2022-11-10T13:26:28,