Demo方法:
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.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
public class CreateTableDemo {
public static void main(String[] args) throws Exception{
Configuration config = HBaseConfiguration.create();// 获取连接信息
//创建连接
try(Connection connection = ConnectionFactory.createConnection(config)) {
Admin admin = connection.getAdmin();
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("weGamer"));
HColumnDescriptor cf1 = new HColumnDescriptor("personalinfo");
HColumnDescriptor cf2 = new HColumnDescriptor("recordinfo");
HColumnDescriptor cf3 = new HColumnDescriptor("assetsinfo");
tableDescriptor.addFamily(cf1);
tableDescriptor.addFamily(cf2);
tableDescriptor.addFamily(cf3);
System.out.println("Createing table. ");
//Do create
admin.createTable(tableDescriptor);
System.out.println("Done.");
}
}
}
运行编译报错:
HBase Master应该绑定的端口。默认为:16000
容器内主机名没有在客户端绑定/ect/hosts 在末尾追加
vim /etc/hosts
172.20.0.2 hadoop-master 55c923f2c306
再次编译执行报错:
HBase RegionServer绑定的端口。默认为:16020
容器内主机名没有在客户端绑定/ect/hosts 在末尾追加
vim /etc/hosts
172.20.0.3 hadoop-slave1 hadoop-slave1.day2_beimei6-net
运行报错:
这个运行时异常,我们之前的表因为反复创建了,我们去 UI 查看一下。
表是存在的,我们测试改个名字
我们再次编译运行:
最终我们看到成功了,然后我们是三台Docker容器,我们为了后面的不会再次出现这个错误,我们把 salve2 节点的 hbase 的HRegionServer机器主机名
容器内主机名没有在客户端绑定/ect/hosts 在末尾追加
vim /etc/hosts
172.20.0.4 hadoop-slave2 hadoop-slave2.day2_beimei6-net
应用程序对数据的读写操作都是通过和HRegion通信完成,16020端口是RegionServer绑定的端口。