問題は、C での hdfs クライアントの設計と実装に関するものです。libhdfs ページhttp://hadoop.apache.org/docs/r1.0.3/libhdfs.htmlには、クライアントが JNI インターフェイスを使用することが記載されています。CクライアントがJNIを使用している理由を誰でも説明できますか? クライアントが行う必要があるのは、datanode と namenode で実行されている Java プログラムでリモート メソッドを呼び出すことだけです。これは、datanode が期待する方法でメソッド呼び出しをシリアル化することで実行できます。些細なことに JNI を使用するのは混乱を招きます。
質問する
1271 次
1 に答える
1
HDFS は Java で完全に実装されており、Java 言語と API のいくつかの機能を使用して、パフォーマンスを向上させ、プログラミングを容易にします。ここにあるように、Hadoop RPC プロトコルは非常に簡単に使用できます。この単純さは、Hadoop がProxy
クラスを使用して呼び出しをインターセプトし、インターフェイスと一緒にWritable
サーバー側へのリモート プロシージャ コールをシリアル化するという事実から来ています。順番に開梱して呼び出しを行います。そのため、プロトコルは Java に多少依存しています。
一方、JNI を使用して C 入札を開発すると、Java コードの実装と再利用がより簡単かつ迅速になります。また、エンディアンなどを処理したり、Java の動作を模倣したりする必要がないため、エラーが発生しにくくなります。
他の言語とのバインドを容易にするApache Avroを使用する動きがありました。今のところ保留中のようです。
于 2012-09-25T12:56:53.753 に答える