La technologie de stockage d'objets pour la pratique industrielle de gros volumes de données

Source: Données Kunlun K2Data

Qu'est-ce que le stockage d'objets

stockage d'objets se réfère généralement aux services de stockage aux données « Object » (objet) sous la forme d'organisation. Références sur Wikipédia définitions données ci-dessous:

stockage d'objets (également connu sous le nom de stockage à base d'objets ) est une architecture de stockage de données informatiques qui gère les données sous forme d'objets, par opposition à d'autres architectures de stockage tels que les systèmes de fichiers qui gèrent les données comme une hiérarchie de fichiers et le stockage de blocs qui gère données blocs dans les secteurs et les pistes

En fait, il peut être vu de cette description, le sujet ne convient pas pour stocker la définition du mode actif, mais par comparaison avec un autre type de stockage typique, projetant ses propres caractéristiques. unités de stockage d'objets appelés objets, fermez le fichier dans le système de fichiers, mais ne dispose pas de support du système de fichiers de stockage objet arborescence de répertoire. Les services de stockage de l'objet réel, y compris la mémoire pour stocker les images Facebook et Spotify bibliothèques de chansons.

Définition du stockage de l'objet ne définit pas le modèle de données, mais nous utilisons généralement la mise en uvre clé + + Structure de données des métadonnées pour décrire un objet (illustré ci-dessus) dans laquelle:

  • Clés d'objet: Pour identifier de façon unique un ID d'objet;
  • données: Les données lui-même objet, généralement un fichier, comme une image, un fichier vidéo, et ainsi de suite;
  • Les métadonnées (métadonnées): Un ensemble structuré de données décrivant un objet, appelé méta-données, typiquement mémorisée en tant que valeur de clé;

Par conséquent, l'objet de stockage peut être considérée comme une sorte de forme de valeur de clé, dans lequel une clé d'objet correspondant à la clé, la valeur correspondant à un fichier et des métadonnées. En outre, le concept général de l'objet stocké il y a un seau (seau), principalement utilisé pour faciliter la gestion des objets, clé d'objet dans un seau sont uniques, mais la clé d'objet entre les différents godets peut généralement être répété.

analyse de la situation de stockage d'objets

Cet article traite de la technologie de stockage d'objets pour la pratique industrielle des grandes données, mais le magasin d'objet lui-même est pas un concept nouveau, presque tous les principaux fournisseurs de services de cloud public ont leur propre service de stockage d'objets. nous décrivons brièvement ici quelques-unes des fonctions et caractéristiques communes des services de stockage d'objets. Service de stockage d'objets commerciaux contiennent en général plus les prix et la politique de sécurité, les questions clés qui ne sont pas pris en compte dans le présent document. Cet article est plus préoccupé par la demande industrielle de grandes quantités de données objets stockés scénarios en fonction, ainsi que de rencontrer les éléments techniques dépendent de ces besoins.

  • AWS S3

AWS est des services de cloud public d'Amazon, S3 est son service de stockage d'objets. Chaque objet a clé Amazon S3, des données et des métadonnées, compatibles avec les concepts décrits. A S3, la clé est exprimée sous la forme d'un répertoire du système de fichiers de hiérarchie similaire, par exemple:

Photos / famille / 2019 / a.jpgDocs / travail / B.doc

Il ressemble à un chemin de système de fichiers Unix, mais il y a une différence, qu'il est le nom du seau pour commencer (comme les Photos ci-dessus et Docs est le nom d'un baril), plutôt que le système de fichiers Unix dans le répertoire racine « / ». Hiérarchie des système de fichiers convivial d'une manière similaire à organiser des objets de données, les utilisateurs peuvent même créer un dossier « » Bien sûr, ces dossiers uniquement sur la conception d'interaction, mais en fait juste une chaîne de hiérarchie clé.

Les métadonnées se compose de deux parties, Informations générales et Contenu personnalisé . Informations générales généré automatiquement par le système, comme la date de création d'objets et la taille de fichier, etc .; contenu personnalisé créé par l'utilisateur, sous la forme de mémoire de valeur clé. L'utilisateur peut obtenir les fichiers clés d'objet et de métadonnées. S3 permet également à l'utilisateur d'objets de marque avec l'étiquette (Tag), l'étiquette est également enregistrée sous la forme d'une valeur de clé, peut être obtenue par l'interface d'une liste d'objets d'étiquettes. Le but de l'étiquette est de faciliter les utilisateurs à des objets Classifier, mais ne prend pas en charge les données de l'objet S3 à filtrer par étiquette. Mais l'utilisation du service de récupération AWS qui crée automatiquement un nom de fichier d'index et métadonnées, dans l'article sont décrits en détail.

