dimanche 29 janvier 2017

Sqoop


Sqoop est une application d'interface de ligne de commande pour le transfert de données entre les bases de données relationnelles et Hadoop. [1] Il prend en charge les charges incrémentielles d'une table unique ou d'une requête SQL libre ainsi que des tâches enregistrées qui peuvent être exécutées plusieurs fois pour importer les mises à jour effectuées dans une base de données depuis la dernière importation. Les importations peuvent également être utilisées pour remplir des tables dans Hive ou HBase. [2] Les exportations peuvent être utilisées pour mettre des données de Hadoop dans une base de données relationnelle. Sqoop a obtenu le nom de sql + hadoop. Sqoop est devenu un projet Apache de haut niveau en mars 2012. [3]

Informatica Big Data Management fournit un connecteur basé sur Sqoop [désambiguïsation nécessaire] à partir de la version 10.1. Informatica prend en charge à la fois Sqoop Import et Export, qui est souvent utilisé avec les cas d'utilisation Data Integration sur Hadoop.

Pentaho propose des étapes de connexion basées sur Sqoop, Sqoop Import [4] et Sqoop Export, [5] dans leur suite ETL Pentaho Data Integration depuis la version 4.5 du logiciel. Microsoft utilise un connecteur basé sur Sqoop pour aider à transférer des données à partir des bases de données Microsoft SQL Server vers Hadoop. Couchbase, Inc. fournit également un connecteur de Couchbase Server-Hadoop au moyen de Sqoop. [8]

En 2015 Ralph Kimball a décrit Sqoop comme suit sous le titre L'avenir de ETL: [9]

Plusieurs changements importants doivent avoir lieu dans l'environnement ETL. Tout d'abord, les flux de données provenant de sources d'origine doivent supporter des largeurs de bande énormes, au moins gigaoctets par seconde.

Apache Oozie


Apache Oozie est un système de planification de workflow basé sur serveur pour gérer les jobs Hadoop.

Les flux de travail à Oozie sont définis comme une collection de noeuds de flux de contrôle et d'action dans un graphe acyclique dirigé. Les nœuds de flux de contrôle définissent le début et la fin d'un workflow (nœuds de début, de fin et de défaillance) ainsi qu'un mécanisme permettant de contrôler le chemin d'exécution du workflow (noeuds décision, fork et join). Les nœuds d'action sont le mécanisme par lequel un workflow déclenche l'exécution d'une tâche de calcul / traitement. Oozie prend en charge différents types d'actions, notamment Hadoop MapReduce, Hadoop distribué système de fichiers de fonctionnement, Pig, SSH et e-mail. Oozie peut également être étendu pour prendre en charge d'autres types d'actions.

Les flux de travail Oozie peuvent être paramétrés à l'aide de variables telles que $ {inputDir} dans la définition de workflow. Lors de la soumission d'une tâche de workflow, les valeurs des paramètres doivent être fournies. Si correctement paramétré (en utilisant différents répertoires de sortie), plusieurs travaux de workflow identiques peuvent s'exécuter simultanément.

Oozie est implémenté comme une application web Java qui s'exécute dans un conteneur de servlets Java et est distribué sous la licence Apache 2.0.

Apache Kafka



