hadoop初读–Packet.getBuffer()
要回答的飘过的疑惑: 如果创建一个文件,就写入一行几个字节的”helloword”,如何组装一个packet及如何写出?
1.如何组装: out.write(str.getBytes()); 方法调用后数据拷贝到buf[]中.
2.如何写出(写出到DataNode):
1) 关键在于调用了out.close()方法.
out.close()—>out.flushBuffer()—>out.closeInternal()
—>out.flushInternal()—>out.enqueueCurrentPacket().
这一系列时序方法后,将buf[]里的数据刷到currentPacket里,
且设置成最后一个数据包lastPacketInBlock = true,扔到dataQueue里.等待dataStreamer去发送.
2) dataStreamer.run()方法.
关键在于调用了ByteBuffer buf= one.getBuffer();
getBuffer()方法将小字节数据组装成符合packet格式的包,然后发送.
/**
应用代码
*/
String str = "Hello world";
Configuration configuration = new Configuration();
FileSystem fs = FileSystem