Pour une structuration des données (ou semi-structurées), tels que CSV, format JSON ou de parquet, S3 S3 Select appelé fonction de soutien. S3 Sélectionnez afin que les utilisateurs peuvent utiliser SQL pour obtenir l'objet, par exemple:

SELECT s._1, s._2 DE S3Object s OÙ s._3 >  100

Deux correspondant à l'extrait avant du sujet du format CSV S3Object, doivent également satisfaire à la condition de la troisième colonne est supérieure à 100.

AWS S3 est l'un des services de base, l'introduction d'une époque antérieure, le service de stockage ultérieur de l'objet a eu un impact profond. nuages de la Chine Tencent Ali et les fonctions cloud OSS COS et S3 sont proches, Openstack Swift est un service de stockage d'objets open source, qui fonctionnent de la même S3. En ce qui concerne la cohérence des données, S3, Swift et COS soutien cohérence à terme, le soutien OSS forte cohérence.

  • Azure Blob Storage

Microsoft Azure Blob est un objet de fournir des solutions de stockage de cloud public. AWS S3 et Azure Blob en utilisant le modèle de données similaires, alors que certains raffinement sur le scénario d'application. stockage Azure Blob prend en charge trois scénarios:

  • Bloc blobs: données d'objet pour la gestion de l'accès aléatoire, lecture et écriture généralement toute l'unité de fichier objet;
  • Append blobs: append dans le fichier (le append) opération a été optimisé pour une mémoire de journal similaire;
  • Page blobs: accès aléatoire au contenu du fichier a été optimisé pour les fichiers de disque dur virtuel de la machine virtuelle;

Azure Blob Outre l'accès au fichier a été la scène raffinée, mais soutient également Azure Search pour créer un index de données d'objet (Azure Search est un service de cloud public de Microsoft a lancé un service d'index général). Azure requêtes de recherche peuvent utiliser des fichiers stockés dans Azure Blob et accéder aux données en fonction des critères de recherche. soutient actuellement l'indexation des formats de fichiers, y compris PDF, documents Office, fichiers texte, JSON, CSV, et ainsi de suite. Si les modifications de données indexées, Azure Search prend en charge l'index supplémentaire. Ainsi, par rapport au soutien AWS S3, Azure Blob un accès plus souple. Azure Blob soutient une forte cohérence des données.

  • Google Cloud Storage

Google service de stockage Cloud Storage est l'objet de Google, son modèle de données et l'AWS S3 De même, il n'y a pas de scène de stockage Azure Blob panne de données. Et Azure Blob est similaire à Google Cloud Storage prend en charge l'utilisation BigQuery l'indexation et la requête, quelques-uns des principaux types de support données structurées, telles que CSV, JSON, Avro et ainsi de suite. données Google Cloud Storage soutiennent la cohérence éventuelle.

  • Résumé de l'état

service de stockage d'objets est un système de stockage standard fournit la plate-forme de cloud public, en général, conformément à la clé cible + données + modèle de métadonnées de données, mais dans les détails de mise en uvre légèrement différentes. Sur l'accès aux données, Azure Blob et Google Cloud Storage En plus d'appuyer la clé d'accès, et prend également en charge le service d'indexation est utilisé conjointement avec - contenu de données objet de requête ou d'indexation des métadonnées. La plupart stockage d'objets, l'opération d'accès aux données de l'objet dans son ensemble, et supporte en outre les données d'objet Azure blob lu et les opérations d'écriture (à savoir append blobs et page blobs). En ce qui concerne la cohérence, la plupart des objets support de stockage cohérence éventuelle, et Azure Blob et Ali OSS soutiennent une forte cohérence.

Objet Design de stockage

  • stockage d'objets de scénario de la demande industrielle

scénario industriel, les données d'objet source de données est un équipement en général, pour lesquels l'utilisateur final ne sont pas les mêmes que les applications Internet. Par exemple, dans une application de réseautage social, nous pouvons utiliser le stockage d'objets pour enregistrer les photos des utilisateurs de photos et raccourcis clavier identifiant utilisateur général, les données d'objet lues à partir de la clé point de distribution de vue est généralement aléatoire, la plupart des opérations seulement l'accès id correspondant à une donnée particulière (par exemple, la lecture de la chronologie de photo d'un utilisateur), où l'accès identifiant à travers de multiples relativement faible. Mais dans le scénario industriel, nous considérons que les données individuelles relativement faible pour un dispositif spécifique, et plus est d'obtenir des données pour tous les objets de données remplissent certaines conditions sur une période d'analyse du temps.

