​​​​​​​​​​​​​​6.HBASE安装操作

HBASE安装操作

下载地址: 

Index of /dist/hbase/2.1.0

上传并解压:

cd /export/software

rz上传

解压操作:

cd /export/software

tar -xvzf hbase-2.1.0.tar.gz -C ../server/

创建软连接

cd /export/server/

ln -s hbase-2.1.0/ hbase

      1. 修改HBase配置文件
        1. hbase-env.sh

cd /export/server/hbase/conf

vim hbase-env.sh

# 第28行

export JAVA_HOME=/export/server/jdk1.8.0_241/

export HBASE_MANAGES_ZK=false

        1. hbase-site.xml

vim hbase-site.xml

------------------------------

<configuration>

        <!-- HBase数据在HDFS中的存放的路径 -->

        <property>

            <name>hbase.rootdir</name>

            <value>hdfs://node1.itcast.cn:8020/hbase</value>

        </property>

        <!-- Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面 -->

        <property>

            <name>hbase.cluster.distributed</name>

            <value>true</value>

        </property>

        <!-- ZooKeeper的地址 -->

        <property>

            <name>hbase.zookeeper.quorum</name>

            <value>node1.itcast.cn,node2.itcast.cn,node3.itcast.cn</value>

        </property>

        <!-- ZooKeeper快照的存储位置 -->

        <property>

            <name>hbase.zookeeper.property.dataDir</name>

            <value>/export/server/zookeeper/zkdatas/</value>

        </property>

        <!--  V2.1版本,在分布式情况下, 设置为false -->

        <property>

            <name>hbase.unsafe.stream.capability.enforce</name>

            <value>false</value>

        </property>

</configuration>

        1. 配置环境变量

# 配置Hbase环境变量

vim /etc/profile

export HBASE_HOME=/export/server/hbase

export PATH=$PATH:${HBASE_HOME}/bin:${HBASE_HOME}/sbin

#加载环境变量

source /etc/profile

        1. 复制jar包到lib

cp $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar $HBASE_HOME/lib/

        1. 修改regionservers文件

cd /export/server/hbase/conf

vim regionservers

node1.itcast.cn

node2.itcast.cn

node3.itcast.cn

        1. 分发安装包与配置文件

cd /export/server

scp -r hbase-2.1.0/ node2.itcast.cn:$PWD

scp -r hbase-2.1.0/ node3.itcast.cn:$PWD

在node2和node3创建软链接

cd /export/server

ln -s hbase-2.1.0/ hbase

在node2.itcast.cn和node3.itcast.cn配置加载环境变量

source /etc/profile

        1. 启动HBase

cd /export/server

# 启动ZK (只是告诉大家需要启动zookeeper, 原来该怎么启动 还怎么启动)

./start-zk.sh

# 启动hadoop

start-all.sh

# 启动hbase

start-hbase.sh

        1. 验证Hbase是否启动成功

http://node1.itcast.cn:16010/master-status

 

或者:

# 启动hbase shell客户端

hbase shell

# 输入status

[root@node1 onekey]# hbase shell

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/export/server/hadoop-2.7.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/export/server/hbase-2.1.0/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

HBase Shell

Use "help" to get list of supported commands.

Use "exit" to quit this interactive shell.

Version 2.1.0, re1673bb0bbfea21d6e5dba73e013b09b8b49b89b, Tue Jul 10 17:26:48 CST 2018

Took 0.0034 seconds                                                                                                                                           

Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0

Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0

2.4.1 :001 > status

1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load

Took 0.4562 seconds                                                                                                                                           

2.4.1 :002 >

      1. WebUI

http://node1.itcast.cn:16010/master-status

 

      1. 安装目录说明

目录名

说明

bin

所有hbase相关的命令都在该目录存放

conf

所有的hbase配置文件

hbase-webapps

hbase的web ui程序位置

lib

hbase依赖的java库

logs

hbase的日志文件

      1. 参考硬件配置

针对大概800TB存储空间的集群中每个Java进程的典型内存配置:

进程

描述

NameNode

8 GB

每100TB数据或每100W个文件大约占用NameNode堆1GB的内存

SecondaryNameNode

8GB

在内存中重做主NameNode的EditLog,因此配置需要与NameNode一样

DataNode

1GB

适度即可

ResourceManager

4GB

适度即可(注意此处是MapReduce的推荐配置)

NodeManager

2GB

适当即可(注意此处是MapReduce的推荐配置)

HBase HMaster

4GB

轻量级负载,适当即可

HBase RegionServer

12GB

大部分可用内存、同时为操作系统缓存、任务进程留下足够的空间

ZooKeeper

1GB

适度

推荐:

  1. Master机器要运行NameNode、ResourceManager、以及HBase HMaster,推荐24GB左右
  2. Slave机器需要运行DataNode、NodeManager和HBase RegionServer,推荐24GB(及以上)
  3. 根据CPU的核数来选择在某个节点上运行的进程数,例如:两个4核CPU=8核,每个Java进程都可以独立占有一个核(推荐:8核CPU)
  4. 内存不是越多越好,在使用过程中会产生较多碎片,Java堆内存越大, 会导致整理内存需要耗费的时间越大。例如:给RegionServer的堆内存设置为64GB就不是很好的选择,一旦FullGC就会造成较长时间的等待,而等待较长,Master可能就认为该节点已经挂了,然后移除掉该节点
    1. 高可用搭建

Hbase的高可用指的就是Master的高可用, 其regionServer本身就是高可用

      1. 创建backup-masters文件

此文件用于标识将那些节点作为hbase的master的备份节点, 仅需要在node1配置即可

