Windows安装Hbase并用c# Thrift访问hbase

发布日期:2019-05-28 10:46:21
倒腾了好几天,终于将hbase在windows下安装成功了,首先要感谢这篇博客:

https://blog.csdn.net/yuebao1991/article/details/72629479

下面我记录一下安装的过程,以备下次再遇到安装这种环境:

1.下载安装包,jdk1.8,hadoop以及hbase

64位jdk1.8


hadoop-common-2.2.0-bin-master.zip


hbase-1.2.0-bin.zip


或者百度网盘

https://pan.baidu.com/s/1Z9Eedbh44Pjr_ZGnDI5pNg 密码:0mc5


下载hbase也可以去官网下载自己所需要的的版本,我这里用的是hbase-1.2.0

官网地址:http://archive.apache.org/dist/hbase/

2.配置hadoop环境

在系统环境变量中增加HADOOP_HOME,并在path中增加%HADOOP_HOME%\bin

3.配置hbase环境

在hbase-1.2.0\conf下找到hbase-env.cmd

配置以下属性:


set HBASE_MANAGES_ZK=false
set JAVA_HOME=D:\DEV\env\jdk1.8.0_77


set HBASE_CLASSPATH=F:\hbase\hbase-1.2.0\conf


JAVA_HOME配置自己的jdk路径


HBASE_CLASSPATH配置自己的hbase中conf文件夹路径


在hbase-1.2.0\conf中找到hbase-site.xml


配置以下属性:


<property> 
<name>hbase.rootdir</name>  
<value>d:/hbase-1.2.0/root</value>  
</property>  
<property>  
<name>hbase.tmp.dir</name>  
<value>d:/hbase-1.2.0/tem</value>  
</property>  
<property>  
<name>hbase.zookeeper.quorum</name>  
<value>127.0.0.1</value>  
</property>  
<property>  
<name>hbase.zookeeper.property.dataDir</name>  
<value>d:/hbase-1.2.0/zoo</value>  
</property>  
<property>  
<name>hbase.cluster.distributed</name>  
<value>false</value>  
</property>

 



同样,涉及到路径的都配置自己的hbase中的路径,其中没有的文件夹,会自己创建


4.启动hbase


进入到hbase-1.2.0\bin目录下,启动start-hbase.cmd,看到控制台无报错信息,并启动停止即可


在cmd模式下,进入到hbase-1.2.0\bin目录下:


输入命令:hbase shell


出现hbase(main):001.0>


恭喜,成功搭建好单机版的hbase环境


5.创建表


输入 create 'user','nameinfo'

正常的话会出现类似 0 row(s) in 1.3200 seconds 这样的结果

输入list

即可看见刚才创建的表user

 =====================================================================

以上部分为转载,下面是个人添加的部分

通过web访问方式

http://127.0.0.1:16010


附:.net c# 连接 hbase

首先在windows hbase服务器上可通过hbase.cmd thrift start 可启动thrift服务,然后可以使用以下代码做测试

下载c#源码


using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thrift;
using Thrift.Protocol;
using Thrift.Transport;
using Thrift.Collections;
using Thrift.Server;
using ThriftHbaseCommon;


namespace TestConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            TTransport transport = null;
            try
            {
                //实例化Socket连接
                transport = new TSocket("127.0.0.1", 9090);
                //实例化一个协议对象
                TProtocol tProtocol = new TBinaryProtocol(transport);
                //实例化一个Hbase的Client对象
                var client = new Hbase.Client(tProtocol);
                //打开连接
                transport.Open();
                //根据表名,RowKey名来获取结果集
                Listreslut = client.getRow(Encoding.UTF8.GetBytes("User"), Encoding.UTF8.GetBytes("row1"), null);
                //遍历结果集
                foreach (var key in reslut)
                {
                    Console.WriteLine("RowKey:\n{0}",Encoding.UTF8.GetString(key.Row));
                    //打印Qualifier和对应的Value
                    foreach (var k in key.Columns)
                    {
                        Console.WriteLine("Family:Qualifier:" + "\n" + Encoding.UTF8.GetString(k.Key));
                        Console.WriteLine("Value:"+Encoding.UTF8.GetString(k.Value.Value));
                    }
                }
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e);
            }
            finally
            {
                if (null != transport)
                {
                    transport.Close();
                }
            }
            Console.ReadLine();
        }
    }
}