HBase 与 Hadoop 安装与上手使用全指导

引言

在大数据领域,HBase 作为一款高可靠性、高性能、面向列、可伸缩的分布式 NoSQL 数据库,是 Hadoop 生态系统中的重要一员。它构建在 HDFS(Hadoop Distributed File System)之上,为海量结构化数据的实时读写提供了强大支持。对于初学者而言,如何从零开始搭建 HBase 和 Hadoop 环境并快速上手使用,是进入大数据世界的关键一步。本文将提供一份从环境准备、安装配置到基础操作的全流程指导,帮助你快速搭建并运行起自己的 HBase 集群。

1. 环境准备

在开始安装之前,请确保你的系统满足以下基本要求:

  • 操作系统:推荐使用 Linux 发行版(如 Ubuntu 20.04/22.04, CentOS 7/8)。本文将以 Ubuntu 22.04 为例。
  • Java 环境:Hadoop 和 HBase 均基于 Java 开发,需要安装 JDK 8 或 JDK 11。
  • SSH 免密登录:如果你计划搭建多节点集群,需要配置主节点到所有从节点的 SSH 免密登录。
  • 系统资源:建议至少 4GB 内存和 20GB 可用磁盘空间用于学习和测试。

1.1 安装 Java

首先,更新系统包列表并安装 OpenJDK 11:

bash 复制代码
sudo apt update
sudo apt install openjdk-11-jdk -y

安装完成后,验证 Java 版本:

bash 复制代码
java -version

输出应类似于:

复制代码
openjdk version "11.0.22" 2024-01-16
OpenJDK Runtime Environment (build 11.0.22+7-post-Ubuntu-0ubuntu222.04.1)
OpenJDK 64-Bit Server VM (build 11.0.22+7-post-Ubuntu-0ubuntu222.04.1, mixed mode, sharing)

设置 JAVA_HOME 环境变量。找到 Java 的安装路径:

bash 复制代码
sudo update-alternatives --config java

记下路径(例如 /usr/lib/jvm/java-11-openjdk-amd64),然后编辑 ~/.bashrc 文件:

bash 复制代码
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

验证 JAVA_HOME

bash 复制代码
echo $JAVA_HOME

2. Hadoop 安装与配置(单机模式)

我们将首先以单机模式安装 Hadoop,这是运行 HBase 的基础。单机模式适合学习和测试。

2.1 下载与解压

访问 Apache Hadoop 官网 下载稳定版本(例如 3.3.6)。使用 wget 下载并解压:

bash 复制代码
cd /opt
sudo wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzvf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 hadoop
sudo chown -R $USER:$USER /opt/hadoop

2.2 配置环境变量

编辑 ~/.bashrc,添加 Hadoop 环境变量:

bash 复制代码
echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc
echo 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH' >> ~/.bashrc
source ~/.bashrc

2.3 配置 Hadoop

进入 Hadoop 配置目录:

bash 复制代码
cd $HADOOP_HOME/etc/hadoop
  1. 配置 hadoop-env.sh

    设置 JAVA_HOME

    bash 复制代码
    echo "export JAVA_HOME=$JAVA_HOME" >> hadoop-env.sh
  2. 配置 core-site.xml

    定义 HDFS 的默认文件系统 URI 和临时目录。

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/tmp</value>
        </property>
    </configuration>
  3. 配置 hdfs-site.xml

    配置 HDFS 的副本数(单机模式设为 1)。

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file://${hadoop.tmp.dir}/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file://${hadoop.tmp.dir}/dfs/data</value>
        </property>
    </configuration>
  4. 配置 mapred-site.xml

    指定 MapReduce 框架为 YARN。

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
  5. 配置 yarn-site.xml

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>

2.4 格式化 NameNode 并启动

首次运行前,需要格式化 HDFS 的 NameNode:

bash 复制代码
hdfs namenode -format

启动 HDFS 和 YARN 服务:

bash 复制代码
start-dfs.sh
start-yarn.sh

使用 jps 命令检查进程是否正常启动:

bash 复制代码
jps

应看到 NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager 等进程。

