Flume を使用してツイートをダウンロードし、Hadoop にパイプしようとすると、Java ヒープ領域が不足しているため、メモリ不足の例外が発生します。
次のように、Hadoop の mapred-site.xml でヒープ領域を現在 4GB に設定しています。
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx4096m</value>
</property>
ツイートを 2 日間連続してダウンロードしたいと思っていますが、エラーなしで 45 分を超えることはできません。
これらすべてを保持するためのディスク容量があるので、Java が非常に多くのことを一度に処理しなければならないためにエラーが発生していると想定しています。これらのツイートがダウンロードされる速度を遅くする方法、またはこの問題を解決するために何か他のことをする方法はありますか?
編集:flume.confが含まれています
TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
TwitterAgent.sources.Twitter.type = TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = <required>
TwitterAgent.sources.Twitter.consumerSecret = <required>
TwitterAgent.sources.Twitter.accessToken = <required>
TwitterAgent.sources.Twitter.accessTokenSecret = <required>
TwitterAgent.sources.Twitter.keywords = manchester united, man united, man utd, man u
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:50070/user/flume/tweets/%Y/%m/%d/%H/
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100
編集 2
メモリを 8GB に増やしてみましたが、まだ効果がありません。一度に Hadoop にあまりにも多くのツイートを配置していて、それらをディスクに書き込んでスペースを再度解放する必要があると想定しています (または、そのような効果が得られます)。これを行う方法に関するガイドはどこにありますか?