These notes are for HCatalog 0.1.0 release.

Highlights
==========

This is the initial relase of Apache HCatalog.  It provides read and write capability for Pig and Hadoop, and read capability for Hive.

System Requirements
===================

1. Java 1.6.x or newer, preferably from Sun. Set JAVA_HOME to the root of your
   Java installation
2. Ant build tool, version 1.8 or higher:  http://ant.apache.org - to build
   source only
3. This release is compatible with Hadoop 0.20.x with security.  Currently this
   is available from Cloudera in their CDH3 release or from the 0.20.203 branch
   of Apache Hadoop (not yet released).
4. This release is compatible with Pig 0.8.1.
5. This release is compatible with Hive 0.7.0.

Trying the Release
==================
1. Download hcatalog-0.1.0.tar.gz
2. Unpack the file: tar -xzvf hcatalog-0.1.0.tar.gz
3. See the installation directions at http://incubator.apache.org/hcatalog/docs/r0.1.0/install.html
4. To use with Hadoop MapReduce jobs, use the HCatInputFormat and
   HCatOutputFormat classes.
5. To use with Pig, use the HCatLoader and HCatStorer classes.
6. To use the command line interface, set HADOOP_CLASSPATH to the directory 
   that contains the configuration files for your cluster, and use bin/hcat.sh

Relevant Documentation
======================
See http://incubator.apache.org/hcatalog/docs/r0.1.0