Considérons un scénario spécifique, nous supposons que le fichier enregistrement de défaut 10000 éoliennes produisent, et nous espérons que grâce à l'analyse souvent répondre:

  • La fréquence des différents types de défaillance du ventilateur sont les mêmes?
  • La fréquence de défaillance de la production de différents lots du même ventilateur de modèle se produire?
  • Avec certains types de ventilateurs ont grandi changements de temps dans son taux d'échec?
  • Quels sont les mauvais fonctionnement du ventilateur des caractéristiques différentes zones géographiques?
  • La répartition des différents types d'échec?

les données d'objets peuvent être organisés en une hiérarchie par une clé d'objet système de fichiers similaire, il est encore difficile de filtrer facilement les données d'objet pour l'analyse (par exemple, pour répondre aux questions ci-dessus). Dans la discussion du statu quo, Azure Blob et Google Cloud Storage fournit également un ajout important au service d'indexation, le service d'indexation, mais est indépendant du magasin d'objets, le délai entre l'index et les données sans garantie. De plus, certaines fonctionnalités ne sont pas pris en charge dans le pays, comme AWS Search. considérations multidisciplinaires, nous avons décidé de concevoir et mettre en uvre des services de stockage d'objets pour la scène industrielle.

  • = + Données d'objets du modèle de données de métadonnées

Tout d'abord, nous considérons un modèle plus approprié pour récupérer l'objet de données, il peut être décrit comme la figure.

En général, le modèle de données d'objet de métadonnées ne fonctionne que pour compléter, mais notre objet dans le modèle de données:

cible métamodèle key = + + pointeur de données complément des informations générales +

Ceci est la plus grande différence entre nous et d'autres objets destinés à stocker le magasin d'objets. Les métadonnées comprennent non seulement les objets clés, y compris également le contenu défini par l'utilisateur peut être qualifié en fonction de données d'objet à filtrer le contenu personnalisé.

Plus précisément, l'objet de métadonnées contient une pluralité de colonnes (colonne): dans laquelle certaines des colonnes sont appelés id de colonne (id-colonne), correspondant à la combinaison de ceux-ci Clés d'objet ; Contenu personnalisé Définir des données associées aux informations d'objet par un utilisateur; colonne d'informations générales enregistre l'objet de données statistiques, telles que la taille et le temps de création de l'objet. Panne du ventilateur pour stocker le fichier généré à titre d'exemple, les métadonnées peuvent être les suivantes:

où:

  • = Clé objet id éolienne id +
  • = Temps d'enregistrement du type de contenu personnalisé + + + code d'erreur Coordonnées
  • Informations générales created = taille +

pointeurs de données pour mémoriser la position des données cibles d'enregistrement, si les données d'objet stockées dans un certain système de fichiers, par exemple les HDFS, alors la forme du pointeur peut être hdfs: // nameservice1: port / chemin / vers / données, donc en théorie les données d'objet peut être stockée dans un système.

Le tableau ci-dessus ressemble à un ensemble de données relationnelles typiques, le type de données de la colonne peut être une chaîne, entier, flottant ou la date. Un pas tout à fait au même endroit avec les métadonnées d'objet de schéma de données relationnelle peut changer fréquemment. Bien que le modèle relationnel permet également la modification du schéma de données, mais les modifications du schéma du coût d'une grande quantité de données est très grande, il est plus approprié pour le stockage des métadonnées sont certains moteurs de stockage NoSQL, par exemple ElasticSearch.

Dans un tel modèle de données, les données de consommation moyenne est de filtrer l'objet de méta-données en fonction de certaines conditions, pour obtenir une liste à être lue après que les données correspondant au pointeur de données. Par exemple, dans l'exemple ci-dessus, nous pouvons trouver toutes les données générées conformément à une éolienne et id id éolienne, trouver toutes les données, ou certains types de défaillances. Une autre utilisation importante est de ne consommer que les objets métadonnées, par exemple, nous pouvons compter sur l'histogramme du défaut au cours du mois passé. Cela se compare à lecture seule les données d'objet sur la base de la méthode d'accès clé de données connues est beaucoup plus flexible.

  • architecture du système

