Tuesday, 10 January 2017

Déménagement Moyenne Clojure

Trouver des points dans une distance d'une LatitudeLongitude à l'aide de coordonnées de délimitation Cet article décrit comment interroger efficacement une base de données pour les lieux qui se trouvent à une certaine distance d'un point donné en coordonnées sphériques (latitude et longitude). La méthode calcule les coordonnées de délimitation qui peuvent être utilisées pour un ndash d'index de base de données, tout comme nous utiliserions des rectangles de délimitation minimale pour accélérer les requêtes en espace cartésien. Il est précis pour les distances courtes aussi bien que pour de longues distances, et fonctionne pour n'importe quelle position géographique, même si elle est près d'un poteau ou du méridien 180ème. 1 Distance entre deux points donnés La distance la plus courte (la géodésique) entre deux points donnés P 1 (lat 1. Lon 1) et P 2 (lat 2. Lon 2) à la surface d'une sphère de rayon R est la distance du grand cercle . Il peut être calculé en utilisant la formule: Par exemple, la distance entre la Statue de la Liberté à (40.6892deg, -74.0444deg) (0.7102 rad. -1.2923 rad) et la Tour Eiffel à (48.8583deg, 2.2945deg) (0.8527 rad , 0.0400 rad) ndash supposant une approximation sphérique a de la figure de la Terre avec rayon R 6371 km ndash est: dist arccos (sin (0.7102) middot sin (0.8527) cos (0.7102) middot cos (0.8527) middot cos (-1.2923 Supposons que nous voulons trouver des endroits à une distance d 1000 km de M (lat. Lon) (1.3963 rad, -0.6981 rad) in Une base de données. Etant donné que nous avons une table appelée Places avec des colonnes Lat et Lon qui tiennent les coordonnées en radians (les fonctions trigonométriques de SQL attendent des radians), alors nous pourrions utiliser cette requête SQL: SELECT FROM Places WHERE acos (sin (1.3963) sin Le problème de cette requête est que notre système de base de données ne pourra pas utiliser les indices sur les colonnes Lat et Lon en raison de la complexité de La formule dans la clause WHERE. 3 Trouver des endroits à l'intérieur d'une distance à l'aide d'un index Pour utiliser des indices sur les colonnes Lat et Lon, nous pouvons utiliser une méthode semblable à la méthode du rectangle de délimitation dans l'espace cartésien. Letrsquos appeler le cercle qui est formé par tous les points qui ont distance d de M le cercle de requête. Les sous-sections suivantes expliquent comment calculer les coordonnées de délimitation (lat min lon lon) et (lat max max lon) qui sont les coins opposés d'un rectangle de délimitation (sur la sphère) qui contient complètement le cercle de requête. Les points situés à l'extérieur de ce rectangle ne se trouvent donc pas à distance d de M. Afin de trouver des points qui sont dans le cercle de requête, nous devons considérer les points dans le rectangle de délimitation seulement. Ces points (appelés lieux candidats) peuvent être trouvés rapidement à l'aide d'un index (voir la section 3.5 pour les requêtes SQL). Letrsquos définit r d R (1000 km) (6371 km) 0.1570 comme rayon angulaire du cercle de requête. 3.1 Calcul de la latitude minimale et maximale Déplacement sur un cercle de rayon R 6371 km d'un point A à un point B de sorte qu'il y ait un angle r 0.1570 entre A et B, couvrant une distance de d 1000 km. Les méridiens sont sur de si grands cercles de rayon R. Nous pouvons donc nous déplacer le long d'un méridien, c'est-à-dire garder la longitude fixée, et simplement soustraire r à partir de lat afin d'obtenir la latitude maximale minimale de tous les points du cercle de requête avec le centre M (lat. long) (1.3963 rad, -0.6981 rad) : Notez que des précautions spéciales doivent être prises si un pôle est dans le cercle de requête. Voir la section 3.4 pour plus de détails. 3.2 Calcul de la longueur minimale et maximale de la méthode incorrecte Une approche observée sur plusieurs pages Web pour calculer les longitudes minimale et maximale est de maintenir la latitude fixe et de changer la longitude, c'est-à-dire de se déplacer le long d'un cercle de latitude. Cette section montrera que cette approche donne des résultats inexacts. Se déplacer le long d'un cercle de latitude signifie se déplacer le long d'un petit cercle. Un cercle de latitude à latitude latine 1.3963 rad a le rayon R s R middot cos (lat) 1106 km, donc d 1000 km correspond maintenant à un rayon angulaire de r s d R s d (R middot cos (lat)) 0.9039. Ainsi, recouvrant d 1000 km sur un cercle de latitude vous amène à la longitude long S lon plusmn d (R middot cos (lat)) -0.6981 rad plusmn 0.9039 rad. Mais ce n'est pas la longitude maximale minimale à laquelle on peut accéder en déplaçant d 1000 km dans n'importe quelle direction. C'est parce que nous avons déplacé la distance sur un petit cercle, mais les petites distances de cercle sont plus grandes que les grandes distances de cercle. Bien que M (lat. Lon) (1,3963 rad, -0,6981 rad) et PS (lat. long S) (1,3963 rad, -1,6020 rad) aient une distance de d 1000 km sur le petit cercle, on pourrait prendre un raccourci de M À PS sur un grand cercle. Selon l'équation 1. que le raccourci a une longueur de 967 km. Nous pourrions donc déplacer encore 33 km et rester dans le cercle de requêtes. En particulier, nous pourrions atteindre des longitudes encore plus petites, respectivement, plus grandes. Donc, en utilisant lon plusmn d (R middot cos (lat)) comme valeurs limites de longitude manquerait certains endroits qui sont effectivement à distance d. Par exemple, le point P 3 (1.4618 rad, -1.6021 rad) est en dehors de la limite calculée ldquoboxrdquo, bien que sa distance à M soit seulement 872 km. C'est une erreur de plus de 12 3.3 Calculer le minimum et le maximum de longitude ndash le chemin correct Figure 1: Les méridiens tangents au cercle de requête 1 Déplacer le long d'un cercle de latitude pour trouver la longitude minimale et maximale ne fonctionne pas du tout Vous pouvez voir sur la figure 1. Les points sur le cercle de requête ayant la longitude maximale minimale, T 1 et T 2. Ne sont pas sur le même cercle de latitude que M, mais plus près du pôle. Les formules pour les coordonnées de ces points peuvent être trouvées dans un bon manuel mathématique comme 1. Ils sont: Notez que des précautions particulières doivent être prises si le méridien 180e est dans le cercle de requête. Voir la section 3.4 pour plus de détails. 3.4 Traitement des pôles et du méridien 180 Si lat max. Comme défini à la section 3.1. Est plus grand que pi2, alors le pôle Nord est dans le cercle de requête, ce qui signifie que les parties de tous les méridiens sont également dans le cercle de requête. Ainsi, dans ce cas, les coordonnées de délimitation sont (lat min. - pi) et (pi2, pi). Si lat min est plus petite que - pi2, alors le pôle Sud est dans le cercle de requête et les coordonnées de délimitation sont (-pi2, - pi) et (lat max pi). Si un de lon minmax. Comme défini à la section 3.3. Est en dehors de la plage des valeurs de longitude valables - pi, pi, le 180e méridien se trouve dans le cercle de requête. Dans ce cas, on peut utiliser (lat min. - pi) et (lat max pi) les coordonnées de délimitation, c'est-à-dire quelque chose ayant une forme telle qu'une ceinture autour de la sphère. Mais cela inclurait de nombreux endroits candidats qui ne sont pas réellement dans la distance. Alternativement on pourrait utiliser deux ldquoboxesrdquo délimitant et il suffit pour un candidat endroit d'être dans l'un d'eux. Si lon min lt - pi, les deux ensembles de coordonnées de délimitation sont (lat min. Lon max 2pi), (lat max pi) et (lat min. Si lon max pi, les deux ensembles de coordonnées de délimitation sont (lat min. Lon min), (lat max pi) et (lat min - pi), (lat max max max - 2pi). 3.5 Requêtes SQL Maintenant que nous avons calculé les coordonnées de délimitation (lat min. Lon min) (1.2393 rad, -1.8184 rad) et (lat max max lon) (1.5532 rad, 0.4221 rad), nous pouvons les utiliser dans une requête SQL . Dans ce qui suit, on suppose que la ndash de latitude et de longitude dans radians ndash est stockée dans deux colonnes séparées avec un index qui supporte les requêtes de plage (par exemple, un arbre B) sur chacune d'elles. Si votre système de gestion de base de données prend en charge un type de données ponctuelles et un index spatial (par exemple un arbre R) sur ces colonnes, vous pouvez également l'utiliser. Il existe différentes façons de combiner le filtre à l'aide des coordonnées de délimitation avec la formule pour la grande distance de cercle dans une instruction SQL: Simplement combiner les conditions avec ET: La plupart des optimiseurs de requêtes sont assez intelligents pour effectuer un balayage d'index pour trouver rapidement des endroits satisfaisant Gt 1.2393 ET Lat lt 1.5532) ET (Lon gt -1.8184 ET Lon lt 0.4221) et évaluer la formule pour la grande distance de cercle pour chaque résultat candidat restant seulement. Le pré-filtre dans la clause WHERE et la formule plus spécifique dans une clause HAVING: Le pré-filtre dans une sous-requête: 4 Java Source Code 4.1 La classe GeoLocation Ci-dessous vous trouverez une classe Java Géolocalisation prête à l'emploi. La méthode boundingCoordinates () calcule les coordonnées de délimitation en utilisant la méthode expliquée dans la section 3. La section 4.2 montre un exemple d'utilisation de la classe GeoLocation. 4.2 Utilisation de la classe GeoLocation Voici un code de démonstration qui montre comment utiliser la classe GeoLocation de la section 4.1 pour interroger une base de données pour les endroits situés à une certaine distance. 5 Implémentations dans d'autres langages de programmation Certaines personnes ont traduit le code Java de la section 4 dans d'autres langages de programmation et ont publié leurs résultats. Il y a des implémentations dans C. Clojure. JavaScript (Node. js). Objectif c. PHP. Python et Swift. Notez que je n'ai pas vérifié leur exactitude. L'erreur maximale résultant de l'utilisation d'un modèle sphérique de la Terre pour les calculs de distance n'est pas supérieure à 0,5. 2 Références Mots-clés supplémentaires: index géospatial, boîte de délimitation géospatiale, boîte de délimitation sphérique, boîte de délimitation minimale, rectangle limite minimal (MBR), service basé sur l'emplacement, géolocalisation, position géographique, position géographique, position géographique, point géographique, (SIG), l'inclinaison, l'azimut, la recherche rapide Publié le 16 mai 2010, dernière mise à jour le 5 juin 2016 Si vous avez des commentaires ou des suggestions pour améliorer cet article, s'il vous plaît envoyez-moi un e-mail. Le système de fichiers distribué Hadoop (HDFS) offre un moyen de stocker des fichiers volumineux sur plusieurs machines. Hadoop et HDFS proviennent du papier GFS (Google File System). Avant Hadoop 2.0.0, le NameNode était un seul point d'échec (SPOF) dans un cluster HDFS. Avec Zookeeper, la fonctionnalité High Availability de HDFS résout ce problème en offrant l'option d'exécuter deux NomNodes redondants dans le même cluster dans une configuration ActivePassive avec une veille active. Red Hat GlusterFS GlusterFS est un système de fichiers de stockage réseau à échelle réduite. GlusterFS a été développé à l'origine par Gluster, Inc. puis par Red Hat, Inc. après son achat de Gluster en 2011. En juin 2012, Red Hat Storage Server a été annoncé comme une intégration commerciale de GlusterFS avec Red Hat Enterprise Linux. Gluster File System, connu sous le nom de Red Hat Storage Server. Quantcast Système de fichiers QFS QFS est un progiciel de système de fichiers distribués à code source ouvert pour des charges de travail à grande échelle MapReduce ou d'autres lots. Il a été conçu comme une alternative à Apache Hadoops HDFS, destiné à fournir de meilleures performances et rentabilité pour des grappes de traitement à grande échelle. Il est écrit en C et a une gestion de la mémoire à empreinte fixe. QFS utilise la correction d'erreurs Reed-Solomon comme méthode pour assurer un accès fiable aux données. Le codage ReedSolomon est très largement utilisé dans les systèmes de stockage de masse pour corriger les erreurs de salve associées aux défauts des médias. Plutôt que de stocker trois versions complètes de chaque fichier comme HDFS, ce qui nécessite trois fois plus de stockage, QFS ne nécessite que 1,5 fois la capacité brute, car il rayonne les données sur neuf disques différents. Ceph est une plate-forme de stockage de logiciels libres conçue pour présenter le stockage d'objets, de blocs et de fichiers à partir d'un seul cluster informatique distribué. Les objectifs principaux de Cephs sont d'être complètement distribués sans un seul point d'échec, extensible au niveau exabyte et librement disponible. Les données sont répliquées, ce qui rend tolérant les pannes. Système de fichiers Lustre Le système de fichiers Lustre est un système de fichiers distribué de haute performance destiné aux environnements réseau et haute disponibilité. Traditionnellement, Luster est configuré pour gérer des périphériques de stockage de données à distance dans un réseau SAN, qui est deux ou plusieurs périphériques de disque connectés à distance qui communiquent via un protocole SCSI (Small Computer System Interface). Cela inclut Fibre Channel, Fibre Channel over Ethernet (FCoE), Serial Attached SCSI (SAS) et même iSCSI. Avec Hadoop HDFS, le logiciel a besoin d'un cluster dédié d'ordinateurs sur lequel fonctionner. Mais les gens qui exécutent des clusters informatiques de haute performance à d'autres fins, souvent ne fonctionnent pas HDFS, ce qui leur laisse un tas de puissance de calcul, les tâches qui pourraient presque certainement bénéficier d'un peu de carte de réduire et aucun moyen de mettre ce pouvoir à travailler en exécutant Hadoop. Intel a remarqué ceci et, dans la version 2.5 de sa distribution de Hadoop qu'il a libérée tranquillement la semaine dernière, a ajouté le support pour le lustre: la distribution d'HPC d'Intel pour Apache Hadoop Software, un nouveau produit qui combine Intel Distribution pour le logiciel d'Apache Hadoop avec Intel Enterprise Edition pour Logiciel Lustre. Il s'agit de la seule distribution d'Apache Hadoop intégrée à Luster, le système de fichiers parallèle utilisé par plusieurs des superordinateurs les plus rapides au monde Alluxio, le premier système de stockage virtuel à mémoire centrée sur la mémoire, unifie l'accès aux données et les frameworks de bridges et les systèmes de stockage sous-jacents . Les applications ne doivent se connecter qu'avec Alluxio pour accéder aux données stockées dans les systèmes de stockage sous-jacents. De plus, l'architecture Alluxios centrée sur la mémoire permet des ordres d'accès aux données de grandeur plus rapide que les solutions existantes. Dans un grand écosystème de données, Alluxio se situe entre des environnements de calcul ou des travaux, tels que Apache Spark, Apache MapReduce ou Apache Flink, et différents types de systèmes de stockage tels que Amazon S3, OpenStack Swift, GlusterFS, HDFS, Ceph ou OSS. Alluxio apporte une amélioration significative de la performance à la pile par exemple, Baidu utilise Alluxio pour améliorer leur performance d'analyse de données par 30 fois. Au-delà de la performance, Alluxio comble les nouvelles charges de travail avec les données stockées dans les systèmes de stockage traditionnels. Les utilisateurs peuvent exécuter Alluxio en utilisant son mode de cluster autonome, par exemple sur Amazon EC2, ou lancer Alluxio avec Apache Mesos ou Apache Yarn. Alluxio est compatible Hadoop. Cela signifie que les programmes Spark et MapReduce existants peuvent s'exécuter sur Alluxio sans aucune modification de code. Le projet est open source (Apache License 2.0) et est déployé dans plusieurs sociétés. Il s'agit de l'un des projets open source les plus dynamiques. Avec moins de trois ans d'histoire open source, Alluxio a attiré plus de 160 collaborateurs de plus de 50 institutions dont Alibaba, Alluxio, Baidu, CMU, IBM, Intel, NJU, Red Hat, UC Berkeley et Yahoo. Le projet est la couche de stockage de la Berkeley Data Analytics Stack (BDAS) et fait également partie de la distribution Fedora. GridGain est un projet open source sous licence Apache 2.0. L'une des principales pièces de cette plate-forme est l'Accelerator Apache Hadoop en mémoire qui vise à accélérer HDFS et MapReduce en apportant à la fois des données et des calculs en mémoire. Ce travail s'effectue avec le système de fichiers en mémoire compatible GGFS-Hadoop. Pour les travaux intensifs d'IO GridGain GGFS offre des performances près de 100x plus rapide que HDFS standard. Paraphrasing Dmitriy Setrakyan de GridGain Systems parlant de GGFS en ce qui concerne Tachyon: GGFS permet de lire et écrire à partir de HDFS sous-jacent ou tout autre système de fichiers compatible Hadoop avec le changement de code zéro. Essentiellement, GGFS supprime entièrement l'étape ETL de l'intégration. GGFS a la capacité de choisir et de choisir quels dossiers restent en mémoire, quels dossiers restent sur le disque et quels dossiers sont synchronisés avec le FS sous-jacent (HD) soit de manière synchrone ou asynchrone. GridGain travaille à l'ajout du composant natif MapReduce qui fournira une intégration Hadoop native complète sans changements dans l'API, comme Spark vous oblige actuellement à le faire. Essentiellement GridGain MRGGFS permettra d'apporter Hadoop complètement ou partiellement en mémoire en mode Plug-n-Play sans aucune modification API. XtreemFS est un système de stockage à usage général et couvre la plupart des besoins de stockage dans un seul déploiement. Il est open-source, ne nécessite pas de matériel spécial ou des modules du noyau, et peut être monté sur Linux, Windows et OS X. XtreemFS s'exécute distribué et offre résilience grâce à la réplication. Les volumes de XtreemFS peuvent être accédés par l'intermédiaire d'un composant de FUSE, qui offre l'interaction normale de dossier avec POSIX comme la sémantique. En outre, une implémentation de l'interface Hadoops FileSystem est incluse, ce qui rend XtreemFS disponible pour une utilisation avec Hadoop, Flink et Spark hors de la boîte. XtreemFS est sous licence New BSD. Le projet XtreemFS est développé par Zuse Institute Berlin. Le développement du projet est financé par la Commission européenne depuis 2006 dans le cadre des accords de subvention No FP6-033576, FP7-ICT-257438 et FP7-318521, ainsi que des projets allemands MoSGrid, First We Take Berlin, FFMK, GeoMultiSens, Et BBDC. Apache Ignite In-Memory Data Fabric est une plate-forme distribuée en mémoire pour le calcul et la transaction sur des ensembles de données à grande échelle en temps réel. Il comprend un stockage en mémoire de valeur-clé répartie, des capacités SQL, des calculs de carte-réduction et autres, des structures de données distribuées, des requêtes continues, des sous-systèmes de messagerie et d'événements, l'intégration Hadoop et Spark. Ignite est construit en Java et fournit des API. NET et C. MapReduce est un modèle de programmation pour traiter de grands ensembles de données avec un algorithme distribué parallèle sur un cluster. Apache MapReduce a été dérivé de Google MapReduce: Traitement simplifié des données sur les grands clusters. La version actuelle d'Apache MapReduce est construite sur Apache YARN Framework. YARN signifie Yet-Another-Resource-Negotiator. C'est un nouveau cadre qui facilite l'écriture de frameworks et d'applications de traitement distribués arbitraires. Le modèle d'exécution de YARNs est plus générique que l'implémentation précédente de MapReduce. YARN peut exécuter des applications qui ne suivent pas le modèle MapReduce, contrairement à l'original Apache Hadoop MapReduce (également appelé MR1). Hadoop YARN est une tentative de prendre Apache Hadoop au-delà de MapReduce pour le traitement de données. Pig fournit un moteur pour exécuter des flux de données en parallèle sur Hadoop. Il comprend une langue, Pig Latin, pour exprimer ces flux de données. Pig Latin comprend des opérateurs pour de nombreuses opérations de données traditionnelles (jointure, tri, filtre, etc.), ainsi que la possibilité pour les utilisateurs de développer leurs propres fonctions de lecture, de traitement et d'écriture de données. Pig tourne sur Hadoop. Il utilise le système de fichiers Hadoop Distributed File System, HDFS et Hadoops, MapReduce. Pig utilise MapReduce pour exécuter tout son traitement de données. Il compile les scripts Pig Latin que les utilisateurs écrivent dans une série d'un ou plusieurs travaux MapReduce qu'il exécute ensuite. Pig Latin semble différent de beaucoup des langages de programmation que vous avez vu. Il n'y a pas d'instructions if ou de boucles en Pig Latin. En effet, les langages de programmation traditionnels et les langages de programmation orientés objet décrivent le flux de contrôle et le flux de données est un effet secondaire du programme. Pig Latin se concentre plutôt sur le flux de données. JAQL est un langage de programmation fonctionnel et déclaratif conçu spécialement pour travailler avec de grands volumes de données structurées, semi-structurées et non structurées. Comme son nom l'indique, une utilisation principale de JAQL est de gérer des données stockées en tant que documents JSON, mais JAQL peut travailler sur différents types de données. Par exemple, il peut prendre en charge XML, les valeurs séparées par des virgules (CSV) et les fichiers plats. Un SQL dans la capacité JAQL permet aux programmeurs de travailler avec des données SQL structurées tout en employant un modèle de données JSON qui est moins restrictif que ses homologues Structured Query Language. Plus précisément, Jaql vous permet de sélectionner, de joindre, de grouper et de filtrer des données qui sont stockées dans HDFS, tout comme un mélange de Pig et Hive. Jaqls langage de requête a été inspiré par de nombreuses langages de programmation et de requête, y compris Lisp, SQL, XQuery et Pig. JAQL a été créé par les travailleurs d'IBM Research Labs en 2008 et a été lancé en open source. Bien qu'il continue d'être hébergé comme un projet sur Google Code, où une version téléchargeable est disponible sous une licence Apache 2.0, la principale activité de développement autour de JAQL est restée centrée sur IBM. La société propose le langage de requête dans le cadre de la suite d'outils associée à InfoSphere BigInsights, sa plate-forme Hadoop. En collaboration avec un orchestrator de workflow, JAQL est utilisé dans BigInsights pour échanger des données entre des tâches de stockage, de traitement et d'analyse. Il fournit également des liens vers des données et des services externes, y compris des bases de données relationnelles et des données d'apprentissage automatique. Analyse de données cluster clustering framework développé à l'origine dans l'AMPLab à UC Berkeley. Spark s'inscrit dans la communauté Open Source de Hadoop, en s'appuyant sur le système de fichiers distribué Hadoop (HDFS). Toutefois, Spark offre une alternative plus facile à utiliser pour Hadoop MapReduce et offre des performances jusqu'à 10 fois plus rapides que les systèmes de génération précédente comme Hadoop MapReduce pour certaines applications. Spark est un cadre pour écrire des programmes rapides et distribués. Spark résout des problèmes similaires à ceux de Hadoop MapReduce mais avec une approche en mémoire rapide et une API de style fonctionnel propre. Avec sa capacité à intégrer Hadoop et des outils intégrés pour l'analyse interactive de requêtes (Shark), le traitement et l'analyse de graphiques à grande échelle (Bagel) et l'analyse en temps réel (Spark Streaming), il peut être utilisé de façon interactive pour traiter rapidement et interroger les grands Ensembles de données. Pour rendre la programmation plus rapide, Spark fournit des API propres et concises dans Scala, Java et Python. Vous pouvez également utiliser Spark interactivement à partir des shells Scala et Python pour interroger rapidement des ensembles de données volumineux. Spark est également le moteur de Shark, un système d'entreposage de données compatible Apache Hive qui peut fonctionner 100x plus rapidement que Hive. Storm est un processeur d'événements complexes (CEP) et un framework de calcul distribué écrit principalement dans le langage de programmation Clojure. Est un système de calcul en temps réel distribué pour traiter des flux de données rapides et volumineux. Storm est une architecture basée sur le paradigme des maîtres-travailleurs. Ainsi, un cluster Storm se compose principalement d'un noeud maître et d'un noeud ouvrier, avec une coordination effectuée par Zookeeper. Storm utilise zeromq (0mq, zeromq), une bibliothèque de réseau évoluée et intégrée. Il fournit une file d'attente de messages, mais à la différence du middleware orienté message (MOM), un système 0MQ peut s'exécuter sans un courtier de messages dédié. La bibliothèque est conçue pour avoir une API de type socket connue. Créé à l'origine par Nathan Marz et l'équipe de BackType, le projet a été ouvert après avoir été acquis par Twitter. Storm a été initialement développé et déployé chez BackType en 2011. Après 7 mois de développement, BackType a été acquis par Twitter en juillet 2011. Storm a été ouvert en septembre 2011. Hortonworks développe une version Storm-on-YARN et planifie la version de base Intégration en 2013 Q4. C'est le plan de Hortonworks. YahooHortonworks prévoit également de déplacer le code Storm-on-YARN de githubyahoostorm-yarn pour devenir un sous-projet du projet Apache Storm dans un proche avenir. Twitter a récemment publié un Hadoop-Storm Hybrid appelé Summingbird. Summingbird fusionne les deux frameworks en un seul, permettant aux développeurs d'utiliser Storm pour le traitement à court terme et Hadoop pour les plongées de données approfondies. Un système qui vise à atténuer les compromis entre le traitement par lots et le traitement des flux en les combinant en un système hybride. Apache Flink (anciennement appelé Stratosphere) propose de puissantes abstractions de programmation en Java et Scala, une exécution haute performance et une optimisation automatique des programmes. Il possède un support natif pour les itérations, les itérations incrémentielles et les programmes consistant en de grands DAG d'opérations. Flink est un système de traitement de données et une alternative au composant Hadoops MapReduce. Il est livré avec son propre runtime, plutôt que de construire sur le dessus de MapReduce. En tant que tel, il peut fonctionner complètement indépendamment de l'écosystème de Hadoop. Cependant, Flink peut également accéder au système de fichiers distribué (HDFS) de Hadoops pour lire et écrire des données et au gestionnaire de ressources Hadoops de prochaine génération (YARN) pour fournir des ressources de cluster. Comme la plupart des utilisateurs de Flink utilisent Hadoop HDFS pour stocker leurs données, il envoie déjà les bibliothèques requises pour accéder à HDFS. Apache Apex est une plate-forme de données-en-mouvement Apache YARN basée sur l'entreprise qui unifie le traitement des flux et le traitement par lots. Il traite de grandes données in-motion dans un très évolutif, hautement performant, tolérant aux pannes, stateful, sécurisé, distribué, et un moyen facile d'utilisation. Il fournit une API simple qui permet aux utilisateurs d'écrire ou de réutiliser du code Java générique, réduisant ainsi l'expertise nécessaire pour écrire de grandes applications de données. La plate-forme Apex Apache est complétée par Apache Apex-Malhar, qui est une bibliothèque d'opérateurs qui mettent en œuvre des fonctions de logique commerciale communes nécessaires aux clients qui souhaitent développer rapidement des applications. Ces opérateurs donnent accès aux systèmes de fichiers HDFS, S3, NFS, FTP et autres systèmes de fichiers MySQL, Cassandra, MongoDB, Redis, HBase, CouchDB et autres bases de données ainsi que les connecteurs JDBC. La bibliothèque comprend également une foule d'autres modèles logiques d'entreprise communs qui aident les utilisateurs à réduire considérablement le temps nécessaire pour entrer en production. Facilité d'intégration avec toutes les autres grandes technologies de données est l'une des principales missions d'Apache Apex-Malhar. Apex, disponible sur GitHub, est la technologie de base sur laquelle DataTorrent offre commercialement, DataTorrent RTS 3, ainsi que d'autres technologies telles que l'outil d'ingestion de données dtIngest. PigPen est map-reduce pour Clojure qui compile à Apache Pig. Clojure est le dialecte du langage de programmation Lisp créé par Rich Hickey, est donc un langage fonctionnel général et s'exécute sur les moteurs Java Virtual Machine, Common Language Runtime et JavaScript. Dans PigPen il n'y a pas de fonctions spéciales définies par l'utilisateur (UDF). Définissez les fonctions de Clojure, de façon anonyme ou nommée, et utilisez-les comme vous le feriez dans n'importe quel programme Clojure. Cet outil est source ouverte par Netflix, Inc. le fournisseur américain de médias sur Internet à la demande en streaming. Apache Spark a été développé en pensant à Apache YARN. Cependant, jusqu'à présent, il a été relativement difficile d'exécuter Apache Spark sur les clusters Hadoop MapReduce v1, c'est-à-dire les clusters qui n'ont pas YARN installé. Typiquement, les utilisateurs devraient obtenir l'autorisation d'installer SparkScala sur un sous-ensemble des machines, un processus qui pourrait prendre beaucoup de temps. SIMR permet à quiconque a accès à un cluster Hadoop MapReduce v1 d'exécuter Spark hors de la boîte. Un utilisateur peut exécuter Spark directement sur le dessus de Hadoop MapReduce v1 sans aucun droit d'administration et sans avoir Spark ou Scala installé sur aucun des noeuds. La prochaine version de Map-Reduce de Facebook, basée sur la propre fourche de Hadoop. La mise en œuvre Hadoop actuelle de la technique MapReduce utilise un traceur de tâche unique, ce qui provoque des problèmes de mise à l'échelle pour des ensembles de données très volumineux. Les développeurs Apache Hadoop ont créé leur propre MapReduce de nouvelle génération, appelé YARN, que les ingénieurs de Facebook ont ​​regardé, mais réduit en raison de la nature hautement personnalisée du déploiement de Hadoop et HDFS. Corona, comme YARN, génère de multiples trackers de travail (un pour chaque emploi, dans l'affaire Coronas). Apache REEFtrade (Retainable Evaluator Execution Framework) est une bibliothèque pour le développement d'applications portables pour les gestionnaires de ressources de cluster tels que Apache Hadooptrade YARN ou Apache Mesostrade. Apache REEF simplifie considérablement le développement de ces gestionnaires de ressources grâce aux fonctionnalités suivantes: Flux de contrôle centralisé: Apache REEF transforme le chaos d'une application distribuée en événements dans une seule machine, le Job Driver. Les événements comprennent l'allocation des conteneurs, le lancement des tâches, l'achèvement et l'échec. Pour les défaillances, Apache REEF s'efforce de faire en sorte que l'exception réelle lancée par la tâche soit disponible pour le pilote. Tâche runtime: Apache REEF fournit un runtime de tâche appelé Evaluator. Les évaluateurs sont instanciés dans chaque conteneur d'une application REEF. Les évaluateurs peuvent garder les données en mémoire entre les tâches, ce qui permet des pipelines efficaces sur REEF. Prise en charge de plusieurs gestionnaires de ressource: les applications Apache REEF sont transférables à tout gestionnaire de ressources pris en charge avec un effort minimal. En outre, les nouveaux gestionnaires de ressources sont faciles à soutenir dans REEF..NET et API Java: Apache REEF est la seule API à écrire des applications YARN ou Mesos dans. NET. En outre, une seule application REEF est libre de mélanger et de correspondre aux tâches écrites pour. NET ou Java. Plugins: Apache REEF permet de plugins (appelés Services) pour augmenter son ensemble de fonctionnalités sans ajouter de ballonnement au noyau. REEF comprend de nombreux services, tels que les communications basées sur le nom entre les communications MPI (Broadcast, Réduire, Rassembler) et les entrées de données. Twill est une abstraction sur Apache Hadoop YARN qui réduit la complexité du développement des applications distribuées, permettant aux développeurs de se concentrer davantage sur leur logique métier. Twill utilise un modèle simple à base de threads que les programmeurs Java trouveront familier. YARN peut être considéré comme un tissu de calcul d'un cluster, ce qui signifie que les applications YARN comme Twill s'exécuteront sur n'importe quel cluster Hadoop 2. YARN est une application open source qui permet au cluster Hadoop de se transformer en une collection de machines virtuelles. Weave, développé par Continuuity et initialement hébergé sur Github, est une application open source complémentaire qui utilise un modèle de programmation similaire aux threads Java, ce qui facilite l'écriture des applications distribuées. Afin de supprimer un conflit avec un projet nommé de la même manière sur Apache, appelé Weaver, le nom Weaves a changé en Twill quand il est passé à l'incubation Apache. Twill fonctionne comme un proxy à échelle réduite. Twill est une couche middleware entre YARN et n'importe quelle application sur YARN. Lorsque vous développez une application Twill, Twill gère les API dans YARN qui ressemblent à une application multi-thread familière à Java. Il est très facile de construire des applications distribuées multi-traitées dans Twill. Bibliothèque pour développer des programmes MapReduce utilisant le langage LISP comme le langage Clojure. Parkour vise à fournir une intégration profonde de Clojure pour Hadoop. Les programmes utilisant le Parkour sont des programmes normaux de Clojure, utilisant des fonctions standard de Clojure au lieu de nouvelles abstractions de cadre. Les programmes utilisant Parkour sont également des programmes Hadoop complets, avec un accès complet à absolument tout ce qui est possible dans Java Hadoop MapReduce. Apache Top-Level projet open source, vous permettant de faire des analyses avancées au-delà MapReduce. Beaucoup de techniques d'analyse de données telles que l'apprentissage automatique et les algorithmes graphiques nécessitent des calculs itératifs, c'est là que le modèle parallèle en vrac synchrone peut être plus efficace que MapReduce simple. Un nouveau paradigme MapReduce. Une nouvelle API pour les travaux MR, au niveau supérieur à Java. Tez est une proposition pour développer une application générique qui peut être utilisée pour traiter des DAG complexes de traitement de données et s'exécute nativement sur Apache Hadoop YARN. Tez généralise le paradigme MapReduce à un cadre plus puissant basé sur l'expression des calculs comme un graphe de flux de données. Tez n'est pas destiné directement aux utilisateurs finaux, car il permet aux développeurs de construire des applications utilisateur avec des performances et une flexibilité bien meilleures. Hadoop a traditionnellement été une plate-forme de traitement par lots pour de grandes quantités de données. Cependant, il ya beaucoup de cas d'utilisation pour les performances en temps quasi réel du traitement des requêtes. There are also several workloads, such as Machine Learning, which do not fit will into the MapReduce paradigm. Tez helps Hadoop address these use cases. Tez framework constitutes part of Stinger initiative (a low latency based SQL type query interface for Hadoop based on Hive). DataFu provides a collection of Hadoop MapReduce jobs and functions in higher level languages based on it to perform data analysis. It provides functions for common statistics tasks (e. g. quantiles, sampling), PageRank, stream sessionization, and set and bag operations. DataFu also provides Hadoop jobs for incremental data processing in MapReduce. DataFu is a collection of Pig UDFs (including PageRank, sessionization, set operations, sampling, and much more) that were originally developed at LinkedIn. Pydoop is a Python MapReduce and HDFS API for Hadoop, built upon the C Pipes and the C libhdfs APIs, that allows to write full-fledged MapReduce applications with HDFS access. Pydoop has several advantages over Hadoops built-in solutions for Python programming, i. e. Hadoop Streaming and Jython: being a CPython package, it allows you to access all standard library and third party modules, some of which may not be available. Open-source project from Conductor for writing MapReduce jobs consuming data from Kafka. The introductory post explains Conductors use caseloading data from Kafka to HBase by way of a MapReduce job using the HFileOutputFormat. Unlike other solutions which are limited to a single InputSplit per Kafka partition, Kangaroo can launch multiple consumers at different offsets in the stream of a single partition for increased throughput and parallelism. Graph computing framework written in Java. Provides a core API that graph system vendors can implement. There are various types of graph systems including in-memory graph libraries, OLTP graph databases, and OLAP graph processors. Once the core interfaces are implemented, the underlying graph system can be queried using the graph traversal language Gremlin and processed with TinkerPop-enabled algorithms. For many, TinkerPop is seen as the JDBC of the graph computing community. Pachyderm is a completely new MapReduce engine built on top Docker and CoreOS. In Pachyderm MapReduce (PMR) a job is an HTTP server inside a Docker container (a microservice). You give Pachyderm a Docker image and it will automatically distribute it throughout the cluster next to your data. Data is POSTed to the container over HTTP and the results are stored back in the file system. You can implement the web server in any language you want and pull in any library. Pachyderm also creates a DAG for all the jobs in the system and their dependencies and it automatically schedules the pipeline such that each job isnt run until its dependencies have completed. Everything in Pachyderm speaks in diffs so it knows exactly which data has changed and which subsets of the pipeline need to be rerun. CoreOS is an open source lightweight operating system based on Chrome OS, actually CoreOS is a fork of Chrome OS. CoreOS provides only the minimal functionality required for deploying applications inside software containers, together with built-in mechanisms for service discovery and configuration sharing Apache Beam is an open source, unified model for defining and executing data-parallel processing pipelines, as well as a set of language-specific SDKs for constructing pipelines and runtime-specific Runners for executing them. The model behind Beam evolved from a number of internal Google data processing projects, including MapReduce, FlumeJava, and Millwheel. This model was originally known as the Dataflow Model and first implemented as Google Cloud Dataflow, including a Java SDK on GitHub for writing pipelines and fully managed service for executing them on Google Cloud Platform. In January 2016, Google and a number of partners submitted the Dataflow Programming Model and SDKs portion as an Apache Incubator Proposal, under the name Apache Beam (unified Batch strEAM processing).


No comments:

Post a Comment