2012-05-02 5 views
2

Je voudrais streamer certains fichiers dans et hors de cassandra puisque nous l'utilisons déjà plutôt que de mettre en place un système de fichiers distribué par hadoop complet. Existe-t-il des options asynchrones dans atyanax ou hector pour lesquelles je fournis un rappel quand il est complet, donc je peux éviter les retards réseau de 1 ms pour 1000 appels alors que j'écris 1000 entrées (divisé entre quelques lignes et colonnes) à quelques serveurs en parallèle et ensuite toutes les réponses/callbacks reviennent quand le streaming est fait). Est-ce que Hector ou astyanax soutiennent cela?un moyen de faire un put asynchrone avec astyanax pour cassandra ou hector?

Il semble que astyanax supporte un rappel de requête, donc je pense que je peux obtenir avec les clés primaires pour retransmettre le fichier avec astyanax?

grâce, Dean

Répondre

1

Cassandra ne prend pas en charge le streaming via le fait API Thrift. En outre, le découpage du fichier en un seul lot de mutation qui répartit les données sur plusieurs lignes et colonnes peut être très dangereux. Cela pourrait entraîner un gaspillage sur Cassandra ou vous pourriez aussi tomber dans la limite de 1 Mo de tampon d'écriture qui, dans certains cas, pourrait bloquer votre connexion d'épargne indéfiniment (bien que je pense que cela soit corrigé dans la dernière version de Cassandra) . La nouvelle recette de magasin d'objets partagés dans Astyanax (https://github.com/Netflix/astyanax/wiki/Chunked-Object-Store) s'appuie sur notre expérience chez Netflix avec le stockage d'objets volumineux dans Cassandra et fournit une API simple qui gère tout le découpage et la parallélisation pour vous. Il pourrait encore faire des milliers d'appels à cassandra (en fonction de la taille de votre fichier et de la taille de votre bloc) mais gère également toutes les tentatives et la parallélisation pour vous. La même chose vaut pour la lecture de fichiers. L'API lira les morceaux et les réassemblera dans l'ordre dans un OutputStream.

+0

ne pas astyanax passer par l'api thrift, et j'ai entendu des supports d'épargne asynchornous ces jours-ci (il est encore demande/réponse, mais la réponse peut revenir grâce à un pool de thread nio canal séparé du mien). Aussi, j'ai regardé astyanax chunking et a été confus en ayant à configurer des threads X parce que si c'est asynch, vous pouvez écrire, écrire, écrire sans lire et ne devrait avoir besoin que d'un thread, vrai, faux? Je veux dire dans mon cas, je viens de diffuser via http upload via astyanax alors pourquoi devrais-je jamais utiliser plus d'un thread par opération de téléchargement? –

Questions connexes