Nous donnons une référence ici sur la base HDFS et ElasticSearch, l'architecture du système, comme indiqué sur la figure. Lire et demande d'écriture de l'utilisateur par le biais d'équilibrage de charge pour distribuer une station de serveur REST spécifique, les suppressions changent la mise en uvre de la logique de contrôle de fonctionnement des objets dans le reste stocké dans le service, appel à la logique de fonctionnement en fonction de la composition des services sous-jacents. Trois actions sous-jacentes de stockage sont:

  • définition de schéma MySQL pour stocker des objets de méta-données;
  • métadonnées ElasticSearch pour le stockage et l'extraction d'objets;
  • HDFS pour stocker des données d'objet;

Dans ce métadonnées cadre et les objets de données d'objet sont stockées en tant que multiples de sauvegarde et de support pour HA (High Availability), et le service REST prend également en charge HA, de sorte que l'ensemble du support de service de stockage d'objets HA, et peut être étendue en fonction du niveau de charge .

Les utilisateurs généralement scénarios d'utilisation sont les suivants:

1. Modélisation des données: définition de métadonnées objet considéré, en particulier lorsque le contenu de conception clé de l'objet et les métadonnées personnalisées, par exemple, dans l'exemple précédent la conception clé de l'objet utilisateur (id vent, id ventilateur) et du contenu personnalisé (temps d'enregistrement, modèle, la latitude et la longitude, le code d'erreur). Chaque objet est un type d'objet de données noté (classe d'objet), gérer les types d'objets de service de stockage d'objets multiples;

2. Les données sont écrites: l'utilisateur de l'interface REST appelle l'écriture de l'objet, comprend l'auteur de deux pièces, à savoir, les données de métadonnées et de l'objet à chaque fois. Si et seulement si les métadonnées et les données objet après la fin de l'écriture de la première opération d'écriture ne peut pas revenir avec succès à l'utilisateur;

3. Modifications et suppression des données: L'utilisateur peut modifier le contenu d'un objet, tels que la mise à jour de la valeur d'un champ dans les métadonnées, ou mettre à jour les données d'objet. Avant de lancer une demande de mettre à jour les besoins des utilisateurs pour fournir une clé d'objet unique pour déterminer l'objet est modifié, il a également des moyens que les clés d'objet eux-mêmes ne peuvent pas être modifiés. Les objets supprimés peuvent être considérés comme une mise à jour spéciale de la scène;

4. Récupération des données et lire: L'utilisateur peut récupérer un type d'objet des métadonnées d'objets dans les colonnes, pour obtenir un ensemble de métadonnées à la liste des éligibles. Étant donné que les métadonnées contient un pointeur pointant vers les données d'objet, l'objet peut être lu pour les transactions ultérieures;

À ce stade, nous savons que le processus d'utilisation d'un service de stockage d'objets, à la suite des discussions approfondies sur certains points techniques.

  • Techniques 1: opération d'écriture atomique

un service de stockage de l'objet dans la section précédente, un objet comprend à la fois des objets de données, les métadonnées comprenant en outre. Dans la réalisation de l'objet d'une opération d'écriture, la nécessité d'assurer la cohérence des deux parties, que les données d'objet et de métadonnées pour l'utilisateur doivent être intégrés ou opération d'écriture est de nature atomique, reflétée dans:

  • Processus d'écriture ou la suppression d'un objet, il ne devrait pas exister à un moment donné pour que les utilisateurs ne peuvent lire les données d'objet d'objet ou métadonnées;
  • Mettre à jour un objet du processus, il ne devrait pas être un point dans les métadonnées de l'objet et des incohérences de données objet, telles que les métadonnées est nouveau, mais l'objet est d'anciennes données, et vice-versa;

Pour atteindre l'objet ci-dessus, l'objet de processus comme indiqué ci-dessous:

Il peut être divisé en deux étapes, d'abord des données d'objet copié à partir d'un objet extérieur de l'objet stocké dans le service de stockage interne, puis copier les métadonnées de l'objet pour le service de stockage. Sur la surface, toujours première marque de métadonnées de contrôle dans la figure 1 pour l'incohérence se produit, ce magasin d'objets uniquement les données d'objet sans métadonnées, mais étant donné que nous avons lu les données, l'utilisateur ne peut pas voir au moment à ces données d'objet. Que ce soit des données de métadonnées ou un objet, nous sommes une copie du stockage d'objets interne, vous ne devez pas utiliser l'opération de transfert; En outre, les données sont copiées dans aucune mémoire interne de l'objet cible plus conserver le nom du fichier d'origine, mais le fichier à la place d'un produit au hasard le nom pour éviter les conflits.

Ce qui précède décrit dans l'hypothèse implicite - copie des métadonnées de l'extérieur vers l'intérieur du processus lui-même est atomique, à savoir, il n'y a pas un instant que l'utilisateur peut voir les métadonnées n'a pas été terminé. Dans notre conception de référence, les méta-données d'objet est stocké dans ElasticSearch, garantit écriture atomique un record, mais en fait la plupart des services de base de données supportent un seul atome d'au moins l'opération d'enregistrement. Notez que les données d'objet copiés ne sont pas nécessaires pour répondre aux exigences des atomes, il est un système de fichiers général peut être utilisé pour des objets de données du magasin.

Ici, nous considérons le processus de supprimer, comme indiqué ci-dessous:

Retirez les métadonnées écrites en deux étapes, d'abord marquer l'objet à supprimer est supprimé, il n'est pas visible aux utilisateurs extérieurs, mais toujours garder à l'ElasticSearch dans, puis supprimez l'objet des données physiques et des métadonnées. Le but marqué pour la suppression dans la section suivante sur la gestion des conflits lors de leur déploiement. Un détail de la mise en uvre est lorsque vous supprimez un objet dans l'image ci-dessus physique (marque 2), vous devez supprimer les données d'objet, supprimez les métadonnées, les données d'objet ne peut pas être éviter le nettoyage se produit lorsqu'une défaillance du système. La suppression est conforme aux exigences de l'atomicité, ce qui est une opération d'écriture est la même raison.

Mettre à jour un objet peut être divisé en deux situations:

  • mises à jour uniquement le contenu objet des métadonnées personnalisées;
  • Mise à jour des données d'objet, ce qui signifie généralement les métadonnées changera, comme la taille des données statistiques;

Dans le premier cas, l'opération de mise à jour atomique ne dépend que du support ElasticSearch mise à jour atomique, aucune attention supplémentaire. Dans ce dernier cas est similaire à l'objet de processus écrit trois étapes:

  • Étape 1: Copiez les nouvelles données d'objet aux magasins d'objets;
  • Étape 2: cible de métadonnées de contenu de mise à jour et les métadonnées dans le pointeur de données vers les nouvelles données de l'objet (cette étape est elle-même atomique);
  • Étape 3: Supprimer les données d'objets d'origine vers un espace libre;

Et le principe d'écriture est similaire à la dernière mise à jour est atomisée, mais il y a un détail technique ici - comment faire en sorte que nous pouvons supprimer les anciennes données d'objet? Entre les étapes 2 et 3 ne sont pas interchangeables, sinon il y aura un moment donné, l'utilisateur peut interroger les objets de métadonnées, mais ne peut pas trouver les données d'objet. Par conséquent, si un défaut se produit dans le système après l'étape 2, comment pouvons-nous connaître les anciennes données objet Où? Notez que cette fois les points de pointeur de données vers le nouvel objet a des données. Pour résoudre ce problème, à l'étape 2, nous avons besoin de sauver l'ancien pointeur de données vers le bas (par exemple, le journal est écrit avant d'écrire), même si le système échoue, nettoyer les anciens services de récupération de données objet avant.

