gengwx00 2020-04-30
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绑定的端口。