HBase 的安装部署


参考: https://www.imooc.com/learn/881
在这里插入图片描述

版本说明

JDK1.7 + hadoop2.7.3 + Hbase-1.2.4 + zookeeper-3.4.9

机器说明

IP服务主机名
192.168.56.51Hadoop、HBaseyqLinux2
192.168.56.60zookeepercolony-1
192.168.56.61zookeepercolony-2
192.168.56.62zookeepercolony-3

下载地址

cdh版本下载地址:http://archive.cloudera.com/cdh5/cdh/5
官网版本下载地址:http://archive.apache.org/dist

本文下载地址:

推荐直接将下载地址复制到迅雷下载,速度会比浏览器下载快很多。

Hadoop 2.x单节点安装

1、解压hadoop安装包

配置文件路径:hadoop-2.x/etc/hadoop

2、配置 hadoop-env.sh
查看 jdk 环境变量值:
在这里插入图片描述
配置hadoop的Java环境:
在这里插入图片描述
3、配置文档说明
https://hadoop.apache.org/docs/r2.7.3/
进入单节点设置。
在这里插入图片描述
配置文件示例。
在这里插入图片描述
配置参数说明文档。
在这里插入图片描述
4、配置域名
查看主机名。
在这里插入图片描述
查看本机ip地址。
在这里插入图片描述
配置主机名指向本机ip。
在这里插入图片描述
5、配置core-site.xml
在hadoop根目录创建data/tmpmkdir -p data/tmp

<configuration>
    <property>
		<!-- 文件系统目录地址 -->
        <name>fs.defaultFS</name>
        <value>hdfs://yqLinux2:9000</value>
    </property>
	<property>
		<!--  持久化目录地址 -->
        <name>hadoop.tmp.dir</name>
        <value>/home/bigdata/hadoop-2.x/data/tmp</value>
    </property>
</configuration>

6、配置hdfs-site.xml

<configuration>
    <property>
    	<!-- 指定副本数,我们是单节点,所以值为:1  -->
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
    	<!-- 禁用权限检查-->
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
</configuration>

7、启动hadoop

# 进行hsdf数据格式化
[root@yqLinux2 hadoop-2.5.0-cdh5.3.0]# bin/hdfs namenode -format

在这里插入图片描述

# 启动 namenode 和 datanode
[root@yqLinux2 hadoop-2.5.0-cdh5.3.0]# sbin/hadoop-daemon.sh start namenode
[root@yqLinux2 hadoop-2.5.0-cdh5.3.0]# sbin/hadoop-daemon.sh start datanode

# 停止 namenode 和 datanode
[root@yqLinux2 hadoop-2.5.0-cdh5.3.0]# sbin/hadoop-daemon.sh stop namenode
[root@yqLinux2 hadoop-2.5.0-cdh5.3.0]# sbin/hadoop-daemon.sh stop datanode

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看hadoop进程。
在这里插入图片描述
8、进入hadoop管理页面
配置windows hosts:(C:\Windows\System32\drivers\etc\)

192.168.56.51	yqLinux2

hadoop默认端口是:50070
地址:http://yqlinux2:50070http://192.168.56.51:50070
会自动跳转到:http://yqlinux2:50070/dfshealth.html#tab-overview
在这里插入图片描述

Zookeeper 3.4.9集群安装

首先解压zookeeper安装包。

配置文件路径:zookeeper-3.4.9/conf

1、集群地址和主机名
参考机器说明。

2、配置说明文档
http://zookeeper.apache.org/doc/r3.4.9/
在这里插入图片描述
zoo.cfg配置示例。
在这里插入图片描述
3、三台集群机器分别配置域名
在这里插入图片描述

4、配置 zoo.cfg
第一步:将 zoo_sample.cfg 重命名为:zoo.cfg
第二步:在zookeeper根目录创建zkData文件夹。

[root@colony-1 zookeeper-3.4.5-cdh5.10.0]# mkdir -p zkData

第三步:打开zoo.cfg文件进行配置

# 数据目录地址
dataDir=/home/bigdata/zookeeper-3.4.9/zkData
server.1=colony-1:2888:3888
server.2=colony-2:2888:3888
server.3=colony-3:2888:3888

5、配置myid
表单server.X的条目列出构成ZooKeeper服务的服务器。当服务器启动时,它通过在数据目录中查找文件myid来知道它是哪个服务器 。该文件包含服务器编号,ASCII格式。
所以需要在zkData目录下创建myid文件。[root@colony-1 zkData]# touch myid
在这里插入图片描述
1表示第一台服务器编号。
在这里插入图片描述

6、将配置好的zookeeper文件夹分发到其他集群机器

[root@colony-1 bigdata]# scp -r zookeeper-3.4.9/ colony-2:/home/bigdata

7、修改服务器编号
分别修改第二台和第三台服务器编号。
在这里插入图片描述
在这里插入图片描述

8、三台集群机器分别启动zookeeper服务

# 在zookeeper根目录运行
[root@colony-2 zookeeper-3.4.5-cdh5.10.0]# bin/zkServer.sh start

HBase 1.2.4安装