Cette section décrit les détails d'une atomicité de l'opération mise en uvre de la technologie d'écriture, chaque opération d'écriture est divisée en plusieurs étapes, il est nécessaire lors de la mise en uvre WAL pour assurer un fonctionnement transactionnel. Lorsque le service redémarre après une défaillance du système, peuvent être traitées conformément à la transaction n'a pas été terminée avant le journal d'écriture.

Note: Notre implémentation de référence basée sur ElasticSearch, dans ElasticSearch où vous pouvez soutenir la mise en uvre d'un script lors de la mise à jour d'un enregistrement, et l'ensemble du processus de mise en uvre est atomique. Cette basée sur les caractéristiques, les données peuvent pointeur dans les métadonnées de l'objet a changé l'ancien pointeur d'enregistrement à un tableau de métadonnées en soi, éliminant ainsi la nécessité de compter sur le WAL enregistrement des ennuis.

  • Techniques 2: écrire la résolution des conflits

Lire et conflits d'écriture lors de l'écriture d'un objet, ou l'apparition simultanée d'une lecture-écriture. Nous examinons le processus d'écriture de données, les données sont toujours la première à traiter, puis les métadonnées de traitement, le processus de lecture des données est d'abord lire les métadonnées, puis obtenir les données d'objet. Donc, lire et les conflits d'écriture objet ne se produit sur les opérations associées aux métadonnées. Par exemple, lors de l'écriture du même objet en deux objets clés, des mesures concrètes conflit possible est la clé des deux côtés en même temps d'écriture le même enregistrement à ElasticSearch (ElasticSearch a également concept clé, quand nous atteindrons dans la ElasticSearch clé il est défini comme un objet d'obligations de chaîne). ElasticSearch interne à l'aide MVCC (Multi-versionné Contrôle d'accès simultané) mode de traitement des conflits, lorsque la même touche d'enregistrement simultanément est écrit deux, l'un qui échouera. Ainsi, si les métadonnées se produit précisément lorsque l'écriture de deux objets identiques écriture de la clé objet de conflit, alors l'un d'entre eux un échec se produit.

