12 of 12 people found the following review helpful
5.0 out of 5 stars
Not Likely to be Surpaseed, Oct 5 2011
By Glenn Street - Published on Amazon.com
This review is from: HBase: The Definitive Guide (Paperback)
When a book bills itself as "The Definitive Guide," well, that's a tall order to fill. But, except for updates as new releases of HBase roll out, I can't imagine another book surpassing this one by Lars George.
Lars George has been working with HBase since 2007 and is a full committer to the project as of 2009. He now works for Cloudera (a company providing a commercial flavor of Hadoop, as well as Hadoop support). After reading this book, there's no question in my mind that George has deep understanding, not only of HBase as a data solution, but of the internal workings of HBase.
George gives the background and history of HBase in the larger context of relational databases and NoSQL, which I found to be very helpful. The many diagrams throughout the book are extremely useful in explaining concepts, especially for those of us coming from a relational database background.
George has an excellent and clear writing style. Take, for example, the section where he discusses The Problem with Relational Database Systems, giving a quick rundown of the typical steps for getting an RDBMS to scale up. The flow of his summary reads like the increasing levels of panic that many of us have gone through when dealing with a database-backed application that will not scale.
As an example of how thorough and comprehensive the book is, look at chapter 2, where there is an extensive discussion of the type and class (not desktop PCs!) of machines suitable for running HBase. George gives a truly helpful set of configuration practices, even down to a recommendation for having redundant power supply units.
Another example of his thoroughness comes where George discusses delete methods (Chapter 3). He shows how you can use custom versioning, while admitting that the example is somewhat contrived. Indeed, right after elaborating the example, there is a distinct "Warning" box that admits that custom versioning is not actually recommended. So, even though you may not implement custom versioning, you do understand it as a feature that HBase provides.
Many of the programming examples come with excellent remarks or discussions of the tradeoffs implicit in the techniques, including performance and scaling concerns. Java developers will be most comfortable with the majority of examples, but they can be followed by anyone with some object-oriented programming experience.
I really appreciated the thorough discussion in chapter 8 ("Architecture") of subjects like B+ trees vs. Log-Structured Merge Trees (LSMs), the Write-Ahead Log, and seeks vs. transfers, topics which are relevant not only to HBase but to many database systems of varying architectures.
The level of thoroughness is also the book's only weakness. I'm not sure who the target audience for this book is, because it serves both developers and system or database administrators. While nearly every imaginable HBase topic is touched upon, some would have been better off merely listed, with appropriate references given to sources of more information (for example, all those hardware recommendations). The print edition of the book is 552 pages.
Still, a complaint that a book is too detailed shouldn't be interpreted as much of a complaint. Anyone with an interest in NoSQL databases in general, and HBase in particular should read and study this book. It's not likely to be superseded in the future.
3 of 3 people found the following review helpful
5.0 out of 5 stars
Definitely the Definitive Guide, Dec 16 2011
By Richard "Blacksun" - Published on Amazon.com
This review is from: HBase: The Definitive Guide (Paperback)
This is a phenomenal book, and as Lars put it at Hadoop World, the book is the documentation on HBase he has collected/written over the last few years and finally placed into a single source. This is not only a great book about a great technology, but also a great example of what should be expected from a "Definitive Guide".
1 of 1 people found the following review helpful
5.0 out of 5 stars
Wide scope and deep coverage by the "Ask Tom" of HBase, May 5 2012
By Erik Gfesser - Published on Amazon.com
This review is from: HBase: The Definitive Guide (Paperback)
This text is amongst the few books I have read in my career which not only serves as a great introduction to a technology, but also provides significant content for both advanced users and those who wish to understand what is under the covers in order to understand both benefits and drawbacks before making a decision in terms of adoption. While I was not familiar with the author, Lars George, until reading this text, the foreward to what the author shares here offers some street cred. "Of all those who have contributed to HBase over the years, it is poetic justice that Lars is the one to write this book. Lars was always dogging HBase contributors that the documentation needed to be better if we hoped to gain broader adoption. Everyone agreed, nodded their heads in ascent, amen'd, and went back to coding. So Lars started writing critical how-tos and architectural descriptions inbetween jobs and his intra-European travels as unofficial HBase European ambassador. His Lineland blogs on HBase gave the best description, outside of the source, of how HBase worked, and at a few critical junctures, carried the community across awkward transitions (e.g. an important blog explained the labyrinthian HBase build during the brief period we thought an Ivy-based build to be a 'good idea'). His luscious diagrams were poached by one and all wherever an HBase presentation was given."
At least one other reviewer here commented that it was hard for them to understand the purpose of this book, because of its broad scope. But in my opinion its broad scope is what makes it so valuable, at least to the architect. The potential reader just needs to keep in mind that they need to understand what they wish to gain from reading a text on HBase. For example, if the potential reader simply wants to understand how to use the APIs that HBase provides, there may be no need to understand HBase architecture and so the chapters that the author provides on related material may not be applicable at the outset. It is difficult to argue for a sequential reading of this text from beginning to end, although the potential reader also needs to keep in mind the importance of minimal understanding of the programmatic connections with the architecture, in which case a cursory overview of some of the more advanced material is highly recommended. In contrast, as an architect who wants to understand as many of the benefits, drawbacks, and implementation details as possible, especially when considering my extensive experience with relational databases such as Oracle, I appreciate all of the detail that George has to offer here, and would not have it any other way. While I have not yet reviewed his blog yet to any great extent, based on his street cred and the abundance of material in this book, I do not think it is a stretch to akin him to Tom Kyte of "Ask Tom" fame within the Oracle space.
After an introduction that provides discussions on big data, column-oriented databases, problems with relational database systems, nonrelational database systems, and an HBase architectural overview (all within Chapter 1), George quickly moves forward to a chapter on HBase installation (Chapter 2), followed by discussions of native Java APIs (Chapters 3, 4, and 5), available clients (Chapter 6), and integration with Hadoop's MapReduce framework (Chapter 7). The remainder of the text delves into more advanced topics, beginning with HBase architecture (Chapter 8), followed by design topics critical to taking full advantage of HBase architecture (Chapter 9), as well as discussions on cluster monitoring (Chapter 10), performance tuning (chapter 11), and cluster administration (chapter 12). As a general rule, George does a great job at introducing topics in an order that makes sense without frequently referring to chapters later in the book, which is a pet peeve of mine with other technical books. One of the many aspects I especially appreciated about this text is that even in chapters that cover content that might be seen as high-level content by other architects, George is not afraid to get down in the trenches at the programmatic level, even in the preface to the book, in which the author explains how to build the examples that he provides in his Git repository.
Please be aware that even though the author discusses features such as coprocessors that have been included in subsequent releases (at the time of writing this review, version 0.92.1 has been made available as a stable release), the author does make note in Chapter 2 that "the current version of HBase will only run on Hadoop 0.20.x. It will not run on Hadoop 0.21.x (nor 0.22.x) as of this writing. HBase may lose data in a catastrophic event unless it is running on an HDFS that has durable sync support. Hadoop 0.20.2 and Hadoop 0.20.203.0 do not have this support. Currently, only the branch-0.20-append branch has this attribute. No official releases have been made from this branch up to now, so you will have to build your own Hadoop from the tip of this branch." The author does bring up the fact that Cloudera's CDH3 has already applied the patches associated with durable sync, if building Hadoop is not your cup of tea, but keep in mind that Cloudera as of less than two weeks ago has already released CDH4 Beta 2. Anyone interested in HBase needs to keep in mind that this space is moving along quickly, so plan to get started with this book and move forward with the abundant material that is increasingly being made available online. That said, George provides a wealth of knowledge that I do not expect to be surpassed at any time in the foreseeable future by any other publication.