I am interested as to what other folks are seeing when running this test
against their clusters.  I think my configuration is sound and the load
is fairly realistic.  Please correct me if I'm missing something here.

Here are my results from running the load test on a more recent
cluster.  This cluster is 13 x 3.0GHz Quad Core Xeon servers with 16GB
of RAM and two 1.5TB disks.  One server is the namenode, one is the
zookeeper (1 of 5), one is the hbase master, and the other ten are data
nodes + region servers. Nodes are connected via IP over Infiniband (10Gbps).

[- Configuration -]

Hadoop Version:      0.20.1, r810220
Hadoop Compiled:     Tue Sep 1 20:55:56 UTC 2009 by oom

HBase Version    0.20.1, r822817   
HBase Compiled    Wed Oct 7 11:55:42 PDT 2009, stack

hadoop-env:
# The maximum amount of heap to use, in MB. Default is 1000.
export HADOOP_HEAPSIZE=8000 # namenode
#export HADOOP_HEAPSIZE=2000 # datanode

# Extra Java runtime options.  Empty by default.
# export HADOOP_OPTS=-server
export HADOOP_OPTS="$HADOOP_OPTS -XX:+HeapDumpOnOutOfMemoryError
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"

hbase-env:
# The maximum amount of heap to use, in MB. Default is 1000.
export HBASE_HEAPSIZE=6000

export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"


[- Test -]

Test was started with a newly formatted namenode.  Average load during
the test was 2.66. Highest load seen was 12.95 (62.8%wa) with an average
50MB/s network utilization and 0k swap in use.

After running 2 instances with 30 threads each for just under two hours
both instances aborted with "
org.apache.hadoop.hbase.client.NoServerForRegionException: No server
address listed in .META. for region" errors.  At this point two region
servers aborted.  I can send you the complete set of logs (74M) if you
are interested.

Error Counts:

    1 x ZooKeeper session expired
    3 x OutOfMemoryError messages were logged on two different regions
servers.
    8 x ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: Failed
openScanner
    554 x ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:
DatanodeRegistration


[- Preliminary Status -]

Attribute Name    Value    Description
HBase Version    0.20.1, r822817    HBase version and svn revision
HBase Compiled    Wed Oct 7 11:55:42 PDT 2009, stack    When HBase
version was compiled and by whom
Hadoop Version    Unknown, rUnknown    Hadoop version and svn revision
Hadoop Compiled    Unknown, Unknown    When Hadoop version was compiled
and by whom
HBase Root Directory    hdfs://hfs-027010:8020/hbase    Location of
HBase home directory
Load average    14.5    Average number of regions per regionserver.
Naive computation.
Regions On FS    163    Number of regions on FileSystem. Rough count.
Zookeeper Quorum   
hfs-027013:2181,hfs-027012:2181,hfs-027011:2181,hfs-027015:2181,hfs-027014:2181 
  
Addresses of all registered ZK servers. For more, see zk dump.
Catalog Tables
Table    Description
-ROOT-    The -ROOT- table holds references to all .META. regions.
.META.    The .META. table holds references to all User Table regions
User Tables