访问 Web UI 验证:

  • HDFS NameNode: http://localhost:9870
  • YARN ResourceManager: http://localhost:8088

3. HBase 安装与配置(单机模式)

HBase 可以运行在单机模式(使用本地文件系统)或分布式模式(使用 HDFS)。我们先从单机模式开始。

3.1 下载与解压

访问 Apache HBase 官网 下载稳定版本(例如 2.5.8)。下载并解压:

bash 复制代码
cd /opt
sudo wget https://dlcdn.apache.org/hbase/2.5.8/hbase-2.5.8-bin.tar.gz
sudo tar -xzvf hbase-2.5.8-bin.tar.gz
sudo mv hbase-2.5.8 hbase
sudo chown -R $USER:$USER /opt/hbase

3.2 配置环境变量

编辑 ~/.bashrc,添加 HBase 环境变量:

bash 复制代码
echo 'export HBASE_HOME=/opt/hbase' >> ~/.bashrc
echo 'export PATH=$HBASE_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

3.3 配置 HBase

进入 HBase 配置目录:

bash 复制代码
cd $HBASE_HOME/conf
  1. 配置 hbase-env.sh

    设置 JAVA_HOME 并指定 HBase 使用内置的 Zookeeper。

    bash 复制代码
    echo "export JAVA_HOME=$JAVA_HOME" >> hbase-env.sh
    echo "export HBASE_MANAGES_ZK=true" >> hbase-env.sh
  2. 配置 hbase-site.xml

    这是 HBase 的核心配置文件。对于单机模式,我们指定数据存储目录和 Zookeeper 数据目录。

    xml 复制代码
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>hbase.rootdir</name>
            <value>file:///opt/hbase/data</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/opt/hbase/zookeeper</value>
        </property>
        <property>
            <name>hbase.unsafe.stream.capability.enforce</name>
            <value>false</value>
        </property>
    </configuration>

    注意hbase.unsafe.stream.capability.enforce=false 这个配置在某些 Linux 发行版上是必须的,用于避免启动时的兼容性问题。

3.4 启动 HBase 并验证

启动 HBase 服务:

bash 复制代码
start-hbase.sh

使用 jps 命令检查,应看到 HMasterHRegionServer 进程。

访问 HBase Web UI:http://localhost:16010

4. HBase Shell 基础操作

HBase Shell 是一个基于 JRuby 的交互式命令行工具,是操作 HBase 最直接的方式。

4.1 进入 HBase Shell

bash 复制代码
hbase shell

成功进入后,提示符会变为 hbase(main):001:0>

4.2 基本命令

  1. 查看帮助与状态

    bash 复制代码
    help
    status
  2. 创建表

    语法:create '表名', '列族1', '列族2', ...

    bash 复制代码
    create 'student', 'info', 'score'

    此命令创建了一个名为 student 的表,包含两个列族:infoscore

  3. 列出所有表

    bash 复制代码
    list
  4. 查看表结构

    bash 复制代码
    describe 'student'
  5. 插入数据

    语法:put '表名', '行键', '列族:列限定符', '值'

    bash 复制代码
    put 'student', '1001', 'info:name', 'Tom'
    put 'student', '1001', 'info:age', '20'
    put 'student', '1001', 'score:math', '95'
    put 'student', '1002', 'info:name', 'Jerry'
    put 'student', '1002', 'score:english', '88'
  6. 查询数据

    • 获取单行数据

      bash 复制代码
      get 'student', '1001'
    • 扫描全表

      bash 复制代码
      scan 'student'
    • 扫描指定列族

      bash 复制代码
      scan 'student', {COLUMNS => ['info']}
  7. 删除数据

    • 删除一个单元格

      bash 复制代码
      delete 'student', '1001', 'info:age'
    • 删除整行

      bash 复制代码
      deleteall 'student', '1001'
  8. 禁用与删除表

    删除表前必须先禁用(disable)它。

    bash 复制代码
    disable 'student'
    drop 'student'
  9. 退出 Shell

    bash 复制代码
    exit

