Author: dmeil
Date: Tue Aug 16 19:32:13 2011
New Revision: 1158427
URL: http://svn.apache.org/viewvc?rev=1158427&view=rev
Log:
HBASE-4208 updates to book.xml, performance.xml
Modified:
hbase/trunk/src/docbkx/book.xml
hbase/trunk/src/docbkx/performance.xml
Modified: hbase/trunk/src/docbkx/book.xml
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/docbkx/book.xml?rev=1158427&r1=1158426&r2=1158427&view=diff
==============================================================================
--- hbase/trunk/src/docbkx/book.xml (original)
+++ hbase/trunk/src/docbkx/book.xml Tue Aug 16 19:32:13 2011
@@ -108,10 +108,10 @@ TableMapReduceUtil.initTableMapperJob(
job // job instance
);</programlisting>
...and the mapper instance would extend <link
xlink:href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapper.html">TableMapper</link>...
- <programlisting>public class MyMapper extends TableMapper<Text,
LongWritable> {
-public void map(ImmutableBytesWritable row, Result value, Context context)
-throws InterruptedException, IOException {
-// process data for the row from the Result instance.</programlisting>
+ <programlisting>
+public class MyMapper extends TableMapper<Text, LongWritable> {
+ public void map(ImmutableBytesWritable row, Result value, Context context)
throws InterruptedException, IOException {
+ // process data for the row from the Result instance.</programlisting>
</para>
</section>
<section xml:id="mapreduce.htable.access">
@@ -211,7 +211,7 @@ admin.enableTable(table);
</section>
<section xml:id="keysize">
<title>Try to minimize row and column sizes</title>
- <subtitle>Or why are my storefile indices large?</subtitle>
+ <subtitle>Or why are my StoreFile indices large?</subtitle>
<para>In HBase, values are always freighted with their coordinates; as a
cell value passes through the system, it'll be accompanied by its
row, column name, and timestamp - always. If your rows and column
names
@@ -230,9 +230,25 @@ admin.enableTable(table);
Compression will also make for larger indices. See
the thread <link
xlink:href="http://search-hadoop.com/m/hemBv1LiN4Q1/a+question+storefileIndexSize&subj=a+question+storefileIndexSize">a
question storefileIndexSize</link>
up on the user mailing list.
- `</para>
- <para>In summary, although verbose attribute names (e.g.,
"myImportantAttribute") are easier to read, you pay for the clarity in storage
and increased I/O - use shorter attribute names and constants.
- Also, try to keep the row-keys as small as possible too.</para>
+ </para>
+ <para>Most frequently small inefficiencies don't matter all that much.
Unfortunately,
+ this is a case where it does. Whatever patterns are selected for
ColumnFamilies, attributes, and rowkeys they could be repeated
+ several billion times in your data</para>
+ <section xml:id="keysize.cf"><title>Column Families</title>
+ <para>Try to keep the ColumnFamily names as small as possible,
preferably one character (e.g. "d" for data/default).
+ </para>
+ </section>
+ <section xml:id="keysize.atttributes"><title>Attributes</title>
+ <para>Although verbose attribute names (e.g.,
"myVeryImportantAttribute") are easier to read, prefer shorter attribute names
(e.g., "via")
+ to store in HBase.
+ </para>
+ </section>
+ <section xml:id="keysize.row"><title>Row Key</title>
+ <para>Keep them as short as is reasonable such that they can still be
useful for required data access (e.g., Get vs. Scan).
+ A short key that is useless for data access is not better than a
longer key with better get/scan properties. Expect tradeoffs
+ when designing rowkeys.
+ </para>
+ </section>
</section>
<section xml:id="schema.versions">
<title>
@@ -289,6 +305,14 @@ admin.enableTable(table);
<para>See <link
xlink:href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HColumnDescriptor.html">HColumnDescriptor</link>
for more information.
</para>
</section>
+ <section xml:id="ttl">
+ <title>Time To Live (TTL)</title>
+ <para>ColumnFamilies can set a TTL length in seconds, and HBase will
automatically delete rows once the expiration time is reached.
+ This applies to <emphasis>all</emphasis> versions of a row - even the
current one. The TTL time encoded in the HBase for the row is specified in UTC.
+ </para>
+ <para>See <link
xlink:href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HColumnDescriptor.html">HColumnDescriptor</link>
for more information.
+ </para>
+ </section>
<section xml:id="secondary.indexes">
<title>
Secondary Indexes and Alternate Query Paths
Modified: hbase/trunk/src/docbkx/performance.xml
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/docbkx/performance.xml?rev=1158427&r1=1158426&r2=1158427&view=diff
==============================================================================
--- hbase/trunk/src/docbkx/performance.xml (original)
+++ hbase/trunk/src/docbkx/performance.xml Tue Aug 16 19:32:13 2011
@@ -336,4 +336,25 @@ htable.close();</programlisting></para>
</section>
</section> <!-- reading -->
+
+ <section xml:id="perf.deleting">
+ <title>Deleting from HBase</title>
+ <section xml:id="perf.deleting.queue">
+ <title>Using HBase Tables as Queues</title>
+ <para>HBase tables are sometimes used as queues. In this case, special
care must be taken to regularly perform major compactions on tables used in
+ this manner. As is documented in <xref linkend="datamodel" />, marking
rows as deleted creates additional StoreFiles which then need to be processed
+ on reads. Tombstones only get cleaned up with major compactions.
+ </para>
+ <para>See also <xref linkend="compaction" /> and <link
xlink:href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HBaseAdmin.html#majorCompact%28java.lang.String%29">HBaseAdmin.majorCompact</link>.
+ </para>
+ </section>
+ <section xml:id="perf.deleting.rpc">
+ <title>Delete RPC Behavior</title>
+ <para>Be aware that <code>htable.delete(Delete)</code> doesn't use the
writeBuffer. It will execute an RegionServer RPC with each invocation.
+ For a large number of deletes, consider
<code>htable.delete(List)</code>.
+ </para>
+ <para>See <link
xlink:href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#delete%28org.apache.hadoop.hbase.client.Delete%29"></link>
+ </para>
+ </section>
+ </section> <!-- deleting -->
</chapter>