1 table(s) in set.
Table    Description
fc_test     {NAME => 'fc_test', FAMILIES => [{NAME => 'data', VERSIONS
=> '1', COMPRESSION => 'LZO', TTL => '2147483647', BLOCKSIZE => '65536',
IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}
Region Servers
    Address    Start Code    Load
hfs-027013:60030    1257291638999    requests=22, regions=15,
usedHeap=2660, maxHeap=5991
hfs-027014:60030    1257291639075    requests=25, regions=15,
usedHeap=2282, maxHeap=5991
hfs-027015:60030    1257291639015    requests=20, regions=15,
usedHeap=1552, maxHeap=5991
hfs-027016:60030    1257291638947    requests=16, regions=16,
usedHeap=2786, maxHeap=5991
hfs-027017:60030    1257291639078    requests=14, regions=14,
usedHeap=2775, maxHeap=5991
hfs-027018:60030    1257291639284    requests=19, regions=14,
usedHeap=1070, maxHeap=5991
hfs-027019:60030    1257291639149    requests=22, regions=13,
usedHeap=2095, maxHeap=5991
hfs-027020:60030    1257291639289    requests=37, regions=15,
usedHeap=2352, maxHeap=5991
hfs-027021:60030    1257291639067    requests=26, regions=14,
usedHeap=2087, maxHeap=5991
hfs-027022:60030    1257291638995    requests=19, regions=14,
usedHeap=1570, maxHeap=5991
Total:     servers: 10         requests=220, regions=145


1154 files and directories, 4417 blocks = 5571 total. Heap Size is 81.06
MB / 7.8 GB (1%)
Configured Capacity    :    13.57 TB
DFS Used    :    138.83 GB
Non DFS Used    :    10.39 GB
DFS Remaining    :    13.43 TB
DFS Used%    :    1 %
DFS Remaining%    :    98.93 %
Live Nodes     :    10
Dead Nodes     :    0

[- End Status -]
Region Servers
    Address    Start Code    Load
hfs-027013:60030    1257291638999    requests=0, regions=101,
usedHeap=5428, maxHeap=5991
hfs-027014:60030    1257291639075    requests=0, regions=103,
usedHeap=5373, maxHeap=5991
hfs-027015:60030    1257291639015    requests=0, regions=104,
usedHeap=3973, maxHeap=5991
hfs-027016:60030    1257291638947    requests=0, regions=104,
usedHeap=5051, maxHeap=5991
hfs-027017:60030    1257291639078    requests=0, regions=108,
usedHeap=5829, maxHeap=5991
hfs-027018:60030    1257291639284    requests=0, regions=102,
usedHeap=4481, maxHeap=5991
hfs-027019:60030    1257291639149    requests=0, regions=104,
usedHeap=4875, maxHeap=5991
hfs-027020:60030    1257291639289    requests=0, regions=101,
usedHeap=5625, maxHeap=5991
Total:     servers: 8         requests=0, regions=827


[- Test Program -]

package org.apache.hadoop.hbase.util;

import java.io.IOException;
import java.io.FileInputStream;
import java.lang.Integer;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

/* create 'fc_test', {NAME => 'json', VERSIONS => 1}, {NAME => 'data',
VERSIONS =>1} */

public class TableTest
    extends Thread
{
    protected int datasize = 4000000;

    public TableTest(int datasize)
    {
        this.datasize = datasize;
    }

    public void run()
    {
        try {
            FileInputStream    random = new FileInputStream("/dev/urandom");
            byte[]    key = new byte[32];
            byte[]  data = new byte[datasize];

            HBaseConfiguration hbaseConfiguration = new
HBaseConfiguration();
            HTable table = new HTable(hbaseConfiguration, "fc_test");
            random.read(data, 0, datasize);

            while (true)
            {
                random.read(key, 0, 32);
                Put update = new Put(Bytes.toBytes(getHexString(key)));
                update.add(Bytes.toBytes("data"), Bytes.toBytes(""),
                    data);
                table.put(update);
            }
        } catch (Exception e) {
            System.out.println(e.toString());
        }

    }

    public static String getHexString(byte[] b) throws Exception
    {
          String result = "";
          for (int i=0; i < b.length; i++)
          {
            result +=
                Integer.toString( ( b[i] & 0xff ) + 0x100,
16).substring( 1 );
          }
         return result;
    }

    public static void main(String args[]) throws IOException
    {
        Thread t = null;
        int i;

        int threads = 30;
        int datasize = 400000;

        try {
            threads = Integer.getInteger(args[0]).intValue();
            datasize = Integer.getInteger(args[1]).intValue();
        } catch (Exception e) {
        }

        System.out.println("Starting " + threads + " threads");

        for (i = 0; i< threads; i++)
        {
               t = new TableTest(datasize);
               t.start();
        }
        // wait for last thread
        try {
           t.join();
        } catch (InterruptedException e) {
        }
    }
}

Reply via email to