`

java远程连接standalone hbase

阅读更多
本文主要描述如何实现在一台Linux机器上搭建一个standalone的hbase,在另外一台机器上通过API访问

服务器端环境搭建:
1.版本信息
  java:1.8.0_172
  hbase: 1.2.6

2.设置JAVA_HOME
  在~/.bash_profile中追加如下内容
 
 
  JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
  export JAVA_HOME
  

  执行如下命令使上述设置立即生效
 
 source ~/.bash_profile

3.设置hostname
 
hostname docker05

4.下载hbase, 点击下载
5.解压下载的文件
$ tar xzvf hbase-1.2.6-bin.tar.gz


6.修改conf下的文件,使能通过远程连接
6.1 进入conf文件夹
cd ./hbase-1.2.6/conf

6.2 修改hbase-site.xml文件,最主要是追加hbase.zookeeper.quorum属性,因为默认是localhost,只能在本机访问,修改成hostname才能远程访问
<?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>
 <property>
    <name>hbase.rootdir</name>
    <value>file:///root/data/hbase/data</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/root/data/hbase/zookeeper</value>
  </property>
   <property>
    <name>hbase.client.retries.number</name>
    <value>5</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <!--注意这里改为自己的hostname-->
    <value>docker05</value>
  </property>
   <property>
    <name>hbase.zookeeper.property.clientport</name>
    <value>2181</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
    <description>
      Controls whether HBase will check for stream capabilities (hflush/hsync).

      Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
      with the 'file://' scheme, but be mindful of the NOTE below.

      WARNING: Setting this to false blinds you to potential data loss and
      inconsistent system state in the event of process and/or node failures. If
      HBase is complaining of an inability to use hsync or hflush it's most
      likely not a false positive.
    </description>
  </property>
</configuration>

6.3 修改regionservers文件
删除localhost,修改成hostname



7.启动hbase
 
cd ./hbase-1.2.6/bin

  执行
 
./start-hbase.sh

  正常情况下hbase就会启动好了,可通过jps命令查看是否有 **** HMaster 来判断
 


客户端配置
1.配置hostname
在客户端机器上也需要设置hostname,如192.168.0.172 docker05
2.将服务器上的hbase-site.xml 拷贝到客户端并放到工程根目录下
3.工程目录如下




4.工程的pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>falcon.chengf</groupId>
	<artifactId>simple-hbase-test</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>org.apache.hbase</groupId>
			<artifactId>hbase-client</artifactId>
			<version>1.3.1</version>
		</dependency>
	</dependencies>
</project>

5.测试类
/**
 * 
 */
package simple.hbase.test;

import java.io.IOException;
import java.io.InputStream;

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.io.compress.Compression.Algorithm;

/**
 * @author: 作者: chengaofeng
 * @date: 创建时间:2018-05-31 16:12:35
 * @Description: TODO
 * @version V1.0
 */
public class HbaseTest {
	public static void main(String[] args) throws IOException {
		Configuration config = HBaseConfiguration.create();
		InputStream input = HbaseTest.class.getResourceAsStream("/hbase-site.xml");
		config.addResource(input);
		try (Connection connection = ConnectionFactory.createConnection(config); Admin admin = connection.getAdmin()) {

			HTableDescriptor table = new HTableDescriptor(TableName.valueOf("chengf"));
			table.addFamily(new HColumnDescriptor("columns").setCompressionType(Algorithm.NONE));

			System.out.print("Creating table. ");
			if (admin.tableExists(table.getTableName())) {
				admin.disableTable(table.getTableName());
				admin.deleteTable(table.getTableName());
			}
			admin.createTable(table);
			System.out.println(" create table ok.");
		}
	}
}


6.执行后,控制台信息如下

7.登录hbase服务器,可以看到chengf表创建成功



8.遇到的异常
8.1,只是设置了服务器的hostname,没有修改hbase-site.xml 和regionservers的内容,最终结果只能在服务器端通过shell操作hbase,在client机器上连接一直报org.apache.hadoop.hbase.ipc.FailedServerException: This server is in the failed servers list: localhost/127.0.0.1:60020 一类的错误,后来把hbase-site.xml 和regionservers改完后,重新启动才好了
8.2 启动报错
2019-12-06 16:16:21,277 ERROR [main] regionserver.HRegionServer: Failed construction RegionServer
java.lang.UnsupportedOperationException: Constructor threw an exception for org.apache.hadoop.hbase.ipc.NettyRpcServer
	at org.apache.hadoop.hbase.util.ReflectionUtils.instantiate(ReflectionUtils.java:66)
	at org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:45)
	at org.apache.hadoop.hbase.ipc.RpcServerFactory.createRpcServer(RpcServerFactory.java:66)
	at org.apache.hadoop.hbase.master.MasterRpcServices.createRpcServer(MasterRpcServices.java:368)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:1240)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:1196)
	at org.apache.hadoop.hbase.master.MasterRpcServices.<init>(MasterRpcServices.java:346)
	at org.apache.hadoop.hbase.master.HMaster.createRpcServices(HMaster.java:727)
	at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:589)
	at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:495)
	at org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster.<init>(HMasterCommandLine.java:308)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:132)
	at org.apache.hadoop.hbase.LocalHBaseCluster.addMaster(LocalHBaseCluster.java:227)
	at org.apache.hadoop.hbase.LocalHBaseCluster.<init>(LocalHBaseCluster.java:174)
	at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:229)
	at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
	at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:3123)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.hadoop.hbase.util.ReflectionUtils.instantiate(ReflectionUtils.java:58)
	... 22 more
Caused by: java.net.BindException: Can't assign requested address
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at org.apache.hbase.thirdparty.io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:128)
	at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558)
	at org.apache.hbase.thirdparty.io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1283)
	at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)
	at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)
	at org.apache.hbase.thirdparty.io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:989)
	at org.apache.hbase.thirdparty.io.netty.channel.AbstractChannel.bind(AbstractChannel.java:254)
	at org.apache.hbase.thirdparty.io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:364)
	at org.apache.hbase.thirdparty.io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)

因为自己的hosts文件中配置了其他的信息,启动有影响,修改hosts,注释掉无关的配置,追加hostname 和 回环IP的映射
127.0.0.1	localhost
127.0.0.1	chengaofeng
#255.255.255.255	broadcasthost
#192.168.0.138 docker02
#192.168.0.173 config-server1 mcsas-mongo kafka1 redis zookeeper1 mongo-master mcsas-mongo elasticsearch es1
  • 大小: 13.2 KB
  • 大小: 41.4 KB
  • 大小: 12.5 KB
  • 大小: 54.4 KB
  • 大小: 33.7 KB
分享到:
评论

相关推荐

    springboot整合spark连接远程服务计算框架使用standAlone模式

    当需要在Spring Boot应用中整合Spark进行远程服务计算时,通常会采用Spark的Standalone模式。本文将深入探讨如何将Spring Boot与Spark集成,并使用Standalone模式来实现远程服务计算。 首先,我们需要了解Spark ...

    selenium-server-standalone和Selenium-java的jar包

    在这个主题中,我们将深入探讨"**selenium-server-standalone**"和"**Selenium-java**"这两个jar包,以及它们在Java+Selenium自动化测试中的作用。 首先,**selenium-server-standalone.jar**是Selenium WebDriver...

    java8看不到源码-docker-hbase-standalone:Docker自动构建提供独立的hbase0.98.10

    java8 看不到源码Docker HBase 独立 Dockerfile 此存储库包含Dockerfile for 发布到 public 。 基础 Docker 镜像 安装 安装 下载: docker pull cogniteev/hbase-standalone 基本用法 docker run -d -p 2181:2181 -p...

    hbase 完全使用手册

    接下来,手册讲解了 HBase 的两种运行模式:Standalone(单机模式)和 Distributed(分布式模式)。在单机模式下,HBase 可以在没有任何其他 Hadoop 组件的情况下运行,这对于学习和开发来说非常方便。而在分布式...

    apache hbase reference guide pdf

    接着,指南会详细地描述HBase的运行模式,包括单机模式(Standalone)和分布式模式(Distributed),并提供检查和确认HBase安装是否成功的步骤。 随后,指南会介绍如何进行HBase的配置,包括默认配置和示例配置。这...

    apache_hbase_reference_guide(官网).pdf

    - **连接(Joins)**,虽然HBase本身不直接支持连接操作,但文档中介绍了如何通过HBase外部的解决方案进行连接。 - **二级索引和替代查询路径**,解释了二级索引的使用和如何支持替代的查询方式。 - **约束**,包括...

    hbase_libJar包

    此外,还需要配置HBase的配置文件`hbase-site.xml`,设置诸如集群模式(standalone或distributed)、Zookeeper地址等关键参数。例如,如果你的HBase运行在分布式模式下,你需要指定`hbase.cluster.distributed`属性...

    HbaseReferenceBook-Hbase参考指南英文版

    本书还会介绍HBase的运行模式,包括独立模式(Standalone)和分布式模式(Distributed),以及如何运行和验证HBase安装的成功。HBase的独立模式适用于开发和测试环境,而分布式模式则是生产环境的首选,它支持在多台...

    hbase-apache离线官方文档

    7. HBase runmodes: Standalone and Distributed(HBase运行模式:单机模式和分布式模式) - HBase支持单机和分布式两种运行模式。文档将指导用户如何根据需要选择和配置正确的运行模式。 8. Running and ...

    selenium-server-standalone-2.40

    在这个名为 "selenium-server-standalone-2.40" 的压缩包中,包含了Selenium Server的独立版本以及相关的Java库。 1. **Selenium Server Standalone**: Selenium Server Standalone是Selenium的核心组件之一,它...

    jython-standalone-2.7.0.jar

    在Java项目中使用Jython,首先需要引入jython-standalone-2.7.0.jar这个库。这个版本的Jython支持Python 2.7,尽管Python 2.x已经不再维护,但在某些遗留系统或特定需求下仍需使用。将这个jar包添加到项目的类路径后...

    selenium-server-standalone-2.44.0,selenium-java-2.44.0,java-client-2.2.0三件套

    标题中的“selenium-server-standalone-2.44.0”、“selenium-java-2.44.0”和“java-client-2.2.0”分别指的是Selenium WebDriver的三个关键组件,它们在自动化Web浏览器测试中起着至关重要的作用。Selenium是一个...

    hbase权威指南

    HBase的操作模式分为独立模式(Standalone Mode)和分布式模式(Distributed Mode),书中解释了这两种运行模式的不同之处,并强调了对HBase配置文件(如hbase-site.xml和hbase-default.xml)的理解和同步配置的重要...

    HBase官网文档解读.pdf

    HBase提供了三种安装模式,分别是独立模式(Standalone)、伪分布式模式(Pseudo-Distributed)以及完全分布式模式(Full-Distributed)。 - 独立模式:是一种单节点部署方式,所有的进程都运行在一台机器上,通常...

    apache_hbase_reference_guide-3.0.0-SNAPSHOT

    1. Getting Started 部分通常介绍如何开始使用 HBase,包括安装、配置和基础运行,如 Standalone 模式的快速启动示例。 2. Apache HBase Configuration 部分介绍了 HBase 的配置文件,包括配置文件的构成、基本要求...

    apache hbase reference guide

    - Java Development Kit (JDK):HBase依赖于JDK运行,推荐使用最新稳定版本。 - ZooKeeper:作为协调服务,用于管理HBase集群的状态信息。 - 操作系统支持:Linux或类Unix系统为最佳选择。 - **HBaserun modes: ...

    selenium-server-standalone-3.8.1和selenium-java-3.7.1

    它提供了多种编程语言接口,包括 Java、Python、C# 和 Ruby 等,使得开发者能够编写脚本来模拟用户与浏览器的交互,进行功能和兼容性测试。 标题中的 "selenium-server-standalone-3.8.1" 指的是 Selenium 的独立...

    独立部署模式standalone下spark的配置

    独立部署模式standalone下spark配置,从乌班图到jak,scala,hadoop,spark的安装 部署

    在hadoop-3.1.2上安装hbase-2.2.1.pdf

    关于分布式安装,请浏览:http://hbase.apache.org/book/standalone_dist.html#distributed,关于HBase使用外置的ZooKeeper配置,请浏览:http://hbase.apache.org/book/zookeeper.html。所有在线的文档,均会出现在...

    HBase单机环境搭建(超细)

    HBase 的运行依赖于 Java 环境,且自 HBase 2.0+ 版本起,已不再支持 JDK 1.7,因此必须安装 JDK 1.8 或更高版本。尽管文档中未详细描述 JDK 的安装步骤,但通常的安装流程包括下载 JDK 安装包、解压、配置环境变量...

Global site tag (gtag.js) - Google Analytics