Une lecture de la situation un peu plus compliqué à écrire, ne peut pas être complètement résolu par ElasticSearch. Cela complique le processus de lecture de l'objet principal est divisé en deux étapes, à savoir d'obtenir les métadonnées, les données d'objet re-lecture. En réalité, entre ces deux phases peuvent être séparées par une plus longue période de temps, par exemple, nous avons d'abord obtenir un ensemble de liste de métadonnées de l'objet en fonction d'une requête, puis on (par exemple MapReduce ou Spark) dans les données d'objets de consommation dans certains parallèles cadre calcul . Si, après les métadonnées get, les données de l'objet avant la consommation, nous modifions les données d'objet ce qui se passera? Par exemple, avant que les données de consommation que nous avons mis à jour les données d'objet. approche raisonnable est que les utilisateurs peuvent encore lire les données d'objet avant de mettre à jour les métadonnées ont été acquises, mais pas lire les nouvelles données d'objet (car il ne correspond pas à). En outre, les données ne peuvent pas être parce que l'objet a été mis à jour pour renvoyer une erreur, ou un grand nombre d'applications pour les données de consommation unique des objets de la scène, l'échec fréquent peut se produire. Dans la section ci-dessus l'opération d'écriture atomique, Que ce soit pour mettre à jour ou de suppression, nous faisons toujours la première marque, puis supprimer physiquement les données d'objet après un délai. Cette fois-ci devrait être assez longtemps pour faire en sorte que la plupart des mises à jour avant l'opération de lecture est terminée, en même temps, le système a besoin de maintenir un processus en fonction du temps de jeu suppression de données objet de retard a été marqué.

  • Point de technique 3: Cohérence discussion

De l'analyse précédente des opérations atomiques, nous pouvons voir la cohérence du service de stockage d'objets est en fait décision partagée par les métadonnées stockées. Autrement dit, si nous pouvons faire les métadonnées stockées une forte cohérence, l'objet est forte cohérence du service. Nous utilisons ElasticSearch pour stocker les métadonnées, donc ici ElasticSearch besoin de discuter de la question de la cohérence. la cohérence ElasticSearch il a été floue (voir https://www.elastic.co/guide/en/elasticsearch/resiliency/current/index.html), ainsi que l'escalade de la version, l'équipe de développement pour tenter de réduire certains des problèmes connus .

D'une manière générale de ElasticSearch devrait appartenir à l'accord final (cohérence dans le temps), mais peut avoir une consistance d'un comportement fort « proche » par quelques ajustements. Nous ajustons la configuration de ElasticSearch comprennent:

  • Préférentiellement lire les données à partir du noeud principal;
  • Le nombre de noeuds dans l'ensemble actif de l'opération d'écriture est pas inférieur à n / 2, où n représente la taille de la grappe ElasticSearch;
  • nuds actifs du cluster Si moins de n / 2 arrêt des services externes;
  • opération de rafraîchissement de l'application avant de lire les données, assurez-vous de lire avant une opération d'écriture a eu lieu en dehors du visible;

