私はC++開発者として約10年間働いています。 Java Hadoop専用です。Javaで他のことをするつもりはないので、ピックアップする必要があるもののリストをお願いします。もちろん、コア言語を学ぶ必要がありますが、他に何がありますか?
私はこれをグーグルでやったが、これは「Javaを学びたい。方法を教えてくれ」の複製の可能性があると考えられるかもしれない。しかし、そうではありません。 Javaはたくさんのライブラリを備えた巨大なプログラミング言語であり、私が学ぶ必要があるのは、Hadoopを何のために使用しているかに大きく依存します。しかし、わざわざこれを学ぶ必要があります。これもかなり役に立ちます。
私の日常の仕事では、C++担当者がJNI(Java Native Interface)を介してJavaライブラリを使用するのに十分なJavaを選択し、メモリを主にC++アプリケーションです。ここに私が気づいた重要な事柄のいくつかがあります:
あなたが低レベルのC++の人なら、これも興味深いものがあるかもしれません:
うまくいけば、いくつかの便利なものがそこにあります-コメントしてください/フォローアップの質問をしてください。
「ちょうどいい」を学ぶJavaはJavaを学ぶことです。すべての主要な原則と言語設計の決定を学ぶか、簡単に回避できる間違いを犯すことに苦しむかのどちらかです。プログラミング方法をすでに知っていることを考えると、多くの情報はスキミングできます(親しみのある他の言語との違いを考慮して)。
だからあなたは学ぶ必要があります:
ビルドフレームワークがない場合は、コンパイル済みコードを パッケージ化する方法 をご覧ください。
それ以外に、習得する必要があるほぼすべての他の項目は、何をするつもりかによって大きく異なります。 Oracle/Sunのオンラインチュートリアルを割引 しないでください 。(他のオンラインチュートリアルと比較して)非常に優れています。
HadoopはC++を使用できます: C++でのWordCountの例
Java=は、標準APIでこれらのパッケージを知らないと、実際には使用できません。
Java.lang
Java.util
Java.io
そして、より少ない程度に:
Java.text
Java.math
Java.net
Java.lang.reflect
Java.util.concurrent
これらのクラスには、ほとんどすべてのアプリケーションで常に使用する必要がある多くのクラスが含まれています。これらのクラスを調べて、それらがどのクラスに適しているかがわかってから、最終的に車輪を再発明しないようにすることをお勧めします。
簡単に学んでください。Javaは、C++をすでに知っている場合は楽しくて速いかもしれません。
次の2冊を購入してください。
あなたはすぐにJavaを習得し、後悔しません。幸運を。
C++とJavaは共通のルーツを共有しているので、コア言語はあまり問題を引き起こさないはずです。特にJava SDKに慣れる必要があります。 Java.langとコレクションフレームワーク(Java.util。)
しかし、おそらくJavaを他の場所で使用していることに気づかない場合、Java $ ===はやりすぎです。HadoopにはPythonへのバインディングもあります-おそらくpythonの方が良い代替案ですか? Java vs Python)を参照 を参照してください。
他の高レベルのプログラミング言語にどの程度精通しているのかはわかりません。 ガベージコレクションは、Javaの重要な機能です。選択したVMでGCについて少し読むことが重要です。
明白なパッケージに加えて、 コレクションフレームワーク の Java.util パッケージを確認してください。いくつかのクラスのソースをチェックしたいかもしれません。これらの操作のコンピューティング/メモリコストを把握するには、HashMap
をお勧めします。
Javaは、大量のデータを処理するときに、バッファの代わりにstreamsを使用することを好みます。慣れるまでに時間がかかる場合があります。
Javaには符号なしの型はありません。一度に処理する必要のあるデータのパケットに応じて、より大きな変数と貨物運論を使用するか(比較的小さなパケットの場合)、または(b[i] & 0xff)
たとえば、符号なしバイトを読み取るたびに。また、Javaは、マルチバイトの数値をシリアル化するときにネットワークバイトオーダー(msbf)を使用します。
APIで最も愛されているデザインパターンは、シングルトン、デコレーター、ファクトリーです。 JFC自体のソースで、これらのパターンが言語でどのように実現されるかについて、ベストプラクティスを確認してください。
...そして、より具体的な質問をSO :)に投稿できます
多分あなたはHadoopを使うためにJavaを知る必要さえありません。
Pig は、Hadoopの単純な使用から高度な使用まで十分です。
回答1:
回答2
出典: http://www.linkedin.com/groups/Is-it-must-Hadoop-Developer-988957.S.141072851
ほとんどのものはあなたにかなり馴染みがあるはずです。私はEclipseをダウンロードして、チュートリアルサイトをgoogleでダウンロードします。クラスローディング、キーワードをよく理解してください。多くのC++の人が遭遇する1つのトリッキーなことは、Javaアプリを実行して、そのライブラリクラスを見つける方法です(動的リンクに類似した一種))。JREとJDKの違いを学ぶ。いくつかのHello Worldタイプのアプリが機能するようになっている場合、チュートリアルに従うと、Hadoopを開始できるはずです。
あなたはhadoopを使用するためにJavaを学ぶ必要はありません。
あなたはhadoopをインストールして設定するためにLinuxを知る必要があります
次に、標準の入力/出力を理解する任意の言語でストリームラインAPIを使用してマップ削減ジョブを記述できます
さらに、Hiveなどの他のライブラリを使用して、より複雑なマップ削減を行うことができます
hbase/cassandraのようなhadoopの他のコンポーネントでさえ、ほとんどの言語でクライアントを持っています