5. HBase 与 Hadoop 集成(伪分布式模式)

要让 HBase 使用 HDFS 作为底层存储,只需修改 hbase-site.xml 中的 hbase.rootdir

5.1 修改 HBase 配置

停止 HBase 服务:

bash 复制代码
stop-hbase.sh

编辑 $HBASE_HOME/conf/hbase-site.xml,将 hbase.rootdir 指向 HDFS:

xml 复制代码
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
</property>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

5.2 启动服务并验证

确保 Hadoop 的 HDFS 和 YARN 正在运行(start-dfs.shstart-yarn.sh)。

启动 HBase:

bash 复制代码
start-hbase.sh

现在,HBase 的数据将存储在 HDFS 的 /hbase 目录下。你可以通过 HDFS 命令查看:

bash 复制代码
hdfs dfs -ls /hbase

6. 常见问题与故障排除

  • Java 版本问题:确保使用 JDK 8 或 11,更高版本可能不兼容。
  • 端口冲突 :检查 9000, 9870, 16010, 2181 等端口是否被占用。
  • HBase 启动失败 :检查 $HBASE_HOME/logs/ 下的日志文件,特别是 hbase-*-master-*.loghbase-*-regionserver-*.log
  • HDFS 权限问题 :如果 HBase 无法写入 HDFS,尝试在 HDFS 上创建 /hbase 目录并赋予权限:hdfs dfs -mkdir /hbase && hdfs dfs -chmod 777 /hbase
  • Web UI 无法访问:检查防火墙设置,确保相关端口已开放。

7. 下一步学习建议

成功安装并运行 HBase 后,你可以进一步探索:

  1. 深入 HBase 架构:理解 Region、RegionServer、HMaster、ZooKeeper 的角色。
  2. 学习高级 Shell 命令:过滤器(Filter)、计数器(Increment)、协处理器(Coprocessor)。
  3. 使用 Java API 编程 :学习如何使用 HBaseAdminTable 接口进行增删改查。
  4. 搭建完全分布式集群:将 HBase 和 Hadoop 部署在多台机器上,体验真正的分布式能力。
  5. 集成其他生态工具:学习如何与 Apache Phoenix(SQL on HBase)、Apache Spark 进行集成。

总结

本文详细介绍了在 Linux 系统上从零开始安装和配置 Hadoop(单机模式)与 HBase(单机及伪分布式模式)的完整步骤,并演示了通过 HBase Shell 进行基础数据操作。遵循本指南,你应该能够顺利搭建起自己的大数据学习环境。记住,实践是学习的最佳途径,多动手操作,多查看日志,你将对 HBase 和 Hadoop 有更深刻的理解。

相关推荐
muddjsv1 小时前
HBase与Hadoop:基于什么开发?深度剖析与架构图
数据库·hadoop·hbase
Nefu_lyh1 小时前
【Hive】一、Hive数据类型:基本数据类型、复杂数据类型
数据仓库·hive·hadoop
学计算机的计算基1 小时前
MySQL 锁体系全解:从 MDL 到间隙锁,一次讲透
java·数据库·笔记·python·mysql
Trouvaille ~1 小时前
【Redis篇】Redis 事务:原子性与脚本执行机制
数据库·redis·后端·算法·junit·lua·原子性
冷色调的咖啡师1 小时前
4.大数据高可用
大数据·linux·hadoop·hdfs·zookeeper·yarn
努力攻坚操作系统1 小时前
Elasticsearch 完全教学指南:从入门到精通
大数据·数据库·elasticsearch·搜索引擎·全文检索
睡不醒男孩0308231 小时前
行业解决方案二:CLup打造企业级数据库私有云(DBaaS)平台解决方案
数据库·云计算·clup
猴哥聊项目管理1 小时前
2026年信创项目管理:如何用甘特图提升进度管控
大数据·数据库·项目管理·企业数字化转型·甘特图·敏捷开发·项目进度管理软件
冷色调的咖啡师1 小时前
1.大数据架构技术 上——搭建分布式Hadoop集群
大数据·linux·hadoop·分布式·hdfs·架构·yarn