誰でも教えてください:HadoopのWritableおよびWritableComparable?
Hadoopの書き込み可能で書き込み可能な比較可能なインターフェイスは何ですか?
これら2つの違いは何ですか?
例を挙げてください。唯一値として使用されるタイプがちょうどWritable
ことができるが、事前に
おかげで、要するに
誰でも教えてください:HadoopのWritableおよびWritableComparable?
Hadoopの書き込み可能で書き込み可能な比較可能なインターフェイスは何ですか?
これら2つの違いは何ですか?
例を挙げてください。唯一値として使用されるタイプがちょうどWritable
ことができるが、事前に
おかげで、要するに
は、Hadoopの中でキーとして使用されるタイプは、WritableComparable
でなければなりません。また、匹敵する
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/WritableComparable.html
@InterfaceAudience.Public
@InterfaceStability.Stable
public interface WritableComparable<T>
extends Writable, Comparable<T>
A書き込み可能。
WritableComparablesは、通常、 コンパレータを介して互いに比較することができます。 Hadoop Map-Reduceフレームワークでキーとして使用されるタイプは、このインターフェイスを実装する必要があります。
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/Writable.html
@InterfaceAudience.Public
@InterfaceStability.Stable
public interface Writable
DataInput内とDataOutput内に基づいて簡単、効率的、 シリアライゼーションプロトコルを実装するシリアライズオブジェクト。
Hadoop Map-Reduceフレームワーク内の任意のキーまたは値のタイプは、このインターフェイスを実装します。 Hadoopの中のHadoopや種類のインターフェイスで
書き込み可能は、このインタフェースを実装する必要があります。 HadoopはほとんどすべてのJavaプリミティブ型やその他のタイプの書き込み可能なラッパーを提供しますが、カスタムオブジェクトを渡す必要がある場合があります。これらのカスタムオブジェクトはHadoopのWritableインターフェイスを実装する必要があります.Headop MapReduceはWritableの実装を使用してユーザーが提供するMappersおよびReducersと相互作用します。なぜHadoopの書き込み可能(複数可)を使用し
public interface Writable {
void readFields(DataInput in);
void write(DataOutput out);
}
:我々は2つのメソッドを必要と書き込み可能なインタフェースを実装する
?
すでにわかっているように、データは分散コンピューティング環境内の異なるノード間で転送する必要があります。これには、構造化された形式のデータをバイトストリームに変換するためのデータのシリアル化と逆シリアル化が必要です。 Hadoopは、シンプルで効率的なシリアライズプロトコルを使用して、マップとデクリメントフェーズ間でデータをシリアライズし、これらを書き込み可能と呼びます。前述の書き込み可能ファイルの例には、IntWritable、LongWritable、BooleanWritable、およびFloatWritableがあります。
参照してください。https://developer.yahoo.com/hadoop/tutorial/module5.html例えば
WritableComparableインタフェースが書き込み可能とjava.lang.Comparableとインターフェイスのサブインターフェイスだけです。以下に示すようにWritableComparableを実現するため、我々は、readFields別にcompareToメソッドを持っていると方法を記述する必要がありますタイプの
public interface WritableComparable extends Writable, Comparable
{
void readFields(DataInput in);
void write(DataOutput out);
int compareTo(WritableComparable o)
}
比較キーが互いに比較され、その間ソーティング相が存在するのMapReduce、のために重要です。
org.apache.hadoop.io.RawComparatorインターフェイスのようなWritableComparablesのコンパレータを実装すると、間違いなくMap/Reduce(MR)ジョブのスピードアップに役立ちます。思い出すかもしれませんが、MRジョブは、キーと値のペアを送受信することで構成されています。プロセスは次のようになります。
(K1,V1) –> Map –> (K2,V2)
(K2,List[V2]) –> Reduce –> (K3,V3)
キーと値のペア(K2、V2)は、中間のキーと値のペアと呼ばれます。それらはマッパーから減速機に渡されます。これらの仲介キー - 値ペアがレデューサーに到達する前に、シャッフルおよびソートステップが実行される。
シャッフルは、仲介キー(K2)をレデューサーに割り当てたもので、ソートはこれらのキーのソートです。このブログでは、仲介キーを比較するためのRawComparatorを実装することで、この余計な作業がソートを大幅に改善します。 RawComparatorがキーをバイト単位で比較するため、並べ替えが改善されました。 RawComparatorを使用しなかった場合は、仲介キーを完全に非直列化して比較する必要があります。
注(要するに):
1)WritableComparablesは、典型的には、コンパレータを介して、相互に比較することができます。 Hadoop Map-Reduceフレームワークでキーとして使用されるタイプは、このインタフェースを実装する必要があります。
2)Hadoop Map-Reduceフレームワークの値として使用されるタイプはすべて、Writableインターフェイスを実装する必要があります。