Si vous voulez en profondeur la compréhension du sens de la configuration ci-dessus nécessite des lecteurs ElasticSearch ont plus de compréhension, mais Bref, nous espérons que chaque opération d'écriture peut couvrir la majorité des nuds du cluster, et chaque lecture est un peu noeud sélectionné du leader (En général, premier noeud est écrit). Bien que cela ne peut pas garantir la cohérence forte, mais pour faire en sorte que dans la plupart des cas, ElasticSearch forte performance externe proche de la cohérence que nous avons lu les dernières données sont toujours écrites.

D'après notre discussion précédente de l'architecture, ElasticSearch pas le seul sélectionnable de métadonnées de stockage d'objets. Nous avons choisi ElasticSearch est la valeur de ses puissantes capacités de recherche, mais s'il y a des exigences très strictes pour la cohérence, vous pouvez également sélectionner un autre stockage.

Remarque: Nous avons réalisé dans le stockage des métadonnées à base MySQL précoce, le plus gros problème auxquels ils sont confrontés sont les modifications de schéma apportées énorme coût, de temps et trop grand dans la mise en uvre de certaines de l'opération de polymérisation.

  • Techniques: 4 fichiers de fusion

services de stockage d'objets ont souvent besoin de stocker de grandes quantités de données d'objet, et ces données seront stockées dans le système de fichiers sous-jacent en tant que fichier. S'il y a un grand nombre de petits fichiers, le système de fichiers peut entraîner une efficacité réduite. Par exemple, dans HDFS, la taille de chaque bloc est généralement 64M (ou 128M), l'un correspondant du bloc d'inode, à savoir, une mémoire enregistrant le NameNode HDFS. Même alors un petit fichier, dans HDFS occupe toujours l'un inode, de sorte qu'un grand nombre de petits fichiers apportera la pression de mémoire NameNode. Si nous pouvons fusionner de petits fichiers dans des fichiers volumineux, vous pouvez réduire le taux d'occupation des fichiers objet inode, facilitant ainsi la pression sur la mémoire, c'est le point de départ pour la fusion des fichiers. Si le système de fichiers sous-jacent n'est pas Linux, mais le système de fichiers de HDFS locale inode est une certaine limite, il y aura un problème correspondant.

Une idée de document est de fusionner l'objet en une pluralité de sections dans l'ordre chronologique, pour tous les objets de fichiers de données d'objets dans chaque section dans un grand dossier. Les métadonnées pour chaque objet contient sa date de création, le moment où l'objet est créé est générée automatiquement par le système. mise à jour ultérieure de cet objet ne change pas le temps de créer un objet, cette propriété est très importante. Supposons que nous fixons la gamme de taille de 1 heure, puis divisé par l'intervalle de temps est la suivante:

