HBase 依赖于 HDFS 做底层的数据存储,BigTable 依赖 Google GFS 做数据存储;
HBase依赖于 MapReduce做数据计算,BigTable 依赖 Google MapReduce 做数据计算
HBase 依赖于 ZooKeeper 做服务协调,BigTable 依赖 Google Chubby 做服务协调
1、shell操作
善于运用help查看帮助
help command查询相关命令的帮助
使用help会出现很多命令,其中namespace、ddl、dml是我们学习的重点!!!
Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop,
drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list,
locate_region, show_filters
Group name: namespace
Commands: alter_namespace, create_namespace, describe_namespace,
drop_namespace, list_namespace, list_namespace_tables
Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, g**e**t_splits, incr, put,
scan, truncate, truncate_preserve
DDL
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class HbaseDDL {
static Configuration conf = null;
static HBaseAdmin admin = null;
static Connection conn = null;
// 创建namespace
public static void create_namespace() throws IOException {
NamespaceDescriptor ns = NamespaceDescriptor.create("test_api_1901").build();
// 参数namespacedescriptor
admin.createNamespace(ns);
}
public static void list_namespace() throws IOException {
NamespaceDescriptor[] nsDescriptors = admin.listNamespaceDescriptors();
for (NamespaceDescriptor ns : nsDescriptors) {
System.out.println(ns.getName());
}
}
public static void delete_namespace(String name) throws IOException {
admin.deleteNamespace(name);
System.out.println(name+"删除成功!");
}
//创建表
public static void create_table(String name,String...familys) throws IOException {
//判断是否存在
if (admin.tableExists(name)) {
System.out.println(name+"表已存在,请换个表名");
} else {
TableName tn = TableName.valueOf(name);
//参数 tablename对象,表名描述器
HTableDescriptor table = new HTableDescriptor(tn);
//一个表至少有一个列簇
//封装列簇描述器
for (String f : familys) {
HColumnDescriptor family = new HColumnDescriptor(f);