实训14 用Flume采集数据到HDFS_第1页
实训14 用Flume采集数据到HDFS_第2页
实训14 用Flume采集数据到HDFS_第3页
实训14 用Flume采集数据到HDFS_第4页
实训14 用Flume采集数据到HDFS_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训6.2用Flume采集数据到HDFS1.实训目的加深对Flume结构和概念的理解;熟悉Flume的使用。2.实训内容通过本实训,了解Flume的系统架构,熟悉Flume与HDFS的结合流程,相关配置的意义。3.实训要求以小组为单元进行实训,每小组5人,小组自协商选一位组长,由组长安排和分配实训任务,具体参考实训操作环节。小组成员需要确保Flume与Hadoop环境部署正确,对Flume三大组件有所认识。4.准备知识(1)Flume的版本说明Flume有FlumeOG与FlumeNG两种版本,我们的实训是使用NG这个版本。对于FlumeOG,可以说他是一个分布式日志收集系统,有Mater概念,依赖于ZooKeeper,Agent用于采集数据,Agent是Flume中产生数据流的地方,同时,Agent会将产生的数据流传输到Collector。对应的,Collector用于对数据进行聚合,往往会产生一个更大的流。而对于FlumeNG,它摒弃了Master和ZooKeeper,Collector也没有了,Web配置台也没有了,只剩下Source,Sink和Channel,此时一个Agent的概念包括Source、Channel和Sink,完全由一个分布式系统变成了传输工具。不同机器之间的数据传输不再是OG那样由Agent对接Collector,而是由一个Agent端的Sink流向另一个Agent的Source。(2)Flume组件之Source①NetCatSource:绑定的端口(TCP、UDP),将流经端口的每一个文本行数据作为Event输入;type:Source的类型必须是netcat。bind:要监听的(本机的)主机名或者IP。此监听不是过滤发送方。一台电脑不是说只有一个IP。有多网卡的电脑,对应多个IP。port:绑定的本地的端口。②AvroSource:监听一个Avro服务端口,采集Avro数据序列化后的数据;type:Avrosource的类型必须是avro。bind:要监听的(本机的)主机名或者ip,此监听不是过滤发送方,一台电脑不是说只有一个IP。有多网卡的电脑,对应多个IP。port:绑定的本地的端口。③ExecSource:于Unix的command在标准输出上采集数据。type:Source的类型必须是mand:要执行命令。④SpoolingDirectorySource:监听一个文件夹里的文件的新增,如果有则采集作为Source。type:Source的类型必须是spooldir。spoolDir:监听的文件夹【提前创建目录】。fileSuffix:上传完毕后文件的重命名后缀,默认为.COMPLETED。deletePolicy:上传后的文件的删除策略never和immediate,默认为never。fileHeader:是否要加上该文件的绝对路径在header里,默认是false。basenameHeader:是否要加上该文件的名称在header里,默认是false。(3)Flume组件之Channel①MemoryChannel使用内存作为数据的存储。type:channel的类型必须为memory。capacity:channel中的最大Event数目。transactionCapacity:channel中允许事务的最大event数目。②FileChannel使用文件作为数据的存储。type:channel的类型必须为file。checkpointDir:检查点的数据存储目录【提前创建目录】。dataDirs:数据的存储目录【提前创建目录】。transactionCapacity:channel中允许事务的最大Event数目。③SpillableMemoryChannel使用内存作为channel超过了阀值就存在文件中type:channel的类型必须为SPILLABLEMEMORY。memoryCapacity:内存的容量event数。overflowCapacity:数据存到文件的event阀值数。checkpointDir:检查点的数据存储目录。dataDirs:数据的存储目录。(4)Flume组件之Sink①HDFSSink:将数据传输到HDFS集群中。type:Sink的类型必须是HDFS。hdfs.path:HDFS的上传路径。hdfs.filePrefix:HDFS文件的前缀,默认是:FlumeData。hdfs.rollInterval:间隔多久产生新文件,默认是30秒,0表示不以时间间隔为准。hdfs.rollSize:文件到达多大再产生一个新文件,默认是1024(bytes),0表示不以文件大小为准。hdfs.rollCount:event达到多大再产生一个新文件,默认是10(个),0表示不以event数目为准。hdfs.batchSize:每次往HDFS里提交多少个Event,默认是100。hdfs.fileType:HDFS文件的格式主要包括:SequenceFile、DataStream、CompressedStream,如果使用了CompressedStream就要设置压缩方式。hdfs.codeC:压缩方式:gzip,bzip2,lzo,lzop,snappy。注:%{host}可以使用header的Key,以及%Y%m%d来表示时间,但关于时间的表示需要在header里有timestamp这个Key。②LoggerSink将数据作为日志处理(根据flume中的设置的日志方式来显示)要在控制台显示在运行Agent的时候加入:-Dflume.root.logger=INFO,console。type:sink的类型必须是logger。maxBytesToLog:打印body的最长的字节数默认是16。③AvroSink:数据被转换成AvroEvent,然后发送到指定的服务端口上。type:Sink的类型必须是avro。hostname:指定发送数据的主机名或者ip。port:指定发送数据的端口。④FileRollSink:数据发送到本地文件。type:Sink的类型必须是file_roll。sink.directory:存储文件的目录【提前创建目录】。batchSize:一次发送多少个event。默认是100。sink.rollInterval:多久产生一个新文件,默认是30秒。0为不产生新文件(即使没有数据也会产生文件)。5.实训步骤(1)Flume数据到HDFS①编写conf文件编辑hdfs.conf:cd/opt/software/apache-flume-1.10.1-bin/confvimhdfs.conf#1、定义agent中各组件名称agent1.sources=source1agent1.sinks=sink1agent1.channels=channel1#2、source1组件的配置参数agent1.sources.source1.type=exec#手动生成/home/source.log手动生成mand=tail-n+0-F/home/source.log#3、channel1的配置参数agent1.channels.channel1.type=memoryagent1.channels.channel1.capacity=1000agent1.channels.channel1.transactionCapactiy=100#4、sink1的配置参数agent1.sinks.sink1.type=hdfsagent1.sinks.sink1.hdfs.path=hdfs://master:8020/flume/dataagent1.sinks.sink1.hdfs.fileType=DataStream#时间类型agent1.sinks.sink1.hdfs.useLocalTimeStamp=trueagent1.sinks.sink1.hdfs.writeFormat=TEXT#文件前缀agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d-%H-%M#60秒滚动生成一个文件agent1.sinks.sink1.hdfs.rollInterval=60#HDFS块副本数agent1.sinks.sink1.hdfs.minBlockReplicas=1#不根据文件大小滚动文件agent1.sinks.sink1.hdfs.rollSize=0#不根据消息条数滚动文件agent1.sinks.sink1.hdfs.rollCount=0#不根据多长时间未收到消息滚动文件agent1.sinks.sink1.hdfs.idleTimeout=0#5、将source和sink绑定到channelagent1.sources.source1.channels=channel1agent1.sinks.sink1.channel=channel1②新建HDFS上flume/data文件夹:hdfsdfs-mkdir-p/flume/data③拷贝Hadoop的jar包到$FLUME_HOME/lib下:cd/opt/software/hadoop-3.3.4/share/hadoop/commoncp-r*.jarlib/*.jar$FLUME_HOME/lib/拷贝过程中,如遇相同jar包提示覆盖,直接按回车即可。(2)执行Flume①启动Flume(启动前需要先启动HDFS),启动之后阻塞状态,并非卡死。如图6-26所示。flume-ngagent--conf$FLUME_HOME/conf--conf-file$FLUME_HOME/conf/hdfs.conf--nameagent1-Dflume.root.logger=DEBUG,console图6-26Flume启动状态(3)测试与查看结果①新打开一个终端,创建/home/source.log并写入文件,操作如图6-27所示。touch/home/source.logechohadoop>>/home/source.logechohello>>/home/source.logechohi>>/home/source.log图6-27创建文件并写入内容②查看HDFS上的采集结果,可以看到已经生成了文件。如图6-28所示。hdfsdfs-ls/flume/data图6-28查看data文件夹的文件说明:因为文件名的生成策略原因,每次文件名会不同。再稍等片刻,则可以发现,临时文件已经变成了非临时文件,即没有了文件后缀tmp。如图6-29所示。图6-29临时文件名变化后示意图此时,继续查看此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论