草庐IT

hadoop - Flume 假脱机目录源 : Cannot load files larger files

coder 2024-01-08 原文

我正在尝试使用 flume 假脱机目录将数据摄取到 HDFS(SpoolDir > Memory Channel > HDFS)。

我正在使用 Cloudera Hadoop 5.4.2。 (Hadoop 2.6.0,Flume 1.5.0)。

它适用于较小的文件,但不适用于较大的文件。请在下面找到我的测试场景:

  1. 大小为 KB 到 50-60MBytes 的文件,处理无问题。
  2. 大于 50-60MB 的文件,它将大约 50MB 写入 HDFS,然后我发现 flume agent 意外退出。
  3. 水槽日志中没有错误消息。 我发现它试图多次创建“.tmp”文件(HDFS),并且每次在意外退出之前写入几兆字节(有时 2MB,有时 45MB)。 一段时间后,最后尝试的“.tmp”文件重命名为已完成(“.tmp”已删除),源 spoolDir 中的文件也重命名为“.COMPLETED”,尽管完整文件未写入 HDFS。

在真实场景中,我们的文件大小约为 2GB。因此,需要一些强大的水槽配置来处理工作负载。

注意:

  1. Flume 代理节点是 hadoop 集群的一部分,而不是数据节点(它是边缘节点)。
  2. 假脱机目录是运行 flume 代理的同一台服务器上的本地文件系统。
  3. 所有都是物理服务器(不是虚拟的)。
  4. 在同一个集群中,我们有 twitter 数据馈送和 flume 运行良好(尽管数据量很小)。
  5. 请在下面找到我在这里使用的 flume.conf 文件:

    #############start flume.conf####################
    
    spoolDir.sources = src-1
    
    spoolDir.channels = channel-1
    
    spoolDir.sinks = sink_to_hdfs1
    
    ######## source
    
    
    spoolDir.sources.src-1.type = spooldir
    
    spoolDir.sources.src-1.channels = channel-1
    
    spoolDir.sources.src-1.spoolDir = /stage/ETL/spool/
    
    spoolDir.sources.src-1.fileHeader = true
    
    spoolDir.sources.src-1.basenameHeader =true
    
    spoolDir.sources.src-1.batchSize = 100000
    
    ######## channel
    spoolDir.channels.channel-1.type = memory
    
    spoolDir.channels.channel-1.transactionCapacity = 50000000
    
    spoolDir.channels.channel-1.capacity = 60000000
    
    spoolDir.channels.channel-1.byteCapacityBufferPercentage = 20
    
    spoolDir.channels.channel-1.byteCapacity = 6442450944
    
    ######## sink 
    spoolDir.sinks.sink_to_hdfs1.type = hdfs
    
    spoolDir.sinks.sink_to_hdfs1.channel = channel-1
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.fileType = DataStream
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.path = hdfs://nameservice1/user/etl/temp/spool
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.filePrefix = %{basename}-
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.batchSize = 100000
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.rollInterval = 0
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.rollSize = 0
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.rollCount = 0
    
    spoolDir.sinks.sink_to_hdfs1.hdfs.idleTimeout = 60
    
    #############end flume.conf####################
    

请告诉我我的配置是否有任何问题,或者我是否遗漏了什么。

或者这是一个已知问题,即 Flume SpoolDir 无法处理更大的文件。

问候,

-奥拜德

  • 我已将相同主题发布到另一个开放社区,如果我从其他社区获得解决方案,我将在此处更新,反之亦然。

最佳答案

我用几个大小的文件测试了 flume,最后得出结论“flume 不适合更大的文件”。

所以,我终于开始使用 HDFS NFS 网关了。这真的很酷,现在我什至不需要本地存储中的假脱机目录。使用 scp 将文件直接推送到 nfs 挂载的 HDFS。

希望对和我有同样问题的人有所帮助。

谢谢, 奥拜德

关于hadoop - Flume 假脱机目录源 : Cannot load files larger files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541066/

有关hadoop - Flume 假脱机目录源 : Cannot load files larger files的更多相关文章

  1. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  2. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  3. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  4. ruby-on-rails - 没有这样的文件或目录 - 用 Mini Magick 识别 - 2

    在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc

  5. ruby - Sinatra 找不到 View 目录 - 2

    我正在尝试以一种更类似于普通RubyGem结构的方式构建我的Sinatra应用程序。我有以下文件树:.├──app.rb├──config.ru├──Gemfile├──Gemfile.lock├──helpers│  ├──dbconfig.rb│  ├──functions.rb│  └──init.rb├──hidden│  └──Rakefile├──lib│  ├──admin.rb│  ├──api.rb│  ├──indexer.rb│  ├──init.rb│  └──magnet.rb├──models│  ├──init.rb│  ├──invite.rb│  ├─

  6. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  7. ruby-on-rails - 在 Rails 中需要整个目录树的好方法是什么? - 2

    我正在使用Rails3.2.2并希望递归加载某个目录中的所有代码。例如:[Railsroot]/lib/my_lib/my_lib.rb[Railsroot]/lib/my_lib/subdir/support_file_00.rb[Railsroot]/lib/my_lib/subdir/support_file_01.rb...基于谷歌搜索,我试过:config.autoload_paths+=["#{Rails.root.to_s}/lib/my_lib/**"]config.autoload_paths+=["#{Rails.root.to_s}/lib/my_lib/**/"

  8. ruby - 使用 File.open 从 ruby​​ 中的目录打开文件 - 2

    我是Ruby的新手,我正在尝试以如下方式打开文件:#!/usr/bin/envrubydata_file='~/path/to/file.txt'file=File.open(data_file,'r')但是我得到“没有这样的文件或目录”(该文件确实存在于该目录中)。如果我将该文件路径作为命令行参数,它会起作用,例如:#!/usr/bin/envrubyfile=File.open(ARGV[0],'r')然后从命令行运行,如:rubyscript.cgi~/path/to/file.txt关于如何让它以第一种方式工作的任何想法? 最佳答案

  9. ruby - 在 Ruby + Chef 中检查现有目录失败 - 2

    这是我在ChefRecipe中的一blockRuby:#ifdatadirdoesn'texist,moveoverthedefaultoneif!File.exist?("/vol/postgres/data")execute"mv/var/lib/postgresql/9.1/main/vol/postgres/data"end结果是:Executingmv/var/lib/postgresql/9.1/main/vol/postgres/datamv:inter-devicemovefailed:`/var/lib/postgresql/9.1/main'to`/vol/post

  10. ruby-on-rails - Ruby on Rails - Controller 子目录 - 2

    我对RoR有点陌生,我想要一个结构化的目录,因为项目可能会变大我不想让所有的Controller直接进入controllers目录。我想要一些东西app/controllers/application_controller.rbgroupa/athing_controller.rbathing2_controller.rbgroupb/bthing_controller.rb然而,当我在routes.rb中放置以下内容时:get'athing',:to=>"groupa/athing#index"我在localhost:3000/athing/上收到以下错误:superclassmis

随机推荐