HBase2.3.3 单机版搭建及Java操作

HBase 下载地址  https://mirrors.bfsu.edu.cn/apache/hbase/2.3.3/ 

在linux系统安装java,并配置对应环境变量

例如

export JAVA_HOME=/usr/local/jdk1.8.0_144
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

解压文件 

修改conf 下面的 hbase-env.sh

取消对下面语句的注释

export HBASE_MANAGES_ZK=true

修改hbase-site.xml

内容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<configuration>
  <!--
    The following properties are set for running HBase as a single process on a
    developer workstation. With this configuration, HBase is running in
    "stand-alone" mode and without a distributed file system. In this mode, and
    without further configuration, HBase and ZooKeeper data are stored on the
    local filesystem, in a path under the value configured for `hbase.tmp.dir`.
    This value is overridden from its default value of `/tmp` because many
    systems clean `/tmp` on a regular basis. Instead, it points to a path within
    this HBase installation directory.

    Running against the `LocalFileSystem`, as opposed to a distributed
    filesystem, runs the risk of data integrity issues and data loss. Normally
    HBase will refuse to run in such an environment. Setting
    `hbase.unsafe.stream.capability.enforce` to `false` overrides this behavior,
    permitting operation. This configuration is for the developer workstation
    only and __should not be used in production!__

    See also https://hbase.apache.org/book.html#standalone_dist
  -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/se7en/hbase/data</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
</configuration>

其它参数可以根据具体需要配置

使用bin目录下面的 start-hbase.sh启动hbase

jps测试是否安装成功

hbase shell 进入hbase管理命令行,进行相应的操作

Java 操作代码

主要类

  public List<Put> getHbaseData(String cf) {
        List<Put> puts = new ArrayList<Put>();
        for (int i = 0; i < 10000; i++) {
            Put put = new Put(Bytes.toBytes("kkkk" + i));
//            for (int j = 0; j < 100; i++) {
            put.addColumn(Bytes.toBytes(cf), Bytes.toBytes("ttt"), Bytes.toBytes("ttt"));
//            }
            puts.add(put);
        }
        return puts;
    }

    public static void main(String[] args) {
//        List<PointInfo> points = ExcelUtils.getExcelPoint();
        Application app = new Application();
//            String qq = "269466275";
//            String c = content.replace("qqCodeTmp", qq);
//            String data = SoapUtils.getValue(wsdl, c);
//            System.out.println(data);
        String tableName = ConfigPropsManager.getProperty(Constants.HBASE_TABLE_NAME);
        String cf = ConfigPropsManager.getProperty(Constants.HBASE_TABLE_CLOUMN_FAMILY);
        int batchSize = ConfigPropsManager.getInteger(Constants.HBASE_PUT_BATCH_SIZE);
        List<Put> puts = app.getHbaseData(cf);
        HBaseUtils.put(puts, tableName, batchSize);
    }
public static void put(List<Put> puts, String tableName, int batchSize) {
        final byte[] tableNameBytes = Bytes.toBytes(tableName);
        Configuration config = HBaseConfiguration.create();

        config.set("hbase.zookeeper.quorum", "hbase");
        config.set("hbase.zookeeper.property.clientPort", "2181");
//        config.set("hbase.rpc.timeout", "60");
//        config.set("hbase.client.operation.timeout", "60");
//        config.set("hbase.client.scanner.timeout.period", "60");
        Connection conn = null;
        try {
            Long start = System.currentTimeMillis();
            conn = ConnectionFactory.createConnection(config);
            Long end = System.currentTimeMillis();
            System.out.println("connect to hbase time(ms):" + (end - start));
            Table hbTableName = conn.getTable(TableName.valueOf(tableNameBytes));
//            hbTableName.setOperationTimeout(30);
//            hbTableName.setRpcTimeout(30);
            Long start1 = System.currentTimeMillis();
            List<Put> putList = new ArrayList<Put>();
            System.out.println(new Date() + ": total puts count:" + puts.size());
            int count = 0;
            while (puts.size() > 0) {
                Put put = puts.get(0);
                putList.add(put);
                count++;
                if (count > 0 && count % batchSize == 0) {
                    hbTableName.put(putList);
                    System.out.println(new Date() + ": total puts count:" + putList.size());
                    putList.clear();
                    count = 0;
                }
                puts.remove(put);
            }
            // 发送到Hbase
            if (putList.size() > 0) {
                hbTableName.put(putList);
                putList.clear();
            }
            Long end1 = System.currentTimeMillis();
            System.out.println("put to hbase time(ms):" + (end1 - start1));
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (IOException e) {
                }
            }
        }
    }

一定要注意上段代码标红的位置,值hbase一定要在hosts文件中加入对应关系,如果对应的地址有多个一定要注意其先后顺序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值