• HBase集群搭建记录 | 云计算[CentOS7] | Maven项目访问HBase


    写在前面

    本系列文章索引以及一些默认好的条件在 传送门

    默认使用master节点并用root用户登录终端进行操作
    默认在操作本篇博客时HBase已经配置完毕

    step1 Maven的下载与配置

    1. 下载解压

    博主使用的是经典maven3.6.3版本,和学习Java EE的时候用的版本是相同的
    要是有需要可以通过链接下载
    博主下载的版本为:
    在这里插入图片描述
    下载后,我们将该文件放在/usr/local/maven/之下
    若没有该目录,首先需要创建该目录:mkdir -p /usr/local/maven
    将下载之后的文件拖到/usr/local/maven/之后,通过命令解压该文件:
    tar -zxvf apache-maven-3.6.3-bin.tar.gz

    2. 环境变量设置

    然后就需要配置环境变量了:
    vim /etc/profile
    只需要加入:
    根据自己实际版本添加,切勿盲目CV

    MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
    PATH=$PATH:$MAVEN_HOME/bin
    export PATH MAVEN_HOME
    

    然后source一下使其生效:
    source /etc/profile

    3. 查看安装

    在我们输入mvn -version之后,我们查看是否能够正常显示我们下载安装的maven版本信息:
    在这里插入图片描述
    发现能够正常显示,配置maven 成功~

    4. 设置阿里云镜像[加速jar包下载]

    编辑maven的conf下的settings.xml文件:
    cd /usr/local/maven/apache-maven-3.6.3/conf/
    vim settings.xml
    mirrors标签对内加入
    在这里插入图片描述

    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    

    加入以上的内容之后便会加速一些[ jar包/插件] 的下载

    step2 Maven项目的创建

    1.创建项目

    我们在这一步将通过maven的相关命令行来创建maven项目,加入我们将该项目创建到该系统目前登陆用户的工作目录下,可以首先创建一个workspace放置源代码:
    mkdir -p ~/workspace/source
    然后切换到该目录下进行操作:
    cd ~/workspace/source
    然后可以通过命令创建项目:

    mvn archetype:generate \ 
    -DgroupId=com.hello \
    -DartifactId=maven_hello \
    -DarchetypeArtifactId=maven-archetype-quickstart
    
    

    上面的命令需要手动写入或者是一行一行cv进命令行终端
    如果说首次安装,会下载一些jar
    下载完成后,如下图:
    在这里插入图片描述

    在这个里,我们可以直接回车,回车后如下图:
    在这里插入图片描述

    如果不再修改,我们输入y,然后打回车,然后:
    在这里插入图片描述

    以上绿色的字体提示我们构建成功,然后查看当前目录下的内容,会发现多了一个文件夹:
    在这里插入图片描述
    正是与我们的命令行中的这一行是相同:
    在这里插入图片描述

    2. 编译项目

    跳转到maven_hello之下:cd maven_hello
    然后执行:mvn compile

    在这里插入图片描述
    提示我们已经构建成功了,再次查看该目录下的文件:
    在这里插入图片描述
    这就是编译后生成的target,进去一看的话,就会看到:
    在这里插入图片描述
    这里面放着编译好的字节码文件

    3.测试项目

    切换到项目根目录下之后,我们执行mvn test来测试maven项目:
    在这里插入图片描述
    会发现多了一个test-classes
    在这里插入图片描述

    4.打包项目

    我们需要用到命令:mvn package
    同样在项目根目录下执行,会看到:
    在这里插入图片描述
    提示生成了一个jar包,在target下:
    在这里插入图片描述

    5.安装项目

    需要用到命令:mvn install
    同样在项目根目录下执行:
    在这里插入图片描述
    给出的提示便是安装到的路径

    step3. 使用eclipse打开maven项目并配置

    我们需要在项目根目录下执行mvn clean进行项目的清理
    在这里插入图片描述
    上图提示正在删除target文件夹

    然后给本地仓库加权限:
    cd ~/.m2
    chmod 777 repository
    我们打开eclipse,依次点击:
    window → \to prefiences → \to maven → \to user settings
    在这里插入图片描述
    浏览选中我们设置的conf/settings.xml文件
    然后点击Apply
    然后选择:
    在这里插入图片描述
    在弹出的框中,选择我们安装Maven的路径:
    在这里插入图片描述
    然后点击finish完成操作并一路确认回去
    就会在界面显示有我们安装的maven:
    在这里插入图片描述
    勾选之后点击apply and close
    然后给App.java加权限:
    在这里插入图片描述

    step4. 项目访问HBase

    在这里,我们将会在项目根目录之下添加HBase目录并加载jar包
    创建HBase目录:

    cp -a /usr/local/hbase ~/workspace/source/maven_hello/HBase/
    

    打开项目:
    在这里插入图片描述
    在这里插入图片描述

    打开刚才的项目之后,然后添加jar包:
    依次点击
    在这里插入图片描述
    在这里插入图片描述

    弹框中选择/root/workspace/source/maven_hello/Hbase/hbase/lib下所有jar包

    然后配置项目:

    cp -a ~/workspace/source/maven_hello/HBase/hbase/conf/hbase-site.xml ~/workspace/source/maven_hello/conf/
    

    在Eclipse菜单中选择Project → \to Properties → \to java build path → \to Libraries → \to Add Class Folder,将刚刚增加的conf目录加入到Libraries中
    然后给pom.xml添加权限和依赖:

    chmod 777 ~/workspace/source/maven_hello/pom.xml
    

    在这里插入图片描述
    加入:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.25</version>
        <scope>compile</scope>
    </dependency>
    

    然后打开App.java,写入代码:
    记得将里面的主机名等修改为自己的,切勿盲目CV

    import java.io.IOException;
    
    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;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.regionserver.BloomType;
    import org.apache.hadoop.hbase.util.Bytes;
    
    
    public class App 
    {
    	static Configuration conf=HBaseConfiguration.create();  
     	static Connection connection;
    	public static void main( String[] args )
    	{      String tablename="hbase_tb";                 
    	        try { 
    	        	App.getConnect();    
                App.createTable(tablename);   
                App.addData(tablename);
                	}
    	        catch (Exception e) { e.printStackTrace();  }      
    	 }
    	public static void getConnect() throws IOException
    	 {
    		conf.set("hbase.zookeeper.quorum", "master315");
    		conf.set("hbase.zookeeper.property.clientPort", "2181");
    		//conf.set("zookeeper.znode.parent", "/hbase");
    		 try{ connection=ConnectionFactory.createConnection(conf);  }
    		catch(IOException e){     }		 
    	 }
    	//创建一张表,通过HBaseAdmin HTableDescriptor来创建  
    	 public static void createTable(String tablename) throws Exception 
    	 {  	 
    		 TableName tableName= TableName.valueOf(tablename);
    		 Admin admin = connection.getAdmin();  
    	    	if (admin.tableExists(tableName)) {
    		     admin.disableTable(tableName);
    		     admin.deleteTable(tableName);
    		     System.out.println(tablename + " table Exists, delete ......");  
    		  }  
                @SuppressWarnings("deprecation")
                HTableDescriptor desc = new HTableDescriptor(tableName);  
                @SuppressWarnings("deprecation")
                HColumnDescriptor colDesc = new HColumnDescriptor("cf1");
                colDesc.setBloomFilterType(BloomType.ROWCOL);
                desc.addFamily(colDesc);  
                desc.addFamily(new HColumnDescriptor("cf2"));  
                admin.createTable(desc);     admin.close();
                System.out.println("create table success!");  
       
    	}  
    	 public static void addData(String tablename) throws Exception {  
    		    HTable table = (HTable)connection.getTable( TableName.valueOf(tablename));
    		    Put p1=new Put(Bytes.toBytes("row1")); //row key  
    		    p1.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("name"), Bytes.toBytes("Tom")); 
    		    p1.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("age"), Bytes.toBytes("12"));  
    		    p1.addColumn(Bytes.toBytes("cf2"), Bytes.toBytes("math"), Bytes.toBytes("80")); 
    		    p1.addColumn(Bytes.toBytes("cf2"), Bytes.toBytes("english"), Bytes.toBytes("90"));  
    		    table.put(p1);
    		    table.close();
    	} 
    	 
    
    }
    

    记得将里面的主机名等修改为自己的,切勿盲目CV

    记得打开hadoop,zookeeper,hbase

    start-all.sh
    zkServer.sh start
    start-hbase.sh
    

    点击运行,则会看到:
    在这里插入图片描述
    表创建成功~
    进入HBase的shell,手动查询插入的信息:

    在这里插入图片描述

    显然数据插入成功~

    eclipse使用maven项目访问HBase

    在这里插入图片描述

  • 相关阅读:
    echarts实现中国地图(部分省份版)
    Head First 设计模式——与设计模式相处
    Head First 设计模式-复合模式
    Head First 设计模式-状态、代理模式
    Head First 设计模式-模板方法、迭代器
    魔幻的一个月~
    Head First 设计模式-命令与适配器模式
    突然想写点什么……
    Head First 设计模式- 工厂与单件模式
    Head First 设计模式——观察者与装饰者模式
  • 原文地址:https://www.cnblogs.com/PushyTao/p/16196703.html
Copyright © 2020-2023  润新知