cd /export/server/hbase/conf

vim backup-masters

添加以下内容:

node2.itcast.cn

node3.itcast.cn

      1. 重启hbase即可

stop-hbase.sh

start-hbase.sh

查看webui,检查Backup Masters中是否有node2.itcast.cn、node3.itcast.cn

 

    1. Hbase和hive的集成
      1. 拷贝hive提供的base通信包
  1. 1) 将hive提供的一个和hbase集成的通信包放置到hbase的lib目录下

cd /export/server/hive/lib

cp hive-hbase-handler-3.1.2.jar /export/server/hbase/lib/

  1. 2) 分发给node2和node3

cd /export/server/hbase/lib

scp -r hive-hbase-handler-3.1.2.jar node2:$PWD

scp -r hive-hbase-handler-3.1.2.jar node3:$PWD

      1. 修改 hive-site.xml

cd /export/server/hive/conf

vim hive-site.xml

输入 i   进入 插入模式

插入以下内容:

   <property>

        <name>hive.zookeeper.quorum</name>

        <value>node1.itcast.cn,node2.itcast.cn,node3.itcast.cn</value>

   </property>

   <property>

        <name>hbase.zookeeper.quorum</name>

        <value>node1.itcast.cn,node2.itcast.cn,node3.itcast.cn</value>

   </property>

   <property>

        <name>hive.server2.enable.doAs</name>

        <value>false</value>

   </property>

发送给node2和node3

cd /export/server/hive/conf

scp -r hive-site.xml node2:$PWD 

scp -r hive-site.xml node3:$PWD

      1. 修改 hive-env.sh

cd /export/server/hive/conf

vim hive-env.sh

输入i 进入插入模式

添加以下内容:

export HBASE_HOME=/export/server/hbase/

发送给node2和node3

cd /export/server/hive/conf

scp -r hive-env.sh node2:$PWD 

scp -r hive-env.sh node3:$PWD

      1. 重启hbase和hive

这里省略前置启动zookeeper和hadoop的操作

启动hive:

cd /export/server/hive/bin

nohup ./hive --service metastore &

nohup ./hive --service hiveserver2 &

启动hbase:

start-hbase.sh

      1. 测试
  1. 1) 在hbase中创建一张表, 并添加相关的数据

create 'hive_hbase_score','C1'

put 'hive_hbase_score','rk001','C1:name','张三'

put 'hive_hbase_score','rk001','C1:age','20'

put 'hive_hbase_score','rk001','C1:score','80.5'

put 'hive_hbase_score','rk002','C1:name','李四'

put 'hive_hbase_score','rk002','C1:age','15'

put 'hive_hbase_score','rk002','C1:score','95.2'

put 'hive_hbase_score','rk003','C1:name','王五'

put 'hive_hbase_score','rk003','C1:age','18'

put 'hive_hbase_score','rk003','C1:score','89'

put 'hive_hbase_score','rk004','C1:name','赵六'

put 'hive_hbase_score','rk004','C1:age','20'

put 'hive_hbase_score','rk004','C1:score','50'

  1. 2) 在hive创建外部表与hbase进行集成操作

格式:

create  external table 表名 (

    字段1 类型,

    字段2 类型,

    字段3 类型

    ......

) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping"=":key,列族:列名,列族:列名....") tblproperties("hbase.table.name"="hbase表名");

注意:

1) 在构建hive表的时候, 理论上 hive的表名和字段名是可以任意的, 但是建议与要映射hbase表保持一致

2) hbase.columns.mapping  设置 hbase中列与 hive中列进行一一映射匹配, 第一个匹配第一个, 第二个匹配第二个,以此类推

3) hbase.table.name 设置当前hive表映射hbase的那个表

示例:

create database day03_hivetohbase;

use day03_hivetohbase;

create  external table hive_hbase_score (

id string,

name string,

age string,

score string

) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping"=":key,C1:name,C1:age,C1:score") tblproperties("hbase.table.name"="hive_hbase_score");

select * from hive_hbase_score;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL是一种关系型数据库,用于存储结构化数据。它使用SQL语言来管理和操作数据,支持多种数据类型,包括数字、字符串、日期、时间等等。MySQL最常用于Web应用程序,例如内容管理系统(CMS)、博客、电子商务网站等。 Hive是一种基于Hadoop的数据仓库,它使用SQL类似的查询语言来查询和分析大规模的数据集。Hive将查询转换为MapReduce任务,以便在Hadoop集群上并行执行。Hive支持多种数据格式,包括文本、序列化、ORC等。 Kafka是一个高吞吐量的分布式消息系统。它使用发布/订阅模式,可以处理大量的实时数据流,例如日志、传感器数据等。Kafka具有高可用性、可扩展性和可靠性。 Redis是一种内存数据库,用于存储和管理键值对。它支持多种数据结构,例如字符串、哈希表、列表、集合等。Redis非常快速,可用于缓存数据、会话管理、队列等。 ES(Elasticsearch)是一种开源搜索引擎,用于全文搜索和分析。它可以处理大量数据、支持实时查询和聚合,并提供可视化的仪表板。ES使用分布式架构,可以在多个节点上进行水平扩展。 HBase是一个分布式的NoSQL数据库,用于存储大规模的结构化数据。它运行在Hadoop上,可以在大规模集群上进行水平扩展。HBase支持随机读写、批量操作和事务处理等功能。 以上是这些数据存储相关技术的简单介绍。在实际应用中,需要根据具体的场景和需求选择合适的技术来存储和管理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一鸣888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值