javascript
SpringBoot整合HBase将数据写入Docker中的HBase
在之前的項目里,docker容器中已經運行了HBase,現將API操作HBase實現數據的增刪改查
通過SpringBoot整合Hbase是一個很好的選擇
首先打開IDEA,創建項目(project)時選擇Spring Initializer
選擇如下三種來創建工程
創建完后的pom文件如下(修改了spring-boot-starter-parent版本),并且加入了HBase的客戶端依賴
隨后寫好java代碼:
package com.gzq.springbootdatabase;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import org.junit.Test;import java.io.IOException;public class TestHbase {@Testpublic void testCreate() throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "xxx");Connection connection = ConnectionFactory.createConnection(configuration);Admin admin = connection.getAdmin();HTableDescriptor test1 = new HTableDescriptor(TableName.valueOf("xx:xxx"));HColumnDescriptor firstColumnDescriptor = new HColumnDescriptor("xxx".getBytes());HColumnDescriptor secondColumnDescriptor = new HColumnDescriptor("xxx".getBytes());HColumnDescriptor thirdColumnDescriptor = new HColumnDescriptor("xxx".getBytes());test1.addFamily(firstColumnDescriptor);test1.addFamily(secondColumnDescriptor);test1.addFamily(thirdColumnDescriptor);admin.createTable(test1);admin.close();connection.close();}@Testpublic void testCreateNameSpace() throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "xxx");Connection connection = ConnectionFactory.createConnection(configuration);Admin admin = connection.getAdmin();NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("xxx").build();admin.createNamespace(namespaceDescriptor);admin.close();connection.close();}@Testpublic void testPutData() throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "xxxx");Connection connection = ConnectionFactory.createConnection(configuration);//獲取表對象Table table = connection.getTable(TableName.valueOf("xx:xxx"));Put put = new Put(Bytes.toBytes("xxx" + System.currentTimeMillis()));put.addColumn(Bytes.toBytes("xxx"), Bytes.toBytes("xx"), Bytes.toBytes("xx"));table.put(put);table.close();connection.close();} }ps:因為是在云服務器上進行操作(如果是在本地操作不需要看如下內容),所以為了安全,在云服務器上開啟了防火墻,如果直接執行程序就會報錯,無法連接,所以通過管道的方式安全連接,我用的是mobaSSHTunnel(MobaXterm工具下的插件),隨后開啟相應的端口,并且我的docker也映射了云服務器上的端口:
隨后在mobaSSHTunnel開啟已經配置好的端口映射即可安全的訪問,我映射的端口有2181,16000,16020(這三個端口保證都打開很重要)這幾個關鍵的端口,并且有一個坑:在 configuration.set(“hbase.zookeeper.quorum”, “xxx”);這行代碼里后面的xxx是你的主機名稱,我的HBase里的hbase-site.xml里面的配置對應的是cdata01,那么這個xxx必須是cdata01,但是通過你的管道訪問時要連接端口必須通過2181連接,并且在mobaSSHTunnel里的對應的訪問域名必須設為cdata01,而這個cdata01在你的windows上的hosts文件里必須映射的是127.0.0.1,(切記不要將你的hosts文件里的cdata01改成云服務器的地址,如果改成就直接訪問云服務器了,但是云服務器開了防火墻,你必定連接不上,你唯一的通道是通過Tunnel連接,所以必須將此處的windows的hosts文件里設置為127.0.0.1),在mobaSSHTunnel對應的2181端口映射為下圖:
hosts文件里:
總結
以上是生活随笔為你收集整理的SpringBoot整合HBase将数据写入Docker中的HBase的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录docker常用的command
- 下一篇: springboot整合postgre和