Je suis développeur C++ depuis environ 10 ans. J'ai besoin de prendre Java juste pour Hadoop. Je doute que je ferai autre chose en Java. Donc, je voudrais une liste de choses que je devrais ramasser. Bien sûr, J'aurais besoin d'apprendre la langue principale, mais quoi d'autre?
J'ai fait des recherches sur Google pour cela et cela pourrait être considéré comme un doublon possible de "Je veux apprendre Java. Montrez-moi comment?" mais ce n'est pas. Java est un énorme langage de programmation avec beaucoup, de bibliothèques et ce que je dois apprendre dépendra en grande partie de ce que j'utilise Hadoop. Mais je suppose qu'il est possible de dire quelque chose comme ne pas prenez la peine d’apprendre ceci.
Dans mon travail de jour, je viens de passer du temps à aider une personne C++ à prendre suffisamment de Java pour utiliser certaines Java bibliothèques via JNI (Java Native Interface), puis à partager la mémoire dans leur application principalement C++. Voici quelques-unes des principales choses que j'ai remarquées:
Si vous êtes un gars C++ de bas niveau, vous pouvez également trouver certains de ces éléments intéressants:
J'espère qu'il y a des choses utiles à faire - veuillez commenter/poser des questions de suivi.
Apprendre "juste assez" Java, c'est apprendre Java. Soit vous apprenez tous les principes de base et les décisions de conception de langage, soit vous souffrez en faisant des erreurs facilement évitables. Étant donné que vous savez déjà programmer, un une grande partie des informations peuvent être écrémées (en veillant à ce qu'elles diffèrent des autres langues que vous connaissez intimement).
vous devez donc apprendre:
Et si vous n'avez pas de framework de construction en place, comment empaqueter votre code compilé .
Au-delà de cela, presque tous les autres éléments que vous pourriez avoir besoin d'apprendre dépendent fortement de ce que vous avez l'intention de faire. Ne négligez pas les tutoriels en ligne d'Oracle/Sun , ils sont assez bons (par rapport aux autres tutoriels en ligne).
Hadoop peut utiliser C++: exemple WordCount en C++
Vous ne pouvez pas vraiment utiliser Java sans connaître ces packages dans l'API standard:
Java.lang
Java.util
Java.io
Et, dans une moindre mesure:
Java.text
Java.math
Java.net
Java.lang.reflect
Java.util.concurrent
Ils contiennent beaucoup de classes que vous devrez utiliser en permanence pour à peu près n'importe quelle application, et c'est une bonne idée de les parcourir jusqu'à ce que vous sachiez quelles classes elles contiennent et à quoi elles servent, de peur de finir par réinventer les roues.
Allez-y doucement, apprendre Java pourrait être agréable et rapide si vous connaissez déjà C++
Achetez ces deux livres:
Vous maîtriserez bientôt Java, vous ne le regretterez pas. Bonne chance.
Comme C++ et Java partagent des racines communes, le langage de base ne devrait pas vous poser trop de problèmes. Vous devrez vous familiariser avec le Java SDK, en particulier Java.lang et le framework Collections (Java.util.)
Mais peut-être que l'apprentissage Java est exagéré si vous ne vous voyez pas l'utiliser ailleurs. Hadoop a également des liaisons avec Python - peut-être l'apprentissage python serait une meilleure alternative? Voir Java vs Python sur Hadoop .
Je ne sais pas à quel point vous connaissez d'autres langages de programmation de niveau supérieur. La récupération de place est une fonction importante en Java. Il serait important de lire un peu sur le GC dans votre VM de votre choix.
Outre les packages évidents, consultez les packages Java.util pour le framework de collecte . Vous voudrez peut-être vérifier la source de certaines classes. Je suggère HashMap
pour avoir une idée du coût informatique/mémoire de ces opérations.
Java aime utiliser les flux au lieu des tampons lors du traitement de grandes quantités de données. Cela peut prendre un certain temps pour s'y habituer.
Java n'a pas de types non signés. Selon les paquets de données que vous devez traiter en même temps, vous pouvez soit utiliser des variables plus grandes et des arythmiques streight (si nous parlons de paquets relativement petits), soit vous devez (b[i] & 0xff)
chaque fois que vous lisez par exemple des octets non signés. Notez également que Java utilise l'ordre des octets réseau (msbf) lors de la sérialisation des nombres multi-octets.
Les modèles de conception les plus appréciés par l'API sont Singleton, Decorator et Factory. Vérifiez la source de JFC lui-même pour les meilleures pratiques, comment ces modèles sont atteints dans la langue.
... et vous pouvez toujours poster des questions plus concrètes sur SO :)
Peut-être que vous n'avez même pas besoin de connaître Java pour utiliser Hadoop.
Pig est assez loin d'une utilisation simple à avancée de Hadoop.
Réponse 1:
Réponse 2
Source: http://www.linkedin.com/groups/Is-it-must-Hadoop-Developer-988957.S.141072851
La plupart des choses devraient vous être familières. Je voudrais juste télécharger Eclipse et google un site de tutoriel. Familiarisez-vous avec le chargement de classe, les mots-clés. Une chose délicate à laquelle beaucoup de gars C++ se heurtent est de savoir comment exécuter une application Java afin qu'elle trouve ses classes de bibliothèque (sorte de liaison analogue à la liaison dynamique). Apprenez la différence entre le JRE et le JDK Si vous pouvez faire fonctionner quelques applications de type Hello World, vous devriez pouvoir commencer à utiliser Hadoop si vous suivez les didacticiels.
Vous n'avez pas besoin d'apprendre Java pour utiliser hadoop.
Vous devez connaître Linux pour installer et configurer hadoop
alors vous pouvez écrire votre carte réduire les travaux en utilisant l'api de ligne de flux dans n'importe quelle langue qui comprend les entrées/sorties standard
en outre, vous pouvez réduire la carte plus complexe en utilisant d'autres bibliothèques comme Hive, etc.
même d'autres composants de hadoop comme hbase/cassandra a également des clients dans la plupart des langues