Apache Kafka est une plate-forme de traitement de flux open-source développée par Apache Software Foundation écrit en Scala et Java. Le projet vise à fournir une plate-forme unifiée, à haut débit et à faible latence pour gérer les flux de données en temps réel. Sa couche de stockage est essentiellement une «file d'attente de messages publicitaires massivement évolutive conçue comme un journal de transactions distribuées», ce qui rend très précieux pour les infrastructures d'entreprise le traitement des données en continu. En outre, Kafka se connecte à des systèmes externes (pour l'importation / exportation de données) via Kafka Connect et fournit Kafka Streams, une bibliothèque de traitement de flux Java.

La conception est fortement influencée par les journaux de transactions.
Apache Kafka a été initialement développé par LinkedIn et a ensuite été ouvert au début de 2011. Graduation de l'incubateur Apache a eu lieu le 23 Octobre 2012. En Novembre 2014, plusieurs ingénieurs qui ont travaillé sur Kafka chez LinkedIn a créé une nouvelle entreprise nommée Confluent  Un accent sur Kafka.

Entreprises qui utilisent Kafka
Ce qui suit est une liste d'entreprises remarquables qui ont utilisé ou utilisent Kafka:

Walmart
Systèmes Cisco
Daumkakao
Netflix
Pay Pal
Spotify
Uber
Boutique
Betfair
Sift Science
HubSpot
CloudFlare
EBay

Apache Velocity



Apache Velocity est un moteur de modèle basé sur Java qui fournit un langage de modèle pour référencer des objets définis dans le code Java. Il vise à assurer une séparation nette entre le niveau de présentation et les niveaux d'entreprise dans une application Web (modèle de modèle-contrôleur-contrôleur).

Velocity est un projet de logiciel libre hébergé par Apache Software Foundation. Il est publié sous la licence Apache.

utilisation

Voici quelques types d'applications qui utilisent Velocity:

Applications Web: les concepteurs Web créent des pages HTML avec des espaces réservés pour des informations dynamiques. La page est traitée avec VelocityViewServlet ou l'un des nombreux cadres qui prennent en charge Velocity.
Génération de code source: Velocity peut être utilisé pour générer du code source Java, SQL ou PostScript, basé sur des modèles. Un certain nombre de logiciels libres et logiciels de développement commercial utiliser Velocity de cette manière. [1]
Emails automatiques: de nombreuses applications génèrent des courriels automatiques pour l'enregistrement de compte, des rappels de mot de passe ou des rapports envoyés automatiquement. Avec Velocity, le modèle de courrier électronique peut être stocké dans un fichier texte plutôt que directement intégré dans le code Java.
Transformation XML: Velocity fournit une tâche Ant, appelée Anakia, qui lit un fichier XML et la rend disponible pour un modèle Velocity. Une application commune consiste à convertir la documentation stockée dans un format générique "xdoc" en un document HTML stylé.
Exemple de code
Le modèle suivant:
## Velocity Hello World
<html>
    <body>
       #set( $foo = "Velocity" )
       ## followed by
       Hello $foo World!
    </body>
</html>
processed by Velocity produce the following HTML:
<html>
    <body>
     Hello Velocity World!
    </body>
</html>
La syntaxe et le concept global des modèles Apache Velocity est similaire à la syntaxe du moteur de modèles WebMacro plus ancien, qui est maintenant également un projet open source
Apache Flume

Apache Flume

Afficher l'image d'origine

Agent component diagram

Apache Flume est un service distribué, fiable et disponible pour collecter, regrouper et déplacer efficacement de grandes quantités de données de journal. Il possède une architecture simple et flexible basée sur les flux de données en flux continu. Il est robuste et tolère les pannes avec des mécanismes de fiabilité accordables et de nombreux mécanismes de reprise et de reprise. Il utilise un modèle de données extensible simple qui permet l'application analytique en ligne.
L'équipe Apache Flume est heureuse d'annoncer la sortie de Flume 1.6.0.

Flume est un service distribué, fiable et disponible pour collecter, regrouper et déplacer efficacement de grandes quantités de données d'événements en continu.

La version 1.6.0 est la neuvième sortie de Flume en tant que projet de haut niveau Apache. Flume 1.6.0 est un logiciel stable, prêt à la production, et est compatible avec les versions précédentes de la Flux 1.x.

Plusieurs mois de développement actif sont entrés dans cette version: 105 correctifs ont été commis depuis la version 1.5.2, ce qui représente de nombreuses fonctionnalités, améliorations et corrections de bugs. Alors que le journal complet des changements peut être trouvé sur la page de la version 1.6.0 (lien ci-dessous), voici quelques nouveautés:

Flume Sink et Source pour Apache Kafka
Un nouveau canal qui utilise Kafka
Hive Sink basé sur le nouveau support Hive Streaming
Authentification de bout en bout dans Flume
Intercepteur simple de recherche et de remplacement de regex
Le journal complet des modifications et la documentation sont disponibles sur la page de version de Flume 1.6.0.

vendredi 27 janvier 2017

apache avro

apache avro

Résultat de recherche d'images pour "apache avro"

Avro est un appel de procédure à distance et une structure de sérialisation de données développée dans le projet Hadoop d'Apache. Il utilise JSON pour définir les types de données et les protocoles, et sérialise les données dans un format binaire compact. Son utilisation principale est Apache Hadoop, où il peut fournir à la fois un format de sérialisation pour les données persistantes, et un format fil pour la communication entre les noeuds Hadoop, et des programmes clients aux services Hadoop.

Il est semblable à Thrift, mais ne nécessite pas d'exécuter un programme de génération de code quand un schéma change (sauf si désiré pour les langues statiquement-typées).

Apache Spark SQL peut accéder à Avro en tant que source de données.
Un fichier conteneur d'objets Avro se compose de:

Un en-tête de fichier, suivi de
Un ou plusieurs blocs de données de fichier.
Un en-tête de fichier se compose de:

Quatre octets, ASCII 'O', 'b', 'j', suivis de 1.
Des métadonnées de fichier, y compris la définition du schéma.
Le marqueur de synchronisation de 16 octets, généré de façon aléatoire pour ce fichier.
Pour les blocs de données Avro spécifie deux encodages de sérialisation: [3] binaire et JSON. La plupart des applications utilisent le codage binaire, car il est plus petit et plus rapide. Pour le débogage et les applications Web, l'encodage JSON peut parfois être approprié.
Définition du schéma
Les schémas Avro sont définis à l'aide de JSON. Les schémas sont composés de types primitifs (null, boolean, int, long, flottant, double, octets et chaîne) et des types complexes (record, enum, array, map, union et fixed).

Exemple de schéma simple:
{
   "namespace": "example.avro",
   "type": "record",
   "name": "User",
   "fields": [
      {"name": "name", "type": "string"},
      {"name": "favorite_number",  "type": ["int", "null"]},
      {"name": "favorite_color", "type": ["string", "null"]}
   ] 
 }

Sérialisation et désérialisation
Les données d'Avro peuvent être stockées avec leur schéma correspondant, ce qui signifie que l'élément sérialisé peut être lu sans connaître le schéma à l'avance.

Exemple de code de sérialisation et de désérialisation en Python
Sérialisation:
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter

schema = avro.schema.parse(open("user.avsc").read())  # need to know the schema to write

writer = DataFileWriter(open("users.avro", "w"), DatumWriter(), schema)
writer.append({"name": "Alyssa", "favorite_number": 256})
writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"})
writer.close()

mardi 17 janvier 2017

Apache Hive



Apache Hive est une infrastructure d'entrepôt de données construite sur le dessus de Hadoop pour fournir la synthèse des données, la requête et l'analyse.  Hive fournit une interface SQL-like pour interroger les données stockées dans diverses bases de données et systèmes de fichiers qui s'intègrent avec Hadoop. Les requêtes SQL traditionnelles doivent être implémentées dans l'API MapReduce Java pour exécuter des applications et des requêtes SQL sur des données distribuées. Hive fournit l'abstraction SQL nécessaire pour intégrer les requêtes SQL (HiveQL) dans l'API Java sous-jacente sans avoir à implémenter de requêtes dans l'API Java de bas niveau. Comme la plupart des applications d'entreposage de données fonctionnent avec des langages de requête basés sur SQL, Hive supporte la portabilité facile de l'application basée sur SQL vers Hadoop [3]. Tout d'abord développé par Facebook, Apache Hive est maintenant utilisé et développé par d'autres sociétés telles que Netflix et le Financial Industry Regulatory Authority (FINRA).  Amazon maintient une fourchette logicielle d'Apache Hive incluse dans Amazon Elastic MapReduce sur Amazon Web Services.
La norme de facto pour les requêtes SQL dans Hadoop

Depuis son incubation en 2008, Apache Hive est considéré comme le standard de facto pour les requêtes SQL interactives sur des petabytes de données dans Hadoop.

Avec l'achèvement de l'Initiative Stinger et la prochaine phase de Stinger.next, la communauté Apache a considérablement amélioré la vitesse, l'échelle et la sémantique SQL de Hive. Hive s'intègre facilement avec d'autres technologies de centre de données critiques en utilisant une interface JDBC familière.

QU'EST-CE QUE
Hadoop a été construit pour organiser et stocker des quantités massives de données de toutes formes, tailles et formats. En raison de l'architecture «schema on read» de Hadoop, un cluster Hadoop est un réservoir parfait de données hétérogènes structurées et non structurées - à partir d'une multitude de sources.

Les analystes de données utilisent Hive pour interroger, synthétiser, analyser et analyser ces données, puis les transformer en informations opérationnelles.

Apache Pig

Apache Pig est une plate-forme de haut niveau pour la création de programmes exécutés sur Apache Hadoop. Le langage de cette plate-forme s'appelle Pig Latin.Pig peut exécuter ses travaux Hadoop dans MapReduce, Apache Tez ou Apache Spark. Pig Latin extrait la programmation de l'idiome Java MapReduce en une notation qui rend la programmation de MapReduce haut niveau, similaire à celle de SQL pour RDBMSs. Pig Latin peut être étendu à l'aide de fonctions définies par l'utilisateur (UDF) que l'utilisateur peut écrire en Java, Python, JavaScript, Ruby ou Groovy et ensuite appeler directement à partir de la langue.




Avec YARN en tant que centre d'architecture d'ApacheTM Hadoop, plusieurs moteurs d'accès aux données comme Apache Pig interagissent avec les données stockées dans le cluster. Apache Pig permet aux utilisateurs d'Apache Hadoop d'écrire des transformations MapReduce complexes en utilisant un langage de script simple appelé Pig Latin. Pig traduit le script Pig Latin en MapReduce afin qu'il puisse être exécuté dans YARN pour accéder à un ensemble de données stocké dans le système de fichiers distribué Hadoop (HDFS).

QU'EST-CE QUE LE Pig FAIT
Pig a été conçu pour effectuer une longue série d'opérations de données, ce qui le rend idéal pour trois catégories de travaux Big Data:

Les pipelines de données extrait-transformer-charger (ETL)
Recherche sur les données brutes, et
Traitement itératif des données.

lundi 16 janvier 2017

MongoDB





MongoDB est un programme de base de données libre et open source multi-plateforme orienté document. Classé comme un programme de base de données NoSQL, MongoDB utilise des documents au formats JSON avec des schémas. MongoDB est développé par MongoDB Inc. et est libre et open-source, publié sous une combinaison de la GNU Affero General Public License et de la Licence Apache.

Requêtes ad hoc
MongoDB prend en charge les requêtes de champ, de plage, d'expression régulière. [6] Les requêtes peuvent renvoyer des champs spécifiques de documents et inclure également des fonctions JavaScript définies par l'utilisateur. Les requêtes peuvent également être configurées pour renvoyer un échantillon aléatoire de résultats d'une taille donnée.

Indexage
Les champs d'un document MongoDB peuvent être indexés avec des indices primaires et secondaires.

Réplication
MongoDB fournit une haute disponibilité avec des ensembles de réplicas. [7] Un ensemble de réplicas se compose de deux copies ou plus des données. Chaque réplique peut jouer le rôle de réplica primaire ou secondaire à tout moment. Toutes les écritures et lectures sont effectuées sur le réplica principal par défaut. Les réplicas secondaires maintiennent une copie des données du primaire à l'aide de la réplication intégrée. Lorsqu'un réplica principal échoue, le jeu de répliques effectue automatiquement un processus d'élection pour déterminer quel secondaire doit devenir le premier. Les secondaires peuvent servir des opérations de lecture, mais ces données ne sont finalement compatibles que par défaut.

L'équilibrage de charge
MongoDB échelles horizontalement en utilisant le sharding. [8] L'utilisateur choisit une clé de fragmentation qui détermine comment les données d'une collection seront distribuées. Les données sont divisées en intervalles (basés sur la clé shard) et réparties sur plusieurs fragments. (Un shard est un maître avec un ou plusieurs esclaves.). Alternativement, la clé shard peut être hachée pour correspondre à un shard - ce qui permet une distribution de données égale.






peut fonctionner sur plusieurs serveurs, équilibrer la charge ou dupliquer des données pour maintenir le système en service en cas de panne matérielle.

Stockage de fichiers
MongoDB peut être utilisé comme un système de fichiers avec l'équilibrage de charge et des fonctionnalités de réplication de données sur plusieurs machines pour stocker des fichiers.

Cette fonction, appelée Grid File System, [9] est incluse avec les pilotes MongoDB. MongoDB expose des fonctions de manipulation de fichiers et de contenu aux développeurs. GridFS est utilisé dans les plugins pour NGINX [10] et lighttpd. [11] GridFS divise un fichier en parties, ou morceaux, et stocke chacun de ces morceaux comme un document distinct. [12]

Agrégation
MapReduce peut être utilisé pour le traitement par lots des données et des opérations d'agrégation.

Le cadre d'agrégation permet aux utilisateurs d'obtenir le type de résultats pour lesquels la clause SQL GROUP BY est utilisée. Les opérateurs d'agrégation peuvent être reliés ensemble pour former un pipeline - analogue aux canaux Unix. Le cadre d'agrégation comprend l'opérateur $ lookup qui peut joindre des documents à partir de plusieurs documents, ainsi que des opérateurs statistiques tels que l'écart-type.

Exécution JavaScript côté serveur
JavaScript peut être utilisé dans les requêtes, les fonctions d'agrégation (telles que MapReduce) et envoyé directement à la base de données à exécuter.

Collections plafonnées
MongoDB prend en charge les collections de taille fixe appelées collections coiffées. Ce type de collection conserve l'ordre d'insertion et, une fois la taille spécifiée atteinte, se comporte comme une file d'attente circulaire.

HBase


HBase est une base de données open source, non relationnelle, distribuée basée sur le modèle BigTable de Google et écrite en Java. Il est développé dans le cadre du projet Apache Hadoop Apache Software Foundation et fonctionne sur le dessus de HDFS (Hadoop Distributed File System), fournissant BigTable-comme les capacités pour Hadoop. C'est-à-dire qu'il fournit une manière tolérante aux pannes de stocker de grandes quantités de données éparses (de petites quantités d'informations capturées au sein d'une grande collection de données vides ou sans importance, comme trouver les 50 plus gros éléments d'un groupe de 2 milliards d'enregistrements ou trouver Les éléments non nuls représentant moins de 0,1% d'une énorme collection).

HBase comporte la compression, l'opération en mémoire et les filtres Bloom sur une base par colonne comme indiqué dans le papier BigTable d'origine.  Les tables de HBase peuvent servir d'entrée et de sortie pour les travaux MapReduce exécutés dans Hadoop et peuvent être accessibles via l'API Java, mais également via les API de passerelle REST, Avro ou Thrift. HBase est un magasin de données de valeur-clé orienté colonne et a été idolized largement en raison de sa lignée avec Hadoop et HDFS. HBase fonctionne au sommet de HDFS et est bien adapté pour des opérations de lecture et d'écriture plus rapides sur de grands ensembles de données avec un débit élevé et une faible latence d'entrée / sortie.
HBase n'est pas un remplacement direct pour une base de données SQL classique, cependant le projet Apache Phoenix fournit une couche SQL pour HBase ainsi qu'un pilote JDBC qui peut être intégré à diverses applications d'analyse et de business intelligence. Le projet Apache Trafodion fournit un moteur de requête SQL avec des pilotes ODBC et JDBC et une protection de transaction ACID répartie entre plusieurs instructions, tables et lignes qui utilise HBase comme moteur de stockage.

HBase dessert maintenant plusieurs sites Web basés sur des données, dont la plate-forme de messagerie de Facebook [4] [5] Contrairement aux bases de données relationnelles et traditionnelles, HBase ne prend pas en charge les scripts SQL; L'équivalent est écrit en Java, en utilisant la similarité avec une application MapReduce.

Dans le langage du théorème CAP de Eric Brewer, HBase est un système de type CP.

Zookeeper


Zookeeper
I propose to spend a little time together to discover Zookeeper which is regularly found as the cornerstone to make many open source projects distributable on several servers. The goal is to understand how Zookeeper works and to be able to use it as a developer.
Zookeeper's functionality includes Naming Service, configuration management, synchronization, Leader Election ... Zookeeper is actually a toolbox that you can use as soon as coordinating processes deployed on multiple servers becomes a case -head.
The plan of attack to approach Zookeeper will be the following:
How Zookeeper works and an overview of terms to know,
Install an instance of Zookeeper locally and ... realize that it's easy,
Install multiple instances of Zookeeper locally and ... find it easy

How Zookeeper Works and an Overview of Terms to Know

Zookeeper works by providing a memory space shared by all instances of a single set of Zookeeper servers. This memory space is hierarchical, in the manner of a file system made up of directories and files, with the difference that, in the case of Zookeeper, we do not speak of directories and files but of nodes. Each node is called a ZNode.
When starting a Zookeeper instance, the node hierarchy is empty and we have only one root node that, like file systems, is named "/":



dimanche 15 janvier 2017

MapReduce

MapReduce est un modèle de programmation et une implémentation associée pour le traitement et la génération de grands ensembles de données avec un algorithme distribué parallèle sur un cluster

Un programme MapReduce se compose d'une méthode Map () qui effectue le filtrage et le tri (comme le tri des étudiants par prénom en files d'attente, une file d'attente pour chaque nom) et une méthode Reduce () qui effectue une opération récapitulative Compter le nombre d'élèves dans chaque file d'attente, ce qui donne des fréquences de noms). Le «système MapReduce» (également appelé «infrastructure» ou «framework») orchestre le traitement en répartissant les serveurs répartis, en exécutant les différentes tâches en parallèle, en gérant toutes les communications et les transferts de données entre les différentes parties du système et en assurant la redondance Et la tolérance aux pannes.

Le modèle est inspiré par la carte et réduit les fonctions couramment utilisées dans la programmation fonctionnelle,  bien que leur but dans le cadre de MapReduce n'est pas le même que dans leurs formes originales. Les principales contributions du cadre MapReduce ne sont pas les fonctions de carte et de réduction réelles (qui, par exemple, ressemblent aux opérations de l'interface de transmission de messages 1995  reduce  and scatter ), mais l'évolutivité et la tolérance aux pannes Atteint pour une variété d'applications en optimisant le moteur d'exécution. En tant que tel, une implémentation unique de MapReduce ne sera généralement pas plus rapide qu'une implémentation traditionnelle (non-MapReduce); Les gains ne sont généralement observés que dans les implémentations multi-thread.  L'utilisation de ce modèle est bénéfique seulement lorsque le fonctionnement optimisé de la distribution aléatoire (qui réduit le coût de communication réseau) et la tolérance aux pannes du framework MapReduce entrent en jeu. Optimiser les coûts de communication est essentiel à un bon algorithme MapReduce.
MapReduce est un framework pour traiter des problèmes parallélisables à travers de grands ensembles de données utilisant un grand nombre d'ordinateurs (nœuds), collectivement appelés cluster (si tous les noeuds sont sur le même réseau local et utilisent du matériel similaire) ou grid (si les noeuds sont Partagés entre les systèmes géographiquement et administrativement distribués, et utilisent un matériel plus hétérogène). Le traitement peut se faire sur des données stockées dans un système de fichiers (non structuré) ou dans une base de données (structurée). MapReduce peut profiter de la localité des données, en la traitant près de l'endroit où elle est stockée afin de réduire la distance sur laquelle il doit être transmis.

Étape "Map": Chaque noeud de travail applique la fonction "map ()" aux données locales et écrit la sortie dans un stockage temporaire. Un noeud maître assure que seule une copie des données d'entrée redondantes est traitée.
Étape "Shuffle": Les noeuds de travail redistribuent les données en fonction des touches de sortie (produites par la fonction "map ()"), de sorte que toutes les données appartenant à une clé soient situées sur le même noeud de travail.
Étape «Réduire»: Les nœuds de travail traitent maintenant chaque groupe de données de sortie, par clé, en parallèle.

Vue logique

Les fonctions Map et Reduce de MapReduce sont toutes deux définies en fonction des données structurées en paires (clés, valeurs). Map prend une paire de données avec un type dans un domaine de données et renvoie une liste de paires dans un domaine différent:

Map(k1, v1) → liste (k2, v2)

La fonction Map est appliquée en parallèle à chaque paire (keyed by k1) dans le dataset d'entrée. Ceci produit une liste de paires (keyed by k2) pour chaque appel. Ensuite, le framework MapReduce collecte toutes les paires avec la même clé (k2) de toutes les listes et les regroupe en créant un groupe pour chaque clé.

La fonction de réduction est alors appliquée en parallèle à chaque groupe, qui à son tour produit une collection de valeurs dans le même domaine:

Reduce(k2, liste (v2)) → liste (v3)

Chaque appel Réduire produit typiquement une valeur v3 ou un retour vide, bien qu'un appel puisse renvoyer plus d'une valeur. Les retours de tous les appels sont recueillis en tant que liste de résultats souhaitée.

Ainsi, le framework MapReduce transforme une liste de paires (clés, valeurs) en une liste de valeurs. Ce comportement est différent de la combinaison typique de programmation fonctionnelle et de réduction, qui accepte une liste de valeurs arbitraires et renvoie une seule valeur qui combine toutes les valeurs renvoyées par la carte.

Il est nécessaire, mais pas suffisant, d'avoir des implémentations de la carte et de réduire les abstractions afin de mettre en œuvre MapReduce. Les implémentations distribuées de MapReduce nécessitent un moyen de connecter les processus exécutant les phases Map et Reduce. Il peut s'agir d'un système de fichiers distribué. D'autres options sont possibles, telles que le streaming direct des mappeurs aux réducteurs, ou pour les processeurs de cartographie de servir leurs résultats aux réducteurs qui les interroge.
Apache Spark

Apache Spark


Logo
Apache Spark est un framework open-source de cluster-computing. Initialement développé à l'Université de Californie, AMPLab de Berkeley, la base de codes Spark a été plus tard donnée à la Fondation Apache Software, qui l'a maintenu depuis. Spark fournit une interface pour programmer des clusters entiers avec un parallélisme de données implicites et une tolérance aux pannes.

Apache Spark fournit aux programmeurs une interface de programmation d'applications centrée sur une structure de données appelée ensemble de données distribuées résilientes (RDD), un multiset en lecture seule d'éléments de données distribués sur un cluster de machines, maintenu de manière tolérante aux pannes. ] Il a été développé en réponse aux limitations du paradigme de calcul de cluster MapReduce, ce qui force une structure de flux de données linéaire particulière sur les programmes distribués: programmes MapReduce lire les données d'entrée du disque, cartographier une fonction à travers les données, réduire les résultats de la carte, Résultats sur disque. Les RDD de Spark fonctionnent comme un ensemble de travail pour les programmes distribués qui offre une forme (délibérément) restreinte de mémoire partagée partagée

