Hive+Hbase 的部署及使用

Hive+Hbase 的部署及使用

liohi

HBase 和 Hive 是 Hadoop 生态系统中常用的两个组件。HBase 是一个分布式的非关系型数据库,可以用来存储大量的结构化数据;Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化数据映射为一张数据库表,并提供类似 SQL 的查询语言。

下载 HBase 和 Hive

注意HadoopHbaseHive 的版本匹配问题,不然到后面会有意外惊喜,我的Hadoop是 3.3.4,如果和我一样后面直接复制我的命令即可,不一样你需要去搜一下你版本对应的HbaseHive

version_hbase
version_hive

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cd /usr/local

## 下载
wget https://mirrors.aliyun.com/apache/hbase/2.5.3/hbase-2.5.3-bin.tar.gz
wget https://mirrors.aliyun.com/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

## 解压
tar -zxvf hbase-2.5.3-bin.tar.gz
tar -zxvf apache-hive-3.1.2-bin.tar.gz

## 改一下名字,并将 hive 移动到Hadoop目录下
mv apache-hive-3.1.2-bin hadoop/hive
mv hbase-2.5.3 hbase

## 修改权限
sudo chmod -R 777 hbase hadoop/hive

配置 HBase

配置环境变量(顺便把 Hive 的也配置了)

$ vi ~/.bashrc

1
2
3
4
5
6
7
8
## HBASE_HOME
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin

## Hive_HOME
export HIVE_HOME=/usr/local/hadoop/hive
export CLASSPATH=.:${HIVE_HOME}/lib:$CLASSPATH
export PATH=${HIVE_HOME}/bin:${HIVE_HOME}/conf:$PATH

生效

$ source ~/.bashrc

Hadoop 和 HBase 之间需要进行配置,以便 HBase 可以使用 Hadoop 作为其底层存储和计算引擎

  • 将 Hadoop 的 core-site.xml 和 hdfs-site.xml 配置文件复制到 HBase 的 conf 目录下:

    1
    2
    cp $HADOOP_HOME/etc/hadoop/core-site.xml $HBASE_HOME/conf/
    cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/
  • 编辑 HBase 的 hbase-site.xml 文件:

    vi /usr/local/hbase/conf/hbase-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <configuration>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value>
    </property>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
    </property>
    <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
    </property>
    </configuration>
验证是否启动
  • 启动 Hadoop

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    su hadoop

    sudo service ssh start

    ssh localhost

    ## 启动 Hadoop
    $ start-all.sh

    ## 启动 HBase
    $ start-hbase.sh

    ## 查看一下
    jps

    image-20230420193259179

    浏览器访问 Web UI localhost: 16010

    image-20230420193400869

    则启动成功

配置 Hive

在将 Hive 与 HBase 集成时需要使用 MySQL 作为元数据存储。Hive 元数据存储在 RDBMS 中,因此需要一个关系型数据库来存储表和列等元数据信息。

配置 mysql(安装好的跳过)
  • 安装 mysql 客户端和服务端

    1
    sudo apt-get install mysql-server mysql-client
  • 设置密码

    1
    sudo mysql_secure_installation
  • 登录

    1
    2
    3
    4
    sudo mysql -u root -p
    ## 显示如下则成功

    exit

    image-20230424102437018

配置 Hive
  • 在 Hadoop 集群中创建一个 Hive 元数据存储目录:

    1
    2
    $ hdfs dfs -mkdir /hive
    $ hdfs dfs -mkdir /hive/metastore
  • 进入 Hive 的 conf 目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cd /usr/local/hadoop/hive

    ## 将 hive-env.sh.template 复制一份并命名为 hive-env.sh
    cp hive-env.sh.template hive-env.sh

    ## 编辑hive-env.sh
    vi hive-env.sh

    ## 加上下面配置
    HADOOP_HOME=/usr/local/hadoop
    export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf
    export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib
    • 创建一个 hive-site.xml 文件并加上下面配置(vi hive-site.xml

    注意:MySQL5 用的驱动 url 是com.mysql.jdbc.Driver,MySQL6 以后用的是com.mysql.cj.jdbc.Driver。版本不匹配便会报驱动类已过时的错误,所以对应第二个 property 配置应匹配 MySQL 版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <configuration>
    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    </property>
    <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    </property>
    <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/hadoop/hive/tmp</value>
    </property>
    </configuration>
    • hive 下创建一个 warehouselogs文件夹

      1
      2
      /hive$  mkdir /usr/local/hadoop/hive/warehouse
      /hive$ mkdir -p logs
    • hive/conf 对 hive-log4j2.properties 配置

      1
      2
      3
      4
      5
      6
      7
      /hive$  cd conf
      /conf$ mv hive-log4j2.properties.template hive-log4j2.properties
      /conf$ sudo vi hive-log4j2.properties

      ## 将第 24 行左右修改(vim 可以直接 :24 跳转到24行)

      property.hive.log.dir = /usr/local/hadoop/hive/logs
    • 进入 hive/lib 下面下载 mysql-connector-java的 jar 包,可使用下面命令

      1
      2
      3
      wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.27.tar.gz
      ## 解压
      ## 将jar 包移动到 hive/lib 目录下,此处省略
    • 初始化 metastore 数据库:

      1
      schematool -initSchema -dbType mysql -verbose
    • 启动 metastore 服务

      1
      hive --service metastore
  • 另开一个终端

    • 启动 hive

      $ hive

      image-20230424120736490

    • 创建一个测试表进行测试

      1
      2
      3
      CREATE TABLE test (id INT, name STRING);
      INSERT INTO test VALUES (1, 'test1'), (2, 'test2'), (3, 'test3');
      SELECT * FROM test;

      image-20230424152756644

      image-20230424152814130image-20230424152823200

    • 退出

      > exit

    • 关闭服务

      1
      2
      $ stop-hbase.sh
      $ stop-all.sh
至此,Hbase+Hive 配置完成
  • 标题: Hive+Hbase 的部署及使用
  • 作者: liohi
  • 创建于 : 2023-04-24 15:35:19
  • 更新于 : 2023-05-04 17:19:25
  • 链接: https://liohi.github.io/2023/04/24/Hive+Hbase 的部署及使用/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论
此页目录
Hive+Hbase 的部署及使用