2016-06-29 1 views
1

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

0

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

0

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 
+0

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

+0

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

+0

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

0
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 
+0

Hé cocher ici dans votre réponse, le 'rollInterval' est écrit comme' rollIntInterval'. C'est incorrect. – ViKiG