Java操作远程Hbase详细步骤

         本人最近在一个广告公司做点击率预估算法研究,由于数据源在Hbase中,故需要通过Java远程访问Hbase,在网上搜了很多相关程序,试了很久才跑通,过程中各种报错,心力交瘁,我总结下原因大致是对各种ip地址和端口号不理解,所以,就此叙述下详细的步骤(有说的不合理的地方,希望包含)。

      首先,简述下访问远程Hbase数据库的过程,第一,需要查询远程服务器的ip地址,假设为“10.1.8.241”,这台机器是物理机,真实存在的,其次,将在这台物理机中的虚拟机上配置hadoop多结点集群(这一般是别人配置好的),结点分为两大类角色,一类是master,作为主节点,负责管理文件系统的命名空间和客户端对文件系统的访问操作;另一类是slave,作为从结点,负责管理存储的数据。这里最重要的是由于主节点和每个从结点都会有一个ip地址,在访问hbase的时候,千万别配置成结点的ip地址,因为你根本就访问不到,而是配置为服务器的ip地址,然后服务器会通过一个端口号和master结点建立链接,因此我们还需要配置一个端口号,假设为“2181”。这样就成功访问到了Hbase。

      在弄清楚访问远程Hbase数据库的过程后,然后,需要修改“C:\Windows\System32\drivers\etc”下的hosts文件,用于建立与服务器之间的映射关系,即,添加一行“10.1.8.241master”,其中“10.1.8.241”为服务器的ip地址。

      最后,就可以开始写代码了,首先,导入需要的jar包,这里我是直接从maven中导入:

      <dependency>
      	<groupId>org.apache.hbase</groupId>
     	<artifactId>hbase-server</artifactId>
	<version>0.96.1-hadoop2</version>
      </dependency>

         下面是访问远程Hbase数据库,遍历并打印出Hbase数据库中所有表的Java代码以及程序跑通后的截图:

package Utils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class HbaseTest {
    private HBaseAdmin admin = null;
    // 定义配置对象HBaseConfiguration
    private static Configuration configuration;
    public HbaseTest() throws Exception {
        configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","10.1.8.241");  //hbase 服务地址
        configuration.set("hbase.zookeeper.property.clientPort","2181"); //端口号
        admin = new HBaseAdmin(configuration);
    }
    // Hbase获取所有的表信息
    public List getAllTables() {
        List<String> tables = null;
        if (admin != null) {
            try {
                HTableDescriptor[] allTable = admin.listTables();
                if (allTable.length > 0)
                    tables = new ArrayList<String>();
                for (HTableDescriptor hTableDescriptor : allTable) {
                    tables.add(hTableDescriptor.getNameAsString());
                    System.out.println(hTableDescriptor.getNameAsString());
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
        return tables;
    }
    public static void main(String[] args) throws Exception {
        HbaseTest hbaseTest = new HbaseTest();
        hbaseTest.getAllTables();
    }
}

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值