eclipse+hbase开发环境部署

一、前言

1. 前提

因为hbase的运行模式是伪分布式,需要用到hdfs,所以在此之前,我已经完成了hadoop-eclipse的开发环境搭建,详细看另一篇文章:hadoop开发环境部署——通过eclipse远程连接hadoop2.7.3进行开发,本篇的目的是在windows端部署开发环境,使之能连上服务端进行运行测试。

2. 环境

服务端系统:centos6.5

hadoop版本:2.7.3

java版本:1.8

hbase版本:1.2.6

eclipse版本:juno,4.2.0(windows)

二、安装maven及eclipse插件

1. 安装maven

下载maven安装包和eclipse插件,我用的版本是3.3.9,为了方便大家,把maven和插件打包分享到网盘:

百度网盘:https://pan.baidu.com/s/18p3vIPC7tw14gBI-doulZw

密码:croh

解压maven压缩包到文件夹,设置环境变量MAVEN_HOME和添加path:

如果在cmd中敲入mvn -v中有版本信息输出的话证明安装成功。

2. 修改maven仓库存放地址

为了避免重装系统等原因删掉了已经下载的依赖,可以把maven的仓库地址修改到另一个位置,步骤如下:

  • 找到%MAVEN_HOME%/conf/settings.xml文件
  • 找到localRepository标签,增加路径配置加上自己的路径

在cmd里敲入命令mvn help:system,下载完依赖就可以在设定的仓库路径看到具体的信息了。

3. 安装maven插件

一般来说,在eclipse安装插件有两种方式:

1) 在线安装,主要操作是选择一个下载地址,然后指定下载这个地址里面的插件,当然也可以添加另外的有效地址,一般步骤是,在菜单栏中选择Help,然后选择Install New Software…,接着你会看到一个Install对话框,点击Work with:字段边上的Add按钮,你会得到一个新的Add Repository对话框,在Name字段中输入m2e,Location字段中输入http://m2eclipse.sonatype.org/sites/m2e,然后点击OK。

在线安装的缺点是,很多插件地址是在国外的,速度慢不说,还经常安装不成功。

2) 离线安装

下载完插件之后,可以发现在插件文件夹里面,有两个文件夹:features和plugins,在eclipse home目录新建一个文件夹,名字可以随便取,我取的mvnplugin,把刚才说的那两个文件夹拷贝进去。

在eclipse home目录找到dropins目录,新建一个文件maven.link,填入:

path=C:\\eclipse_juno\\eclipse\\mvnplugin

根据自己的情况进行调整。

重启eclipse,检查插件有没有安装成功,Windows –> Preferences:

离线安装优点有几个,一是免于在线安装的龟速和地址失效造成的安装失败,二是用link的方式,方便安装和插拔,推荐用这种方式去安装插件。

4. 配置maven

选择本机安装的maven路径:

使用自己安装maven的配置:

至此,完成maven及其eclipse插件的安装和配置。

三、搭建hbase开发环境

1. 创建maven项目

File->New->Other->Maven->Maven Project,type为maven-archetype-quickstart,工程名为MyHBase。

2. 添加配置文件到资源路径

从集群的hadoop配置文件夹复制core-site.xml,hdfs-site.xml,mapred-site.xml三个文件放在hadoop文件夹,从集群的hbase配置文件夹复制hbase-site.xml放在hbase文件夹,然后把这两个文件夹分别添加到项目的资源文件夹路径下:

/src/main/resources/hadoop

/src/main/resources/hbase

3. 将配置路径加到classpath中

最后的目录结构:

4. 修改hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://harry.com:9000/hbase</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>harry.com</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
</configuration>

harry.com是linux主机域名,在此之前已经在windows的host文件添加了映射。

5.  同步hbase库

将HBase集群下的lib目录拷贝到Windows下,并在eclipse中将lib下的所有库添加到工程。

6. 新建测试类HBaseTest

代码如下:

package com.harry.hbase.myHbase;
//package com.eric.hbase;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class HBaseTest {

    private static final String TABLE_NAME = "demo_table";

      public static Configuration conf = null;
      public HTable table = null;
      public HBaseAdmin admin = null;

      static {
        conf = HBaseConfiguration.create();
        System.out.println(conf.get("hbase.zookeeper.quorum"));
      }

      /**
       * 创建一张表
       */
      public static void creatTable(String tableName, String[] familys)
          throws Exception {
        HBaseAdmin admin = new HBaseAdmin(conf);
        if (admin.tableExists(tableName)) {
          System.out.println("table already exists!");
        } else {
          HTableDescriptor tableDesc = new HTableDescriptor(tableName);
          for (int i = 0; i < familys.length; i++) {
            tableDesc.addFamily(new HColumnDescriptor(familys[i]));
          }
          admin.createTable(tableDesc);
          System.out.println("create table " + tableName + " ok.");
        }
      }

      /**
       * 删除表
       */
      public static void deleteTable(String tableName) throws Exception {
        try {
          HBaseAdmin admin = new HBaseAdmin(conf);
          admin.disableTable(tableName);
          admin.deleteTable(tableName);
          System.out.println("delete table " + tableName + " ok.");
        } catch (MasterNotRunningException e) {
          e.printStackTrace();
        } catch (ZooKeeperConnectionException e) {
          e.printStackTrace();
        }
      }

      /**
       * 插入一行记录
       */
      public static void addRecord(String tableName, String rowKey,
          String family, String qualifier, String value) throws Exception {
        try {
          HTable table = new HTable(conf, tableName);
          Put put = new Put(Bytes.toBytes(rowKey));
          put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier),
              Bytes.toBytes(value));
          table.put(put);
          System.out.println("insert recored " + rowKey + " to table "
              + tableName + " ok.");
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      /**
       * 删除一行记录
       */
      public static void delRecord(String tableName, String rowKey)
          throws IOException {
        HTable table = new HTable(conf, tableName);
        List list = new ArrayList();
        Delete del = new Delete(rowKey.getBytes());
        list.add(del);
        table.delete(list);
        System.out.println("del recored " + rowKey + " ok.");
      }

      /**
       * 查找一行记录
       */
      public static void getOneRecord(String tableName, String rowKey)
          throws IOException {
        HTable table = new HTable(conf, tableName);
        Get get = new Get(rowKey.getBytes());
        Result rs = table.get(get);
        for (KeyValue kv : rs.raw()) {
          System.out.print(new String(kv.getRow()) + " ");
          System.out.print(new String(kv.getFamily()) + ":");
          System.out.print(new String(kv.getQualifier()) + " ");
          System.out.print(kv.getTimestamp() + " ");
          System.out.println(new String(kv.getValue()));
        }
      }

      /**
       * 显示所有数据
       */
      public static void getAllRecord(String tableName) {
        try {
          HTable table = new HTable(conf, tableName);
          Scan s = new Scan();
          ResultScanner ss = table.getScanner(s);
          for (Result r : ss) {
            for (KeyValue kv : r.raw()) {
              System.out.print(new String(kv.getRow()) + " ");
              System.out.print(new String(kv.getFamily()) + ":");
              System.out.print(new String(kv.getQualifier()) + " ");
              System.out.print(kv.getTimestamp() + " ");
              System.out.println(new String(kv.getValue()));
            }
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         try {
              String tablename = "scores";
              String[] familys = { "grade", "course" };
              HBaseTest.creatTable(tablename, familys);

              // add record zkb
              HBaseTest.addRecord(tablename, "zkb", "grade", "", "5");
              HBaseTest.addRecord(tablename, "zkb", "course", "", "90");
              HBaseTest.addRecord(tablename, "zkb", "course", "math", "97");
              HBaseTest.addRecord(tablename, "zkb", "course", "art", "87");
              // add record baoniu
              HBaseTest.addRecord(tablename, "baoniu", "grade", "", "4");
              HBaseTest
                  .addRecord(tablename, "baoniu", "course", "math", "89");

              System.out.println("===========get one record========");
              HBaseTest.getOneRecord(tablename, "zkb");

              System.out.println("===========show all record========");
              HBaseTest.getAllRecord(tablename);

              System.out.println("===========del one record========");
              HBaseTest.delRecord(tablename, "baoniu");
              HBaseTest.getAllRecord(tablename);

              System.out.println("===========show all record========");
              HBaseTest.getAllRecord(tablename);
            } catch (Exception e) {
              e.printStackTrace();
            }
          }
    }

7. 添加日志配置

文件名log4j.properties,内容如下:

# Configure logging for testing: optionally with log file
#log4j.rootLogger=debug,appender
log4j.rootLogger=info,appender
#log4j.rootLogger=error,appender
#\u8F93\u51FA\u5230\u63A7\u5236\u53F0
log4j.appender.appender=org.apache.log4j.ConsoleAppender
#\u6837\u5F0F\u4E3ATTCCLayout
log4j.appender.appender.layout=org.apache.log4j.TTCCLayout

添加完这两个文件,目录结构为:

8. 运行代码

右键-->Run as -->java application,如果成功的话,console会有如下输出:

至此,hbase在windows系统下的eclipse开发环境就部署成功了。

四、参考

1. eclipse maven 插件的安装和配置

2. Eclipse 安装SVN、Maven插件

3. eclipse+HBASE开发环境搭建(已实践)

4. HBase 开发环境搭建(Eclipse+Maven)

(完)

原文地址:https://www.cnblogs.com/harrymore/p/9131358.html

时间: 2024-08-28 11:27:32

eclipse+hbase开发环境部署的相关文章

【甘道夫】Eclipse+Maven搭建HBase开发环境及HBaseDAO代码示例

环境: Win764bit Eclipse Version: Kepler Service Release 1 java version "1.7.0_40" 第一步:Eclipse中新建Maven项目,编辑pom.xml并更新下载jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu

【J2EE】Struts2+Tomcat开发环境部署,“Hello World”的实现

1.在官网下载Struts2的开发包 下载链接如下: http://120.203.229.30/5ff/2bc79/5ff16ae8698e1c321758a8f03a1bc0939892bc79/struts-2.3.16.3-all.zip?n=struts-2.3.16.3-all.zip http://mirrors.cnnic.cn/apache//struts/documentation/struts-2.3.16.3-docs.zip http://mirrors.cnnic.c

Java3D 集成开发环境部署与配置(含实例)

Java 3D开发相关的准备: 第一:下载Java 3D库 参考网址一:https://java3d.java.net/ 参考网址二: http://translate.google.com/translate?hl=zh-CN&rurl=translate.google.com.hk&tl=zh-CN&u=http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-j

搭建Eclipse+MyEclipse开发环境

Eclipse+MyEclipse区别: 一个是开源免费的软件,一个是基由开源免费而开发的收费软件. MyEclipse是在Eclipse的基础上添加了更多插件... 我觉得MyEclipse比Eclipse更容易操作,使用方便.但它是收费的~-_ myEclipse是商业用途, 要注册的, 而且不开源, 因为版权问题, 所以一般的公司是不会用MYECLIPSE ECLIPSE是开源的, 也可以用于WEB开发, 比如装上WTP 插件, 就可以了 Eclipse:IBM 花了4千万美金来开发这个I

Android开发环境部署

由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在OSC博客中全文转发这两本书的全部内容. 第1章 开发环境部署 本章主要内容: 简单介绍本书内容的架构.编译环境的搭建以及如何利用Eclipse调试SystemServer进程. 1.1  系统架构 到目前为止,Android系统的最新版本是4.0.3.而就在本书即将完稿之时,业界有传闻说Android 4.0.4版本已经对大厂商发布.Android系

Eclipse Android开发环境的搭建步骤及注意事项

作者:不完整 Email:[email protected] qq: 915043835 前言 作为一个初学者,在进行Eclipse android开发环境的搭建中耗费了挺长的时间.虽然网上有很多关于开发环境搭建的演示讲解,但是参照这些演示讲解进行操作的过程中还是出现了很多问题.因此,整理自己的开发环境搭建过程,供有需要的小白们共同学习借鉴. 步骤概要 第一步:下载安装JDK. 第二步:配置Windows上JDK的变量环境. 第三步:下载ADT bundle(集成ADT的Eclipse开发环境)

J2EE分布式框架之开发环境部署(下)

本篇继续为大家讲解J2EE分布式框架的开发环境部署: Eclipse中配置maven安装目录和Setting文件加载的本地库目录 11.导入Maven项目 File>Import>Existing Maven Projects>下一步 选择你本地的maven项目(请选中jeesz-project根目录),点击确定 加载出来所有项目后,点击finish完成 提醒:这个导入的过程要一段时间,因为我本地连接网络,所以会从远程中央库下载项目所需要的所有的jar包,请大家耐心等候. 如果你使用了本

JEESZ分布式框架之开发环境部署(下)

本篇继续为大家讲解J2EE分布式框架的开发环境部署: 10.  Eclipse中配置maven安装目录和Setting文件加载的本地库目录 11.导入Maven项目 File>Import>Existing Maven Projects>下一步 选择你本地的maven项目(请选中jeesz-project根目录),点击确定 加载出来所有项目后,点击finish完成 提醒:这个导入的过程要一段时间,因为我本地连接网络,所以会从远程中央库下载项目所需要的所有的jar包,请大家耐心等候. 如果

Ubuntu 12.04 搭建 Eclipse Android 开发环境(转)

Ubuntu 12.04 搭建 Eclipse Android 开发环境 http://blog.sina.com.cn/s/blog_93dc666c0101b39p.html (2012-09-07 00:40:48) 转载▼ 标签: ubuntu android linux eclipse it 分类: Linuxubuntu 一,安装32位库 1. 如果 linux 是 64 位的,不安装 32 位库,会导致无法创建 Android 模拟器. $sudo apt-get install