Nous enregistrons des tweets dans un ordre de répertoire comme/user/flume/2016/06/28/13/FlumeData ... .Mais chaque heure, il crée plus de 100 fichier FlumeData.J'ai changé TwitterAgent.sinks.HDFS.hdfs.rollSize = 52428800 (50 mb)
même chose est arrivé à nouveau.Après J'ai essayé de changer le paramètre rollcount aussi mais je n'ai pas travaillé. Comment puis-je définir les paramètres pour obtenir un fichier FlumeData par heure.Quels devraient être les paramètres de flume.conf pour sauvegarder les tweets dans un seul fichier FlumeData par heure?
Répondre
Je résolu ce problème avec la mise en rollInterval = 3600 rollcount = 0 et batchSize = 100 flume.conf comme paramètres de @vkgade suggèrent
Qu'en est-il de rollInterval
? L'avez-vous mis à zéro? Si c'est le cas, alors le problème pourrait être autre chose. Si le rollInterval
est défini sur une certaine valeur, il remplacera en quelque sorte les valeurs rollSize
et rollCount
. La rotation de fichier peut se produire avant que la taille du fichier atteigne la valeur rollSize
. Vérifiez également la taille de bloc HDFS que vous avez définie. Si elle est définie sur, une valeur trop petite peut entraîner le roulement du fichier.
Essayez ceci -
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://hpc01:8020/user/flume/tweets/%Y/%m/%d/%H
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 100
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 0
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 3600
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 1000
TwitterAgent.channels.MemChannel.transactionCapacity = 100
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://hpc01:8020/user/flume/tweets/%Y/%m/%d/%H
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10
TwitterAgent.sinks.HDFS.hdfs.rollIntInterval = 0
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 1000
Hé cocher ici dans votre réponse, le 'rollInterval' est écrit comme' rollIntInterval'. C'est incorrect. – ViKiG
rollInterval était unsetted mais je pense La valeur par défaut est zéro et la taille du bloc hdfs est de 128 Mo. – challangerm
Pouvez-vous publier le fichier de configuration du canal ici? Initialement même j'avais le même problème. Je ne pouvais pas créer 1 fichier par heure en raison d'erreurs de mémoire (en raison de capacités de canaux ne fonctionnent pas correctement) mais je l'ai ramené à 4 à 5 fichiers par heure. Chaque taille de fichier peut atteindre 8 Mo. J'ai mis la capacité de canal 1000 et la capacité de transaction à 100. Ensuite, mettez la taille du fichier à 8000000 et les paramètres de roulis de repos à zéro. Fait important, la taille du lot (je l'ai mis à 100) le notch en fonction de la capacité du canal. Essayez cela et laissez-moi savoir comment sont vos résultats. – ViKiG
Vous avez mis le nombre de rouleaux à 10, le changer à zéro. Le nombre de rouleaux provoque ces centaines de fichiers. Augmentez la taille du lot à 100 ou plus. Mettez l'intervalle de roulis à 1 heure (3600 secondes) et voyez ce qui se passe. – ViKiG