Salut, j'ai développé une application où je dois stocker TB de données pour la première fois, puis 20 GB incrémental mensuel comme insérer/mettre à jour/supprimer sous la forme de xml qui sera appliqué en plus de ces 5 To de données. Enfin, sur demande, je dois générer un instantané complet de toutes les données et créer des fichiers texte 5K en fonction de la logique afin que les données respectives soient dans les fichiers respectifs.Non HBase solution pour stocker des données énormes et mettre à jour en temps réel
J'ai réalisé ce projet en utilisant HBase. J'ai créé 35 tables dans la HBase ayant une région de 10 à 500. J'ai mes données dans mon HDFS et l'utilisation de mapreduce i des données de charge en vrac dans des tables Hbase réceptives. Ensuite, j'ai une application d'analyse syntaxique SAX écrite en Java pour analyser tous les fichiers incrémentaux xml entrants et mettre à jour les tables HBase. La fréquence des fichiers xml est d'environ 10 fichiers xml par minutes et un total de 2000 mises à jour. Le message incrémental est strictement dans l'ordre.
Enfin, sur demande, je lance ma dernière application mapreduce pour scanner toutes les tables Hbase et créer des fichiers texte 5K et les livrer au client.
Les 3 étapes fonctionnent bien mais quand je suis allé déployer mon application sur un serveur de production qui est un cluster partagé, l'équipe d'infrastructure ne nous permet pas d'exécuter mon application car je fais un scan complet sur HBase.
J'ai utilisé le cluster de 94 nœuds et les plus grandes données de table HBase que j'ai est d'environ 2 milliards. Toutes les autres tables ont moins d'un million de données.
Le temps total nécessaire à mapreduce pour numériser et créer des fichiers texte est de 2 heures.
Maintenant, je cherche une autre solution pour implémenter cela.
Je peux utiliser HIVE parce que j'ai des enregistrements de niveau insérer/mettre à jour et supprimer cela aussi de manière très précise.
J'ai également intégré la table HBase et HIVE afin que, pour les données incrémentales, la table HBase soit utilisée et pour le balayage de table complet, HIVE sera utilisé. Mais comme HIVE utilise le gestionnaire de stockage Hbase je ne peux pas créer de partition dans la table HIVE et c'est pourquoi HIVE scan de table devient très lent même 10 fois plus lent que HBase Full scan de table
Je ne peux pas penser à une solution en ce moment coincé . S'il vous plaît aidez-moi avec une autre solution où HBase n'est pas impliqué. Puis-je utiliser le fichier AVRO ou Perquet dans ce cas d'utilisation? Mais je ne sais pas comment AVRO prendra en charge la mise à jour au niveau de l'enregistrement.
Je n'ai pas de problème de performance. J'obtiens de bonnes performances car j'ai essayé avec 2 milliards d'enregistrements ayant 400 Go de données et mon travail est terminé en 12 minutes. est déployé sur un cluster partagé? – SUDARSHAN
Bien sûr, une analyse de table complète affectera les performances. Vous voulez essayer de redessiner la rowkey et ensuite utiliser les filtres. Ou déployez Apache Phoenix, puis accédez aux tables HBase comme vous le feriez pour n'importe quelle table dans un SGBDR. – okmich