docker?部署hbase并且java?Api連接的操作過(guò)程
1.首先先運(yùn)行容器
docker run -d --name hbase -p 2181:2181 -p 16010:16010 -p16000:16000 -p 16020:16020 -p 16030:16030 harisekhon/hbase
2.在本機(jī)的hosts中注冊(cè)docker的id
因?yàn)閐ocker內(nèi)部集成了其他環(huán)境而其他環(huán)境 中的ip是docker id 所以需要在hosts中轉(zhuǎn)換
192.168.80.120 dockerhbase sa445is094a
3.客戶端連接依賴
<dependencies> <!-- hbaseClient依賴包,需要排除日志log4j,不然和springboot的沖突了--> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.5.4</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>2.5.4</version> <type>pom</type> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
倆個(gè)依賴出現(xiàn)log4j的依賴申明錯(cuò)誤,所以這里需要排除,并且新建一個(gè)properties后綴的配置文件
log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=5 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
4.java api 調(diào)用
public class Practice4 { public static Configuration configuration; public static Connection connection; public static Admin admin; public static void main(String[] args)throws IOException{ init(); createTable("student",new String[]{"score"}); insertData("student","zhangsan","score","English","69"); insertData("student","zhangsan","score","Math","86"); insertData("student","zhangsan","score","Computer","77"); getData("student", "zhangsan", "score","English"); close(); } public static void init(){ configuration = HBaseConfiguration.create(); // configuration.set("hbase.rootdir","hdfs://192.168.249.132:8020/"); configuration.set("hbase.zookeeper.quorum", "192.168.249.132"); configuration.set("hbase.zookeeper.property.clientPort", "2181"); try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } } public static void close(){ try{ if(admin != null){ admin.close(); } if(null != connection){ connection.close(); } }catch (IOException e){ e.printStackTrace(); } } public static void createTable(String myTableName,String[] colFamily) throws IOException { TableName tableName = TableName.valueOf(myTableName); if(admin.tableExists(tableName)){ System.out.println("talbe is exists!"); }else { TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName); for(String str:colFamily){ ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build(); tableDescriptor.setColumnFamily(family); } admin.createTable(tableDescriptor.build()); } } public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes()); table.put(put); table.close(); } public static void getData(String tableName,String rowKey,String colFamily, String col)throws IOException{ Table table = connection.getTable(TableName.valueOf(tableName)); Get get = new Get(rowKey.getBytes()); get.addColumn(colFamily.getBytes(),col.getBytes()); Result result = table.get(get); System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes()))); table.close(); } }
到此這篇關(guān)于docker 部署hbase 并且java Api連接的文章就介紹到這了,更多相關(guān)docker 部署hbase內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker私庫(kù)Harbor的架構(gòu)與組件說(shuō)明
今天小編就為大家分享一篇關(guān)于docker私庫(kù)Harbor的架構(gòu)與組件說(shuō)明,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12如何使用Docker Desktop進(jìn)行本地打包和推送
本文給大家介紹如何使用Docker Desktop進(jìn)行本地打包和推送,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析
這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡(jiǎn)單,而且可以對(duì)宿主機(jī)有一定的隔離,對(duì)Docker創(chuàng)建FTP服務(wù)器的過(guò)程感興趣的朋友一起看看吧2022-04-04docker容器時(shí)區(qū)錯(cuò)誤問(wèn)題
常出現(xiàn)docker中運(yùn)行的容器獲取到的時(shí)間與北京時(shí)間相差8小時(shí)的問(wèn)題,其實(shí)是因?yàn)槿萜鬟\(yùn)行的時(shí)區(qū)不正確。本文主要介紹了docker容器時(shí)區(qū)錯(cuò)誤問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12詳解docker pull 下來(lái)的鏡像文件存放的位置
本篇文章主要介紹了詳解docker pull 下來(lái)的鏡像文件存放的位置,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04在CentOS 7上安裝Docker環(huán)境的方法與注意事項(xiàng)
這篇文章主要介紹了在CentOS 7上安裝Docker環(huán)境的方法與注意事項(xiàng),需要的朋友可以參考下2016-10-10一文詳解如何修改Docker的默認(rèn)存儲(chǔ)路徑
這篇文章主要介紹了關(guān)于如何修改Docker的默認(rèn)存儲(chǔ)路徑的相關(guān)資料,默認(rèn)安裝的情況下,會(huì)使用 /var/lib/docker/ 目錄作為存儲(chǔ)目錄,用以存放拉取的鏡像和創(chuàng)建的容器等,這個(gè)路徑是系統(tǒng)存儲(chǔ)目錄,一般空間會(huì)比較小,需要的朋友可以參考下2023-08-08