..., (8: 00,9: 00>, (9: 00,10: 00> ...

A intervalles (8: 00,9: 00> par exemple, tombent dans cet objet données d'intervalle de temps de création pour tous les objets seront fusionnés en un seul gros fichier, ses métadonnées dans les points de pointeur à une partie d'un fichier volumineux, le particulier il comprend:

  • Grand nom de fichier du fichier;
  • Décalage dans un grand fichier de données objet;
  • longueur des données cibles;

Les trois informations ci-dessus, nous pouvons lire les données correspondantes d'un grand fichier objet. fusion de fichiers a eu lieu après que l'objet a été des services d'objet écrit, comme dans l'exemple ci-dessus (8: 00,9: 00> consolidation des données dans un certain intervalle se produit après 9h00, et opérations de fusion de fichiers doit être transparente pour l'utilisateur . En d'autres termes, le document processus de fusion, l'utilisateur ne doit pas percevoir les données d'objet sous-jacents sont combinés, et l'opération combinée n'affectera pas l'opération d'écriture de l'utilisateur. A cette fin, les étapes combinées comprennent:

  • Étape 1: Les petits fichiers à fusionner dans un grand dossier;
  • Étape 2: Tous les objets sont fusionnés actualisent séquentiellement de métadonnées, de telle sorte qu'une grande partie du pointeur vers le fichier;
  • Étape 3: petits Supprimer les fichiers ont été combinés à l'espace nettoyage;

Pour tout objet, l'objet est similaire à l'opération au cours de laquelle l'opération de mise à jour, bien que dans l'étape 2 pour mettre à jour les métadonnées de l'objet ne peut pas supporter les mises à jour de traitement par lots (par exemple, la mise à jour est contenu dans une transaction atomique), mais à tout moment l'utilisateur à l'extérieur il voit sont les dernières données de l'objet. Si l'opération d'écriture au cours des conflits de fusion, suivi précédemment discuté des conflits de manipulation excessive, dans lequel une erreur - en supposant 100 concerne un fichier objet combiné, et dans lequel un conflit depuis l'écriture échoue, le 99 restant avec succès, le combiné après les 100 petits fichiers d'origine deviendra un gros fichier (contenant 100 objets de données) plus 1 petit fichier (contenant le résultat combiné du conflit conduit à l'échec d'une donnée d'objet). Vous pouvez voir qu'en raison du conflit a causé une certaine redondance des données, mais la probabilité de collisions en utilisation normale est très faible, de sorte que de petites quantités de redondance des données peuvent être tolérées. processus de fusion de fichier comme indiqué ci-dessous:

fusion de fichiers va créer une redondance des données. Si, après le document de fusion, une partie des données d'objet a été mis à jour, les données d'origine de l'objet à supprimer est maintenant devenu une partie de gros fichiers, et du gros fichier de la partie, ce qui équivaut à un objet qui n'a pas été mis à jour données récrire à nouveau, et mettre à jour le pointeur de données correspondant. Il est clair que, en raison du fichier combiné, mettre à jour un grand objet de données ont été prix combiné.

En fait, dans la scène industrielle, la plupart des cas sont en écriture objet, et des scènes de mise à jour se produisent rarement (à la différence des objets stockés dans les scénarios d'application Internet), donc dans le cas de très faible proportion de la mise à jour, nous pouvons tolérer gros fichier en petites quantités de données a échoué, mais conserve encore apporter une redondance en tête.

Remarque: Si la mise à jour de cas réel fréquemment, vous pouvez prendre certaines stratégies pour optimiser les opérations de suppression fusionner des fichiers. Par exemple, on peut d'abord compter un grand nombre de contenu du fichier a expiré, si et seulement si une forte proportion d'échec quand il est en fait une opération de suppression.

résumé

Cet article décrit la pratique de la conception des services de stockage d'objets industrie orientée vers les grandes données. Après analyse de la scène, nous avons constaté que la situation de la demande et les objets de la scène Internet stockés sous la scène industrielle ne sont pas les mêmes, en particulier pour la cible de recherche a mis en avant des exigences plus élevées. Pour répondre à cette exigence, nous renforçons le rôle des métadonnées de conception du modèle de données, changer les habitudes de consommation des objets de données, une nouvelle architecture de système de service de stockage d'objets, associés à la mise en uvre de la technologie de référence ElasticSearch + HDFS qui sont discutés en détail les points, espèrent fournir une référence aux objets stockés dans les grands services de données pour le design industriel et de développement personnel.

- FIN -

attention Tsinghua - données Académie des sciences de Qingdao plate-forme publique micro-canal officiel " données d'envoi THU « Sisters et n ° » Les données envoyées THU « Pour plus de conférences et de bien-être contenu de qualité.

cerise mûre
Précédent
« La confirmation officielle: Robin Li est l'IA »
Prochain
Pékin Sandstorm les zones touchées contrôlent soigneusement l'ancienne oasis « bunker terrain vague »
Big Data @ vous! « Double hit » Mise à jour des moments forts ici
La beauté de l'été de la Mongolie
Le voyage en train à la première personne!
« Les petites jambes épaisses » à l'été comment le porter jambes sensiblement minces? Votre choix robe non seulement
Jeune convergence pour maintenir avec succès ces bonnes habitudes le plus important
Senior Year, nous arrivons à un souvenir d'école
Hanting District High Street dans le succès de la deuxième session de la dégustation de melon Assemblée générale
Mailing 200+ armes à feu! Fujian cinq hommes « canons américains » de la
Avec 160000 liquidités pour rembourser la cour pour son fils, les parents âgés ont une seule demande: continuer expédié arrestation!
Tengzhou voir les champs agricoles d'été
Poster: Deli arbre Hurt à la fin ne peut pas être sous