1. 程式人生 > WINDOWS開發 >Hbase API 建立表錯誤記錄 for Docker 容器部署叢集

Hbase API 建立表錯誤記錄 for Docker 容器部署叢集

Hbase API 建立表錯誤記錄

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繫結的埠。

參考文件

·HBase官網API