日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot整合HBase将数据写入Docker中的HBase

發布時間:2024/4/18 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合HBase将数据写入Docker中的HBase 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在之前的項目里,docker容器中已經運行了HBase,現將API操作HBase實現數據的增刪改查
通過SpringBoot整合Hbase是一個很好的選擇
首先打開IDEA,創建項目(project)時選擇Spring Initializer

選擇如下三種來創建工程


創建完后的pom文件如下(修改了spring-boot-starter-parent版本),并且加入了HBase的客戶端依賴

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.gzq</groupId><artifactId>springboot-database</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-database</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.3.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

隨后寫好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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。