Jetoile

Je toile ou J* au choix…

Des Tests D’intégration Avec Cassandra

left-small Parce que je suis parti sur ma lancée des articles des tests d’intégration avec …, à la demande de Duyhai, voilà que je me retrouve à faire un article pour Apache Cassandra… ;)

Plus sérieusement, faire des tests d’intégration avec Apache Cassandra est beaucoup plus simple qu’avec Redis ou Elasticsearch mais il existe cependant 2 projets qui simplifient énormément les tests d’intégration avec Cassandra :

Ce petit article résume comment utiliser ces 2 solutions.

in Cassandra, Test Read on →

Des Tests D’intégration Avec Redis

left-small Redis est écrit en C et faire des tests d’intégration en Java peut s’avérer compliquer. En outre, le fait que Redis doive être compilé lors de son installation rend les choses encore moins aisées.

Bien sûr, il est possible d’utiliser Docker ou de l’installer préalablement sur son poste mais cette deuxième option casse un peu les bonnes pratiques des tests.

Il existe également de nombreux projets permettant de faire des tests avec Redis mais, souvent, les solutions proposées embarquent le binaire de Redis ou on besoin qu’il soit déjà présent et installer/compiler sur le poste (https://github.com/kstyrc/embedded-redis, https://github.com/lordofthejars/nosql-unit, https://github.com/ishiis/redis-unit). Les solutions qui intègrent le binaire ne sont malheureusement souvent pas à jour et laisse assez peu la main sur la version.

Pour ceux qui n’aurait pas envie d’utiliser Docker, cet article va montrer comment il est possible de piloter programmatiquement l’installation de Redis afin de permettre les tests d’intégration.

in Redis, Test Read on →

Des Tests D’intégration Avec Elasticsearch

elasticsearch logo La version 5.0.0-alpha4 a signé la fin du support du mode embedded d’Elasticsearch.

Cela a été annoncé et la classe NodeBuilder permettant de démarrer un noeud programmatiquement a été supprimée.

Cependant, même si la raison de l’arrêt du support de ce mode est compréhensible, cela pose le problème des tests d’intégration puisqu’il n’est plus possible de démarrer un Elasticsearch pendant la phase de test.

Oui, Elastic propose officiellement une alternative via l’utilisation de ESIntegTestCase mais personnellement, je ne suis pas très fan de cette approche…

Cet article va tenter de dresser un panorama non exhaustif de ce que j’ai pu trouver d’intéressant pour permettre de réaliser des tests d’intégration avec Elasticsearch.

in Elasticsearch, Test Read on →

Sqoop Et Parquet : Mode D’emploi

left-small Dans le monde du BigData (en l’occurence avec Hadoop), il est parfois utile de pouvoir importer le contenu d’une base de données dans son Datalake.

Pour ce faire, Apache Sqoop est une des alternatives pour le faire (peut être pas la meilleure mais bon…).

En effet, Sqoop permet d’importer (et exporter également) les données d’une base de données dans :

  • hdfs au format plain text, sequencefile, avro ou parquet
  • hive
  • hbase

En outre, il permet d’avoir un mode incrémental afin de gérer le mode delta.

Cependant, comme on le verra dans cet article, Sqoop n’est pas aussi trivial qu’il peut le paraitre.

C’est ce qui sera détaillé dans cet article : à savoir une sorte de mini retour d’expérience… et heureux en plus ;)

in Hadoop, Parquet, Sqoop Read on →

Hadoop Unit 1.3

left-small Si vous êtes un lecteur assidu (ou pas ;)), vous avez pu vous rendre compte que j’avais posté précédemment sur un composant au doux nom d’Hadoop-Unit.

J’ai le plaisir de vous annoncer qu’il a été releasé en version 1.3 et qu’il est également disponible sur maven central.

Il intègre dans sa nouvelle version :

  • support d’ElasticSearch 5.0.0-alpha2
  • correction de bugs : la variable d’environnement HADOOP_UNIT n’est plus nécessaire que pour les utilisateurs de Windows (merci Florent ;))
  • passage en version 0.1.6 de Hadoop Mini Cluster

A noter que pour utiliser Hadoop Unit en mode standalone, il est maintenant nécessaire de choisir entre Hadoop-Unit version SolR et Hadoop-Unit version ElasticSearch.

Cela est dû à un conflit de jars (Lucene pour ne pas le citer…) qui oblige à gérer ces composants indépendamment…

Pour les téléchargements, ça se passe ici :

Enjoy ;)

in Hadoop

Hadoop Unit

left-small Dans mon dernier post, j’avais parlé d’une surcouche que j’avais développé afin de faciliter l’utilisation de quelques-uns des composants de l’écosystème Hadoop, à savoir :

  • Hdfs,
  • Zookeeper,
  • HiveMetastore,
  • Hiveserver2,
  • SolR,
  • SolRCloud,
  • Oozie,
  • Kafka,
  • HBase,
  • MongoDB [New \o/ ],
  • et Cassandra [New \o/ ].

Il s’appelait alors Hadoop-Bootstrap mais il s’agissait aussi d’une première version qui a, bien sûr, évolué.

Cet article présentera donc quels ont été les améliorations qui ont été apportées.

Disclaimer : je tiens à repréciser que Hadoop-unit n’est qu’une solution de contournement permettant de simuler une partie de l’écosystème Hadoop afin de permettre de disposer en local d’un ersatz de distribution afin de fluidifier le développement mais proposant aussi d’effectuer des tests d’intégration dans un environnement dégradé. Cela peut également permettre d’éviter de monter un cluster Hadoop dédié aux tests d’intégration.

in Hadoop Read on →

Hadoop Ecosysteme Bootstrap

left-small Comme je l’ai déjà dit dans un article précédent, la force d’Hadoop n’est plus dans Hadoop en lui-même mais plutôt dans son écosystème.

Du coup, même lorsqu’on développe avec Spark, il est courant de vouloir s’interfacer avec le métastore de Hive ou encore avec SolR si l’objectif est de vouloir indexer dans ce dernier.

Parfois encore, l’objectif est de lire ou d’écrire de Kafka via Spark (ou en Spark Streaming).

Ainsi, lorsqu’on fait du développement avec des composants “BigData”, on a souvent besoin d’un écosystème complet.

Alors, bien sûr, dans un monde idéal, il est possible de disposer de tout l’écosystème via Docker ou via une machine virtuelle. Pourtant, parfois, il n’est pas possible de disposer de la pleine puissance de son poste parce qu’on est, parfois (sic…), dans un contexte où disposer des droits administrateurs de son poste (et pire quand il s’agit d’un poste sous Windows…) est impossible.

Pour ce faire, il existe quelques solutions comme Hadoop-mini-clusters. Cependant, chaque composant doit alors être démarré dans le bon ordre et il faut avouer que c’est un peu verbeux…

En outre, les couches clientes fonctionnent principalement dans la même JVM.

L’objectif de ce post est de proposer une alternative beaucoup moins verbeuse et plus pratique.

Il ne s’agit que d’une simple surcouche à Hadoop-mini-clusters mais la solution proposée offre également d’autres possibilités qui ne sont pas offertes par la solution :

  • possibilité de disposer d’un SolR qu’il soit en mode embedded ou en mode cloud
  • possibilité d’avoir un oozie accessible par un client externe à la JVM

De plus, la solution proposée dans cet article (enfin plutôt sur mon github…) propose :

  • de démarrer l’écosystème nécessaire dans un contexte de Test d’intégration
  • de démarrer l’écosystème nécessaire en mode standalone avec une simple commande

in Hadoop Read on →