Seems to be a case of HDFS-347. J-D
On Thu, Apr 28, 2011 at 12:55 AM, Weihua JIANG <[email protected]> wrote: > After solving HBASE-3561, I successfully run hprof for RS and DN. > Since block cache is useless in my case, I disabled it. I rerun my > test with 14 RS+DNs and 1 client with 200 threads. But, the throughput > is still only about 700. No scalability shown in this case. > > Below is the hot spots in RS: > CPU SAMPLES BEGIN (total = 1469756) Thu Apr 28 15:43:35 2011 > rank self accum count trace method > 1 44.33% 44.33% 651504 300612 sun.nio.ch.EPollArrayWrapper.epollWait > 2 19.88% 64.21% 292221 301351 sun.nio.ch.EPollArrayWrapper.epollWait > 3 8.88% 73.09% 130582 300554 sun.nio.ch.EPollArrayWrapper.epollWait > 4 4.43% 77.52% 65106 301248 sun.nio.ch.EPollArrayWrapper.epollWait > 5 4.43% 81.95% 65104 301249 sun.nio.ch.EPollArrayWrapper.epollWait > 6 4.43% 86.38% 65100 301247 sun.nio.ch.EPollArrayWrapper.epollWait > 7 4.43% 90.81% 65061 301266 sun.nio.ch.EPollArrayWrapper.epollWait > 8 4.32% 95.13% 63465 301565 sun.nio.ch.EPollArrayWrapper.epollWait > 9 2.31% 97.43% 33894 301555 sun.nio.ch.EPollArrayWrapper.epollWait > 10 1.76% 99.19% 25841 301588 sun.nio.ch.EPollArrayWrapper.epollWait > 11 0.48% 99.67% 7025 301443 sun.nio.ch.EPollArrayWrapper.epollWait > 12 0.02% 99.69% 341 301568 sun.nio.ch.NativeThread.current > 13 0.01% 99.71% 187 301535 > org.apache.hadoop.hbase.io.hfile.HFile$Reader.indexSize > 14 0.01% 99.72% 186 301538 > org.apache.hadoop.hbase.io.hfile.HFile$Reader.indexSize > 15 0.01% 99.73% 170 301625 org.apache.hadoop.util.DataChecksum.update > 16 0.01% 99.74% 164 301579 sun.nio.ch.EPollArrayWrapper.epollWait > 17 0.01% 99.75% 149 300938 sun.nio.ch.EPollArrayWrapper.epollWait > > TRACE 300612: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84) > > org.apache.hadoop.hbase.ipc.HBaseServer$Listener$Reader.run(HBaseServer.java:305) > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > java.lang.Thread.run(Thread.java:619) > TRACE 301351: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332) > > org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128) > java.io.BufferedInputStream.fill(BufferedInputStream.java:218) > java.io.BufferedInputStream.read1(BufferedInputStream.java:258) > java.io.BufferedInputStream.read(BufferedInputStream.java:317) > java.io.DataInputStream.read(DataInputStream.java:132) > org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:102) > > org.apache.hadoop.hdfs.DFSClient$BlockReader.readChunk(DFSClient.java:1389) > > org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:237) > org.apache.hadoop.fs.FSInputChecker.fill(FSInputChecker.java:176) > org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:193) > org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:158) > org.apache.hadoop.hdfs.DFSClient$BlockReader.read(DFSClient.java:1243) > TRACE 300554: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1107) > TRACE 301248: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.apache.hadoop.hbase.ipc.HBaseServer$Responder.run(HBaseServer.java:588) > TRACE 301249: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84) > > org.apache.hadoop.hbase.ipc.HBaseServer$Listener.run(HBaseServer.java:414) > TRACE 301247: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:498) > org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:192) > > org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124) > > org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708) > > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > TRACE 301266: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332) > > org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128) > java.io.DataInputStream.readFully(DataInputStream.java:178) > java.io.DataInputStream.readLong(DataInputStream.java:399) > > org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120) > > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2638) > TRACE 301565: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332) > > org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128) > java.io.BufferedInputStream.fill(BufferedInputStream.java:218) > java.io.BufferedInputStream.read1(BufferedInputStream.java:258) > java.io.BufferedInputStream.read(BufferedInputStream.java:317) > java.io.DataInputStream.read(DataInputStream.java:132) > org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:102) > > org.apache.hadoop.hdfs.DFSClient$BlockReader.readChunk(DFSClient.java:1389) > > org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:237) > org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:189) > org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:158) > org.apache.hadoop.hdfs.DFSClient$BlockReader.read(DFSClient.java:1249) > org.apache.hadoop.fs.FSInputChecker.readFully(FSInputChecker.java:384) > > > And the hot spot of DN is: > CPU SAMPLES BEGIN (total = 1123925) Thu Apr 28 15:43:49 2011 > rank self accum count trace method > 1 12.38% 12.38% 139155 301547 sun.nio.ch.EPollArrayWrapper.epollWait > 2 12.38% 24.76% 139154 301548 sun.nio.ch.EPollArrayWrapper.epollWait > 3 10.76% 35.53% 120969 300368 java.net.PlainSocketImpl.socketAccept > 4 10.74% 46.27% 120753 301213 sun.nio.ch.EPollArrayWrapper.epollWait > 5 10.74% 57.01% 120744 301381 sun.nio.ch.EPollArrayWrapper.epollWait > 6 10.74% 67.76% 120744 301384 sun.nio.ch.EPollArrayWrapper.epollWait > 7 10.74% 78.50% 120743 301386 sun.nio.ch.EPollArrayWrapper.epollWait > 8 10.68% 89.18% 120019 301383 sun.nio.ch.ServerSocketChannelImpl.accept0 > 9 8.11% 97.29% 91174 301475 sun.nio.ch.FileChannelImpl.transferTo0 > 10 1.44% 98.73% 16172 301479 java.io.FileInputStream.readBytes > 11 0.40% 99.13% 4496 301477 java.io.FileInputStream.readBytes > 12 0.23% 99.35% 2531 301497 sun.nio.ch.EPollArrayWrapper.epollWait > 13 0.17% 99.53% 1958 301461 java.io.FileInputStream.readBytes > 14 0.04% 99.57% 458 301468 java.io.UnixFileSystem.delete0 > 15 0.03% 99.59% 289 301520 java.lang.Thread.start0 > 16 0.02% 99.62% 278 301471 org.apache.hadoop.util.DataChecksum.update > 17 0.02% 99.64% 204 301562 java.io.UnixFileSystem.getBooleanAttributes0 > 18 0.01% 99.65% 117 301587 sun.nio.ch.EPollArrayWrapper.epollCtl > 19 0.01% 99.66% 113 301493 sun.nio.ch.FileDispatcher.write0 > > TRACE 301547: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332) > > org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128) > java.io.BufferedInputStream.fill(BufferedInputStream.java:218) > java.io.BufferedInputStream.read1(BufferedInputStream.java:258) > java.io.BufferedInputStream.read(BufferedInputStream.java:317) > java.io.DataInputStream.read(DataInputStream.java:132) > > org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readToBuf(BlockReceiver.java:267) > > org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readNextPacket(BlockReceiver.java:314) > > org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:378) > > org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:534) > > org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:417) > > org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:122) > TRACE 301548: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332) > > org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155) > > org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128) > java.io.DataInputStream.readFully(DataInputStream.java:178) > java.io.DataInputStream.readLong(DataInputStream.java:399) > > org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120) > > org.apache.hadoop.hdfs.server.datanode.BlockReceiver$PacketResponder.run(BlockReceiver.java:894) > java.lang.Thread.run(Thread.java:619) > TRACE 300368: > java.net.PlainSocketImpl.socketAccept(PlainSocketImpl.java:Unknown > line) > java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) > java.net.ServerSocket.implAccept(ServerSocket.java:453) > java.net.ServerSocket.accept(ServerSocket.java:421) > > sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34) > > sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369) > > sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341) > java.lang.Thread.run(Thread.java:619) > TRACE 301213: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > > org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:498) > org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:192) > > org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124) > > org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708) > > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > TRACE 301381: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84) > org.apache.hadoop.ipc.Server$Listener$Reader.run(Server.java:352) > TRACE 301384: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > org.apache.hadoop.ipc.Server$Responder.run(Server.java:636) > TRACE 301386: > sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown > line) > sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215) > sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65) > sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80) > sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84) > org.apache.hadoop.ipc.Server$Listener.run(Server.java:468) > TRACE 301383: > > sun.nio.ch.ServerSocketChannelImpl.accept0(ServerSocketChannelImpl.java:Unknown > line) > > sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:145) > sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:84) > > org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:130) > java.lang.Thread.run(Thread.java:619) > TRACE 301475: > sun.nio.ch.FileChannelImpl.transferTo0(FileChannelImpl.java:Unknown > line) > sun.nio.ch.FileChannelImpl.transferToDirectly(FileChannelImpl.java:415) > sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:516) > > org.apache.hadoop.net.SocketOutputStream.transferToFully(SocketOutputStream.java:199) > > org.apache.hadoop.hdfs.server.datanode.BlockSender.sendChunks(BlockSender.java:350) > > org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:436) > > org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:214) > > org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:114) > TRACE 301479: > java.io.FileInputStream.readBytes(FileInputStream.java:Unknown line) > java.io.FileInputStream.read(FileInputStream.java:199) > java.io.FilterInputStream.read(FilterInputStream.java:116) > java.io.BufferedInputStream.fill(BufferedInputStream.java:218) > java.io.BufferedInputStream.read1(BufferedInputStream.java:258) > java.io.BufferedInputStream.read(BufferedInputStream.java:317) > java.io.DataInputStream.readFully(DataInputStream.java:178) > > org.apache.hadoop.hdfs.server.datanode.BlockSender.sendChunks(BlockSender.java:271) > > org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:436) > > org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:214) > > org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:114) > > Thanks > Weihua > > 2011/4/28 Weihua JIANG <[email protected]>: >> I am using CDH3U0. It is HBase 0.90.1, I think. >> >> Thanks >> Weihua >> >> 2011/4/28 Stack <[email protected]>: >>> On Tue, Apr 26, 2011 at 6:02 PM, Weihua JIANG <[email protected]> >>> wrote: >>>> I tried to enable HPROF on RS, but failed. If I added the HPROF agent >>>> in hbase-env.sh, RS startup reports an error said HPROF can't be >>>> loaded twice. But, I am sure I only enabled it once. I don't know >>>> where the problem is. >>>> >>> >>> This sounds like 'HBASE-3561 OPTS arguments are duplicated' Are you >>> running 0.90.2? >>> >>> St.Ack >>> >> >
