【发布时间】:2021-09-26 14:37:01
【问题描述】:
我正在尝试将 Twitter 数据加载到 Hadoop 中。它说它已经处理了近 25000 个文件,但是当我检查 Hadoop 时,我总是发现文件夹是空的。 这是我正在使用的命令
flume-ng 代理 -n TwitterAgent -f flume.conf
这是一个小标题
21/07/18 19:40:03 INFO twitter.TwitterSource:已处理 25,000 个文档 21/07/18 19:40:03 INFO twitter.TwitterSource:被索引的文档总数: 25,000,跳过的文档总数:0 21/07/18 19:40:03 INFO twitter.TwitterSource: 45 docs/second 21/07/18 19:40:03 INFO twitter.TwitterSource:运行耗时 545 秒,处理时间:21/07/18 19:40:03 INFO twitter.TwitterSource:0.012 MB/秒发送到索引 21/07/18 19:40:03 INFO twitter.TwitterSource: 6.708 MB 文本已发送 索引 21/07/18 19:40:03 INFO twitter.TwitterSource: 有 0 忽略异常:21/07/18 19:40:05 INFO twitter.TwitterSource: 处理 25,100 个文档 21/07/18 19:40:06 INFO hdfs.BucketWriter: 创建 /home/hadoopusr/flumetweets/FlumeData.1626629459197.tmp 21/07/18 19:40:06 警告 hdfs.HDFSEventSink: HDFS IO 错误 org.apache.hadoop.fs.ParentNotDirectoryException: /home (不是 目录)在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkIsDirectory(FSPermissionChecker.java:538) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:278) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:206) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:189) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:507) 在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1612) 在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1630) 在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.resolvePath(FSDirectory.java:551) 在 org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.resolvePathForStartFile(FSDirWriteFileOp.java:291) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2282) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2225) 在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:728)
这是我的 Flume.config 文件
#为当前代理上的组件命名。
TwitterAgent.sources = 推特
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
#描述/配置源
TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.channels=MemChannel
TwitterAgent.sources.Twitter.consumerKey = ************
TwitterAgent.sources.Twitter.consumerSecret =************
TwitterAgent.sources.Twitter.accessToken = ************
TwitterAgent.sources.Twitter.accessTokenSecret = ************
TwitterAgent.sources.Twitter.keywords =covid,covid-19,coronavirus
#描述/配置接收器 TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = /home/hadoopusr/flumetweets
TwitterAgent.sinks.HDFS.hdfs.fileType = 数据流
TwitterAgent.sinks.HDFS.hdfs.writeFormat = 文本
TwitterAgent.sinks.HDFS.hdfs.batchSize = 10
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600
TwitterAgent.sinks.HDFS.hdfs.rollCount = 100
#描述/配置频道
TwitterAgent.channels.MemChannel.type = 内存
TwitterAgent.channels.MemChannel.capacity = 1000
TwitterAgent.channels.MemChannel.transactionCapacity = 1000
#将source和sink绑定到channel
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sinks.HDFS.channel = MemChannel
【问题讨论】:
-
我对 Flume 不是很熟悉,但这似乎是一个有意义的错误:
HDFS IO error org.apache.hadoop.fs.ParentNotDirectoryException: /home (is not a directory) -
是的,感谢您指出这一点。全部修复...你能检查一下这个错误吗?引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user=amel,access=WRITE,inode="/":hadoopusr:supergroup:drwxrwxr-x跨度>
-
我猜这表明您的用户没有 HDFS 的写入权限,但我不是专家。
标签: api hadoop twitter terminal flume