解压Hbase安装包。
官方说明文档地址:http://hbase.apache.org/book.html#quickstart

配置文件路径:hbase-1.2.4/conf

1、配置hbase-env.sh

export JAVA_HOME=/usr/local/src/mysql/java/jdk1.7.0_75
export HBASE_MANAGES_ZK=false

2、配置hbase-site.xml
官方配置示例。
在这里插入图片描述
hbase根目录创建/data/tmp文件夹。

<configuration>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/bigdata/hbase-1.2.4/data/tmp</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://yqLinux2:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
  	<!-- zookeeper配置-->
    <name>hbase.zookeeper.quorum</name>
    <value>colony-1,colony-2,colony-3</value>
  </property>
</configuration>

3、配置regionservers
本机主机名。

yqLinux2

4、启动hbase服务

# 在 hbase根目录运行
[root@yqLinux2 hbase-0.98.6-cdh5.3.0]# bin/start-hbase.sh

hbase服务的两个进程。
在这里插入图片描述
5、进入hbase管理页面
HBase1.0之后的版本web端访问的接口变更为16010。
地址:http://yqlinux2:16010或 http://192.168.56.51:16010
会自动跳转到:http://yqlinux2:16010/master-status
在这里插入图片描述

HBase Shell 操作Hbase数据库

要访问HBase shell,必须导航进入到HBase的主文件夹。

#进入shell
/bin/hbase shell

#列出HBase的所有表。
hbase(main):001:0> list
TABLE

在这里插入图片描述
在这里插入图片描述

Java API 操作Hbase数据库

首先创建一个Maven工程。

1、在 resources 目录下创建 hbase-site.xmllog4j.properties 文件
hbase-site.xml:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/bigdata/hbase-1.2.4/data/tmp</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://yqLinux2:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
        <!-- zookeeper配置-->
    <name>hbase.zookeeper.quorum</name>
    <value>192.168.56.60,192.168.56.61,192.168.56.62</value>
  </property>
</configuration>

log4j.properties:

log4j.rootLogger=INFO, stdout
# MyBatis logging configuration...
.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

2、导入依赖

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>1.2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-server</artifactId>
    <version>1.2.0</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

3、下载 winutils
http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
创建文件夹:C:\hadoop\bin
winutils.exe 文件放到 bin 文件夹中。
需要在代码中添加:System.setProperty("hadoop.home.dir", "C:\\hadoop\\");

4、编写代码

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.client.Table;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class HbaseTest {

  // 用hbaseconfiguration初始化配置信息时会自动加载当前应用classpath下的hbase-site.xml
  public static Configuration configuration = HBaseConfiguration.create();
  public Connection connection;
  public Table table;
  public Admin admin;

  @Before
  public void before() throws Exception {
    System.setProperty("hadoop.home.dir", "C:\\hadoop\\");
//    System.setProperty("zookeeper.client.sasl","false");
    // 对connection初始化
    connection = ConnectionFactory.createConnection(configuration);
    admin = connection.getAdmin();
  }

  @After
  public void after() throws Exception{
    cleanUp();
  }

  // 关闭连接
  public void cleanUp() throws Exception {
    connection.close();
  }

  @Test
  // 创建表
  public void createTable() throws Exception {
    String tableName = "hbaseTest";
    String[] cf1 = {"i", "j"};
    // 获取admin对象
    Admin admin = connection.getAdmin();
    // 创建TableName对象描述表的名称信息
    TableName tname = TableName.valueOf(tableName);
    // 创建HTableDescriptor对象,描述表信息
    HTableDescriptor tDescriptor = new HTableDescriptor(tname);
    // 判断是否表已存在
    if (admin.tableExists(tname)) {
      System.out.println("表" + tableName + "已存在");
      return;
    }
    // 添加表列簇信息
    for (String cf : cf1) {
      HColumnDescriptor famliy = new HColumnDescriptor(cf);
      tDescriptor.addFamily(famliy);
    }
    // 调用admin的createtable方法创建表
    admin.createTable(tDescriptor);
    System.out.println("表" + tableName + "创建成功");
  }
}

遇到的问题

问题1

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
在这里插入图片描述

问题1解决

不能加载Hadoop包,可能是Windows缺少这个winutils的文件。
一篇网上比较不错的解决方案。
具体如下:

  • 1、Download winutils.exe from http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe.
    Also, be sure to download the correct winutils.exe based on the version of hadoop that spark is compiled for (so, not necessarily the link above)
  • 2、create a folder c:\hadoop\bin
  • 3、add Download winutils.exe to the c:\hadoop\bin.
  • 4、Set environment variable HADOOP_HOME to C:\hadoop.warning!set HADOOP_HOME to hadoop folder instead of the bin folder.
    OR,System.setProperty(“hadoop.home.dir”, “C:\hadoop”) in your code.

参考:https://stackoverflow.com/questions/35652665/java-io-ioexception-could-not-locate-executable-null-bin-winutils-exe-in-the-ha

问题2(zookeeper SASL 认证错误排除)

参考:https://blog.csdn.net/yangguorong123456/article/details/79608675

参考:
HBase安装配置以及Java操作hbase

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值