Hello Lars,

Thanks for your previous help. Got a new question for you.  I now have the 
opportunity to try using Hadoop and HBase on a newly installed cluster here, at 
a nominal cost. A lot of compute power (480+ nodes, 16 cores per node going up 
to 32 by the end of FY12, 64 GB RAM per node, with a few fat nodes with 256GB). 
One local drive of 1TB per node, and a four petabyte Lustre file system. Hadoop 
jobs are already running on this new cluster, on terabyte size data sets.

Here's the drawback: I cannot permanently store HBase tables on local disk. 
After a job finishes, the disks are reclaimed. So - if I want to build a 
continuously available data warehouse (basically for analytics runs, not for 
real-time web access by a large community at present - just me and other 
internal bioinformatics folk here at PNNL)  I need to put the HBase tables on 
the Lustre file system. 

Now, all the nodes in this cluster have a very fast InfiniBand QDR network 
interconnect. I think it's something like 40 gigabits/sec, as compared to the 1 
gigabit/sec that you might see in a run-of-the-mill Hadoop cluster. And I just 
read a  couple white papers that say that if the network interconnect is good  
enough, the loss of data locality when you use Lustre with Hadoop is not such a 
bad thing. That is, I Googled and found several papers on HDFS vs Lustre. The 
latest one I found (2011) is a white paper from a company called Xyratex. 
Here's a quote from it:

The use of clustered file systems as a backend for Hadoop storage has been 
studied previously. The performance
of distributed file systems such as Lustre2 , Ceph3 , PVFS4 , and GPFS5 with 
Hadoop has been compared to that
of HDFS. Most of these investigations have shown that non-HDFS file systems 
perform more poorly than HDFS,
although with various optimizations and tuning efforts, a clustered file system 
can reach parity with HDFS. However,
a consistent limitation in the studies of HDFS and non-HDFS performance with 
Hadoop is that they used the network
infrastructure to which Hadoop is limited, TCP/IP, typically over 1 GigE. In 
HPC environments, where much faster
network interconnects are available, significantly better clustered file system 
performance with Hadoop is possible.

Anyway, I am not principally worried about speed or efficiency right now - this 
cluster is big enough that even if I do not use it most efficiently, I'll still 
be doing better than with my very small current cluster, which has very limited 
RAM and antique processors.

My question is: will HBase work at all on Lustre? That is, on pp. 52-54 of your 
O'Reilly HBase book, you say that

"... you are not locked into HDFS because the "FileSystem" used by HBase has a 
pluggable architecture and can be used to replace HDFS with any other supported 
system. The possibilities are endless and waiting for the brave at heart."  ... 
"You can select a different filesystem implementation by using a URI pattern, 
where the scheme (the part before the first ":",  i.e., the colon) part of the 
URI identifies the driver to be used."

We use HDFS by setting the URI to

  hdfs://<namenode>:port/<path>

And you say to simply use the local file system a desktop Linux box (which 
would not replicate data or maintain copies of the files - no fault tolerance) 
one uses

  file:///<path>

So - can I simply change this one param, and point HBase to a location in the 
Lustre file system? That Is, use 

  <property>
    <name>hbase.rootdir</name>
    <value>file:///pic/scratch/rtaylor/hbase</value>
  </property>

Where  "/pic" points to the root of the Lustre system. Or use something 
similar? I am told that all of the Lustre OSTs are backed by RAID6, so my HBase 
tables would be fairly safe from hardware failure. If you put a file into the 
Lustre file system, chances are very slim you are going to lose it from a 
hardware failure. Also, I can make copies periodically to our gigantic  file 
storage cluster in a separate building.  This does not need to be a production 
HBase system (at least, for now). This is more of a data warehouse / analytics 
/data integration environment for several bioinformatics scientists, a system 
that we can afford to go down from time to time, in a research environment.

Note that when I use Hadoop by itself, or Hadoop with HBase tables as sources 
and sinks, only the Hbase accesses would be from the Lustre file system. The 
Hadoop program would still be able to use HDFS on local disks on the subset of 
nodes allotted to it on the cluster - as the Hadoop programs now running on 
this new cluster as doing. My problem is just I don't want to have to rebuild 
the Hbase tables every time I want to do something, since the local disk space 
is retrieved for other possible users after a job finishes. But I can get 
permanent (well, yearly renewal) disk space on the Lustre system.

 So - any advice, before I give this a try? Will changing this one HBase config 
parameter suffice to get me started? Or are there other things involved?

 - Ron

Ronald Taylor, Ph.D.
Computational Biology & Bioinformatics Group
Pacific Northwest National Laboratory (U.S. Dept of Energy/Battelle)
Richland, WA 99352
phone: (509) 372-6568
email: [email protected]


-----Original Message-----
From: Lars George [mailto:[email protected]] 
Sent: Wednesday, November 30, 2011 6:34 AM
To: [email protected]
Subject: Re: getting HBase up after an unexpected power failure - need some 
advice

Hey,

Looks like you have a corrupted ZK. Try and stop ZK (after stopping HBase of 
course) and restart it. If that also fails, then wipe the data dir ZK uses 
(check the config, for example the zoo.cfg for stand alone ZK nodes). ZK is 
going to recreate the data files and it should be able to move forward.

Cheers,
Lars

Reply via email to