samedi 14 janvier 2017

Apache Cassandra

Apache Cassandra

                                                                                                            Logo
Apache Cassandra est un système de gestion de base de données distribué libre et open-source conçu pour gérer de grandes quantités de données sur de nombreux serveurs de produits, offrant une haute disponibilité sans point unique d'échec. Cassandra offre un support robuste pour les clusters couvrant plusieurs datacenters,  avec la réplication asynchrone sans maître permettant des opérations de faible latence pour tous les clients.

Cassandra accorde également une grande importance à la performance. En 2012, des chercheurs de l'Université de Toronto qui ont étudié les systèmes NoSQL ont conclu que «en termes d'évolutivité, il y a un gagnant clair tout au long de nos expériences.» Cassandra atteint le débit le plus élevé pour le nombre maximal de nœuds dans toutes les expériences. Haute latence d'écriture et de lecture.

La base de données Apache Cassandra est le bon choix lorsque vous avez besoin d'évolutivité et de haute disponibilité sans compromettre les performances. L'évolutivité linéaire et la tolérance aux pannes éprouvée sur le matériel de base ou l'infrastructure de nuages en font la plate-forme idéale pour les données stratégiques. Le support de Cassandra pour la réplication à travers plusieurs datacenters est le meilleur de sa classe, offrant une latence plus faible pour vos utilisateurs et la tranquillité d'esprit. Sachant que vous pouvez survivre à des pannes régionales.