Win10 IDEA遠程連接HBase教程
更新時間:2024年11月07日 14:48:39 作者:CY耶
在Windows 10上,通過IDEA連接到虛擬機中的Hadoop和HBase需要關(guān)閉虛擬機防火墻,并修改相關(guān)配置文件中的IP地址,此外,創(chuàng)建Maven項目并添加依賴是必要步驟,最后,通過Java代碼和HBase Shell命令進行操作,此過程涉及的技術(shù)包括虛擬機配置、防火墻管理、文件編輯和項目管理等
Win10 IDEA遠程連接HBase
關(guān)閉Hadoop和Hbase
如果已經(jīng)關(guān)閉不需要走這一步
cd /usr/local/hbase bin/stop-hbase.sh cd /usr/local/hadoop ./sbin/stop-dfs.sh
獲取虛擬機的ip
虛擬機終端輸入
ip a
關(guān)閉虛擬機防火墻
sudo ufw disable
修改Hadoop的core-site.xml文件
將IP修改成自己的IP
# 位置可能不一樣,和Hadoop安裝位置有關(guān) cd /usr/local/hadoop/etc/hadoop vim core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.111.135:9000</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> </configuration>
修改Hbase的hbase-site.xml
將IP修改成自己的IP
# 位置可能不一樣,和Hbase安裝位置有關(guān) cd /usr/local/hbase vim /usr/local/hbase/conf/hbase-site.xml
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://192.168.111.135:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> <property> <name>hbase.wal.provider</name> <value>filesystem</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>192.168.111.135:2181</value> </property> <property> <name>hbase.master.ipc.address</name> <value>0.0.0.0</value> </property> <property> <name>hbase.regionserver.ipc.address</name> <value>0.0.0.0</value> </property> </configuration>
打開Hadoop和Hbase
cd /usr/local/hadoop ./sbin/start-dfs.sh cd /usr/local/hbase bin/start-hbase.sh jps
IDEA 連接
創(chuàng)建Maven項目
IDEA自帶Maven,如果需要自己安裝Maven可以參考安裝Maven
創(chuàng)建項目,選擇Maven,模板選擇第一個maven-archetype-archetype
添加依賴(pom.xml)
記得修改自己hbase
的版本,我的是2.5.4
設(shè)置好后Reload
一下
<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.5.4</version> </dependency> </dependencies>
創(chuàng)建Java文件并運行
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import java.io.IOException; public class Test01 { public static Configuration configuration; public static Connection connection; public static Admin admin; public static void init(){ System.setProperty("HADOOP_USER_NAME","hadoop"); configuration = HBaseConfiguration.create(); // IP 需要修改 configuration.set("hbase.zookeeper.quorum", "192.168.111.135"); configuration.set("hbase.zookeeper.property.clientPort", "2181"); // IP 需要修改 configuration.set("hbase.rootdir","hdfs://192.168.111.135:9000/hbase"); try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } } /* * 打印所有表名稱 * */ public static void tableListPrint() throws IOException { TableName[] tableNames = admin.listTableNames(); for(TableName tableName : tableNames){ System.out.println(tableName.getNameAsString()); } } public static void close(){ try{ if(admin != null){admin.close();} if(null != connection){connection.close();} }catch (IOException e){ e.printStackTrace(); } } public static void main(String[] args) throws IOException { init(); tableListPrint(); close(); } }
其他
HBase Shell命令
# 進入shell bin/hbase shell # 列出HBase中所有的表 list # 創(chuàng)建一個新表,表名為StudentInfo,包含兩個列族Personal和Grades。 create 'StudentInfo', 'Personal', 'Grades' # 向StudentInfo表中插入一條記錄,RowKey為2023001,Personal:Name列的值為張三,Grades:Math列的值為90。 put 'StudentInfo','2023001', 'Personal:Name','張三' put 'StudentInfo','2023001', 'Grades:Math', 90 # 查詢RowKey為2023001的所有信息。 get 'StudentInfo','2023001' # 修改2023001的Grades:Math列的值為95。 put 'StudentInfo', '2023001', 'Grades:Math', '95' # 刪除2023001的Personal:Name列。 delete 'StudentInfo', '2023001', 'Personal:Name' # 掃描StudentInfo表,查看所有記錄。 scan 'StudentInfo'
Java API
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 java.io.IOException; public class Work01 { public static Configuration configuration; public static Connection connection; public static Admin admin; public static void main(String[] args) throws IOException { init(); // 刪除表 第一次運行請注釋 // deleteTable("EmployeeRecords"); tableListPrint(); createTable("EmployeeRecords",new String[]{"Info","Salary"}); tableListPrint(); insertData("EmployeeRecords","606","Info","Name","CY"); insertData("EmployeeRecords","606","Info","Department","現(xiàn)代信息產(chǎn)業(yè)學(xué)院"); insertData("EmployeeRecords","606","Info","Monthly","50000"); getData("EmployeeRecords","606"); updateData("EmployeeRecords","606","60000"); getData("EmployeeRecords","606"); deleteData("EmployeeRecords","606"); close(); } public static void init(){ System.setProperty("HADOOP_USER_NAME","hadoop"); configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "192.168.111.135"); configuration.set("hbase.zookeeper.property.clientPort", "2181"); configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase"); // 避免亂碼問題 configuration.set("hbase.client.encoding.fallback", "UTF-8"); try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } } /* * 打印所有表名稱 * */ public static void tableListPrint() throws IOException { TableName[] tableNames = admin.listTableNames(); System.out.print("所有表:"); for(TableName tableName : tableNames){ System.out.print(tableName.getNameAsString() + "\t"); } System.out.println(); } 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 deleteTable(String myTableName) throws IOException { TableName tableName = TableName.valueOf(myTableName); admin.disableTable(tableName); admin.deleteTable(tableName); } 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 updateData(String tableName,String rowKey,String val) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn("Info".getBytes(),"Monthly".getBytes(), val.getBytes()); table.put(put); table.close(); } public static void getData(String tableName,String rowKey)throws IOException{ Table table = connection.getTable(TableName.valueOf(tableName)); Get get = new Get(rowKey.getBytes()); Result result = table.get(get); Cell[] cells = result.rawCells(); System.out.print("行鍵:"+rowKey); for (Cell cell : cells) { //獲取列名 String colName = Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength()); String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()); System.out.print("\t"+colName+":"+value); } System.out.println(); table.close(); } public static void deleteData(String tableName,String rowKey)throws IOException{ Table table = connection.getTable(TableName.valueOf(tableName)); Delete delete = new Delete(rowKey.getBytes()); table.delete(delete); System.out.println("刪除成功"); } public static void close(){ try{ if(admin != null){admin.close();} if(null != connection){connection.close();} }catch (IOException e){ e.printStackTrace(); } } }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot項目長時間不進行接口操作,提示HikariPool-1警告的解決
這篇文章主要介紹了Springboot項目長時間不進行接口操作,提示HikariPool-1警告的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Java Fluent Mybatis 項目工程化與常規(guī)操作詳解流程篇 下
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內(nèi)又以Mybatis用的多,基于mybatis上的增強框架,又有mybatis plus和TK mybatis等。今天我們介紹一個新的mybatis增強框架 fluent mybatis關(guān)于項目工程化與常規(guī)操作流程2021-10-10SpringBoot利用切面注解及反射實現(xiàn)事件監(jiān)聽功能
這篇文章主要介紹了springboot事件監(jiān)聽,通過利用切面、注解、反射實現(xiàn),接下來將對這幾種方式逐一說明,具有很好的參考價值,希望對大家有所幫助2022-07-07