如何在 CentOS 7 上安装 Apache Hadoop/HBase如何在 CentOS 7 上安装 Apache Hadoop/HBase如何在 CentOS 7 上安装 Apache Hadoop/HBase如何在 CentOS 7 上安装 Apache Hadoop/HBase
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 CentOS 7 上安装 Apache Hadoop/HBase

发表 admin at 2025年2月28日
类别
  • 未分类
标签

本指南将讨论在 CentOS 7 上安装 Hadoop 和 HBase。HBase 是 Apache 软件基金会下开发的开源分布式非关系数据库。它是用 Java 编写的,运行在 Hadoop 文件系统 (HDFS) 之上。

在上一篇教程中,我们介绍了在 Ubuntu 18.04 上安装 Hadoop 和 HBase。

在 CentOS 7 上安装 Hadoop

以下是在 CentOS 7 上安装单节点 Hadoop 集群的步骤。

第1步:更新系统

由于 Hadoop 和 HBase 服务端口非常动态,我建议您将它们安装在安全专用网络中的服务器上,并禁用 SELinux 和 Firewalld。

sudo systemctl disable --now firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
cat /etc/selinux/config | grep SELINUX= | grep -v '#'

在开始部署 Hadoop 和 HBase 之前更新 CentOS 7 系统。

sudo yum -y install epel-release
sudo yum -y install vim wget curl bash-completion
sudo yum -y update
sudo reboot

第 2 步:安装 Java

如果 CentOS 7 服务器上缺少 Java,请安装 Java。

sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

验证Java是否已成功安装。

$ java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

设置JAVA_HOME变量。

cat <<EOF | sudo tee /etc/profile.d/hadoop_java.sh
export JAVA_HOME=\$(dirname \$(dirname \$(readlink \$(readlink \$(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

更新您的路径和设置。

source /etc/profile.d/hadoop_java.sh

然后测试:

$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64

步骤 3:为 Hadoop 创建用户帐户

让我们为 Hadoop 创建一个单独的用户,以便在 Hadoop 文件系统和 Unix 文件系统之间进行隔离。

sudo adduser hadoop
passwd hadoop
sudo usermod -aG wheel hadoop

添加用户后,为该用户生成 SS 密钥对。

$ sudo su - hadoop
$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
 Created directory '/home/hadoop/.ssh'.
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/hadoop/.ssh/id_rsa.
 Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:mA1b0nzdKcwv/LPktvlA5R9LyNe9UWt+z1z0AjzySt4 hadoop@hbase
 The key's randomart image is:
 +---[RSA 2048]----+
 |                 |
 |       o   + . . |
 |      o + . = o o|
 |       O . o.o.o=|
 |      + S . *ooB=|
 |           o *=.B|
 |          . . *+=|
 |         o o o.O+|
 |          o E.=o=|
 +----[SHA256]-----+

将此用户的密钥添加到授权 ssh 密钥列表中。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

验证您是否可以使用添加的密钥进行 ssh。

$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:WTqP642Xijk3xtTb/zt32o0Q7PqYlxzwX+H/B72z4P4.
ECDSA key fingerprint is MD5:47:dc:17:78:63:f7:bc:12:72:70:4b:e3:2f:8a:c3:8d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Last login: Sun Apr  7 12:47:16 2019
[hadoop@hbase ~]$ 

第4步:下载并安装Hadoop

在下载此处指定的版本之前,请检查 Hadoop 的最新版本。截至撰写本文时,这是版本 3.2.1。

将最新版本保存到变量中。

RELEASE="3.2.1"

然后将 Hadoop 存档下载到本地系统。

wget https://www-eu.apache.org/dist/hadoop/common/hadoop-$RELEASE/hadoop-$RELEASE.tar.gz

提取文件。

tar -xzvf hadoop-$RELEASE.tar.gz

将结果目录移动到 /usr/local/hadoop。

rm hadoop-$RELEASE.tar.gz
sudo mv hadoop-$RELEASE/ /usr/local/hadoop

设置 HADOOP_HOME 并将包含 Hadoop 二进制文件的目录添加到您的 ` PATH。

cat <<EOF | sudo tee /etc/profile.d/hadoop_java.sh
export JAVA_HOME=\$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_HDFS_HOME=\$HADOOP_HOME
export HADOOP_MAPRED_HOME=\$HADOOP_HOME
export YARN_HOME=\$HADOOP_HOME
export HADOOP_COMMON_HOME=\$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=\$HADOOP_HOME/lib/native
export PATH=\$PATH:\$JAVA_HOME/bin:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin
EOF

源文件。

source /etc/profile.d/hadoop_java.sh

确认您的 Hadoop 版本。

$ hadoop version
Hadoop 3.2.1
Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
Compiled by sunilg on 2019-01-29T01:39Z
Compiled with protoc 2.5.0
From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.2.1.jar

第5步:在CentOS 7上配置Hadoop

所有 Hadoop 配置都位于 /usr/local/hadoop/etc/hadoop/ 目录下。

需要修改大量配置文件才能在 CentOS 7 上完成 Hadoop 安装。

首先在 shell 脚本 hadoop-env.sh 中编辑 JAVA_HOME:

$ sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
# Set JAVA_HOME - Line 54
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))

然后配置:

1. 核心站点.xml

core-site.xml 文件包含启动时使用的 Hadoop 集群信息。这些属性包括:

  • Hadoop实例使用的端口号
  • 为文件系统分配的内存
  • 数据存储的内存限制
  • 读/写缓冲区的大小。

打开 core-site.xml

sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml

在 和 标记之间添加以下属性。

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
      <description>The default file system URI</description>
   </property>
</configuration>

请参阅下面的屏幕截图。

2.hdfs-site.xml

需要为集群中要使用的每个主机配置此文件。该文件包含以下信息:

  • 本地文件系统上的名称节点和数据节点路径。
  • 复制数据的价值

在此设置中,我想将 Hadoop 基础设施存储在辅助磁盘 - /dev/sdb 中。

$ lsblk
 NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sda      8:0    0 76.3G  0 disk 
 └─sda1   8:1    0 76.3G  0 part /
 sdb      8:16   0   50G  0 disk 
 sr0     11:0    1 1024M  0 rom  

我将对此磁盘进行分区并将其挂载到 /hadoop 目录。

sudo parted -s -- /dev/sdb mklabel gpt
sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100%
sudo parted -s -- /dev/sdb align-check optimal 1
sudo mkfs.xfs /dev/sdb1
sudo mkdir /hadoop
echo "/dev/sdb1 /hadoop xfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a 

确认 :

$ df -hT | grep /dev/sdb1
/dev/sdb1      xfs        50G   33M   50G   1% /hadoop

为 namenode 和 datanode 创建目录。

sudo mkdir -p /hadoop/hdfs/{namenode,datanode}

将所有权设置为 hadoop 用户和组。

sudo chown -R hadoop:hadoop /hadoop

现在打开文件:

sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

然后在 和 标记之间添加以下属性。

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
	
   <property>
      <name>dfs.name.dir</name>
      <value>file:///hadoop/hdfs/namenode</value>
   </property>
	
   <property>
      <name>dfs.data.dir</name>
      <value>file:///hadoop/hdfs/datanode</value>
   </property>
</configuration>

请参阅下面的屏幕截图。

3.mapred-site.xml

您可以在此处设置要使用的 MapReduce 框架。

sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

设置如下。

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

4. 纱线站点.xml

该文件中的设置将覆盖 Hadoop Yarn 的配置。它定义了资源管理和作业调度逻辑。

sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

添加 :

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>

这是我的配置的屏幕截图。

第 6 步:验证 Hadoop 配置

初始化 Hadoop 基础设施存储。

sudo su -  hadoop
hdfs namenode -format

请参阅下面的输出:

测试 HDFS 配置。

$ start-dfs.sh
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [hbase]
hbase: Warning: Permanently added 'hbase' (ECDSA) to the list of known hosts.

最后验证 YARN 配置:

$ start-yarn.sh
Starting resourcemanager
Starting nodemanagers

Hadoop 3.x 默认 Web UI 端口:

  • NameNode – 默认 HTTP 端口为 9870。
  • ResourceManager – 默认 HTTP 端口为 8088。
  • MapReduce JobHistory Server – 默认 HTTP 端口为 19888。

您可以使用以下命令检查 hadoop 使用的端口:

$ ss -tunelp | grep java

通过 http://ServerIP:9870 访问 Hadoop Web 仪表板。

在 http://ServerIP:8088 查看 Hadoop 集群概述。

测试一下是否可以创建目录。

$ hadoop fs -mkdir /test
$ hadoop fs -ls /
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 13:04 /test

停止 Hadoop 服务

使用命令:

$ stop-dfs.sh
$ stop-yarn.sh

在 CentOS 7 上安装 HBase

您可以选择以单机模式或伪分布式模式安装HBase。设置过程与我们的 Hadoop 安装类似。

第1步:下载并安装HBase

下载之前检查最新版本或稳定版本。对于生产用途,我建议您使用 Stabke 版本。

VER="1.4.10"
wget http://apache.mirror.gtcomm.net/hbase/stable/hbase-$VER-bin.tar.gz

提取下载的 Hbase 存档。

tar xvf hbase-$VER-bin.tar.gz
sudo mv hbase-$VER/ /usr/local/HBase/

更新您的 ` PATH 值。

cat <<EOF | sudo tee /etc/profile.d/hadoop_java.sh
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_HDFS_HOME=\$HADOOP_HOME
export HADOOP_MAPRED_HOME=\$HADOOP_HOME
export YARN_HOME=\$HADOOP_HOME
export HADOOP_COMMON_HOME=\$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=\$HADOOP_HOME/lib/native
export HBASE_HOME=/usr/local/HBase
export PATH=\$PATH:\$JAVA_HOME/bin:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin:\$HBASE_HOME/bin
EOF

更新您的 shell 环境值。

$ source /etc/profile.d/hadoop_java.sh
$ echo $HBASE_HOME
/usr/local/HBase

在 shell 脚本 hbase-env.sh 中编辑 JAVA_HOME:

$ sudo vim /usr/local/HBase/conf/hbase-env.sh
# Set JAVA_HOME - Line 27
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))

第2步:配置HBase

我们将像为 Hadoop 所做的那样进行配置。 HBase 的所有配置文件都位于 /usr/local/HBase/conf/ 目录中。

选项1:以独立模式安装HBase(不推荐)

在独立模式下,所有守护进程(HMaster、HRegionServer 和 ZooKeeper)都在一个 jvm 进程/实例中运行

创建HBase根目录。

sudo mkdir -p /hadoop/HBase/HFiles
sudo mkdir -p /hadoop/zookeeper
sudo chown -R hadoop:hadoop /hadoop/

打开文件进行编辑。

sudo vim /usr/local/HBase/conf/hbase-site.xml

现在,在 和 标记之间添加以下配置,如下所示。

<configuration>
   <property>
      <name>hbase.rootdir</name>
      <value>file:/hadoop/HBase/HFiles</value>
   </property>
	
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/hadoop/zookeeper</value>
   </property>
</configuration>

默认情况下,除非您配置 hbase.rootdir 属性,否则您的数据仍存储在 /tmp/ 中。

现在使用 HBase bin 目录中的 start-hbase.sh 脚本启动 HBase。

$ sudo su - hadoop
$ start-hbase.sh 
running master, logging to /usr/local/HBase/logs/hbase-hadoop-master-hbase.out

方案二:伪分布式安装HBase(推荐)

我们之前设置的 hbase.rootdir 值将以独立模式启动。伪分布式模式意味着HBase仍然完全运行在单台主机上,但是每个HBase守护进程(HMaster、HRegionServer和ZooKeeper)作为单独的进程运行。

要以伪分布式模式安装 HBase,请将其值设置为:

<configuration>
   <property>
      <name>hbase.rootdir</name>
      <value>hdfs://localhost:8030/hbase</value>
   </property>
	
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/hadoop/zookeeper</value>
   </property>
   
   <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
   </property>
</configuration>

在此设置中,Data 将您的数据存储在 HDFS 中。

确保已创建 Zookeeper 目录。

sudo mkdir -p /hadoop/zookeeper
sudo chown -R hadoop:hadoop /hadoop/

现在使用 HBase bin 目录中的 start-hbase.sh 脚本启动 HBase。

$ sudo su - hadoop
$ start-hbase.sh 
localhost: running zookeeper, logging to /usr/local/HBase/logs/hbase-hadoop-zookeeper-hbase.out
running master, logging to /usr/local/HBase/logs/hbase-hadoop-master-hbase.out
: running regionserver, logging to /usr/local/HBase/logs/hbase-hadoop-regionserver-hbase.out

检查HDFS中的HBase目录:

$ hadoop fs -ls /hbase
Found 9 items
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:19 /hbase/.tmp
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:19 /hbase/MasterProcWALs
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:19 /hbase/WALs
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:17 /hbase/corrupt
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:16 /hbase/data
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:16 /hbase/hbase
-rw-r--r--   1 hadoop supergroup         42 2019-04-07 09:16 /hbase/hbase.id
-rw-r--r--   1 hadoop supergroup          7 2019-04-07 09:16 /hbase/hbase.version
drwxr-xr-x   - hadoop supergroup          0 2019-04-07 09:17 /hbase/oldWALs

步骤3:管理HMaster和HRegionServer

HMaster服务器控制HBase集群。您最多可以启动 9 个备份 HMaster 服务器,算上主服务器,总共 10 个 HMaster。

HRegionServer 按照 HMaster 的指示管理其 StoreFile 中的数据。通常,集群中的每个节点运行一个 HRegionServer。在同一系统上运行多个 HRegionServer 对于伪分布式模式下的测试非常有用。

主服务器和区域服务器可以分别使用脚本 local-master-backup.sh 和 local-regionservers.sh 启动和停止。

$ local-master-backup.sh start 2 # Start backup HMaster
$ local-regionservers.sh start 3 # Start multiple RegionServers
  • 每个 HMaster 使用两个端口(默认为 16000 和 16010)。端口偏移量添加到这些端口,因此使用偏移量 2,备份 HMaster 将使用端口 16002 和 16012

以下命令使用端口 16002/16012、16003/16013 和 16005/16015 启动 3 个备份服务器。

$ local-master-backup.sh start 2 3 5
  • 每个 RegionServer 需要两个端口,默认端口为 16020 和 16030

以下命令启动四个额外的 RegionServer,在从 16022/16032 开始的连续端口上运行(基本端口 16020/16030 加 2)。

$ local-regionservers.sh start 2 3 4 5

要停止,请将每个命令的 start 参数替换为 stop,后跟要停止的服务器的偏移量。例子。

$ local-regionservers.sh stop 5

启动 HBase Shell

Hadoop 和 Hbase 应先运行,然后才能使用 HBase shell。这里是启动服务的正确顺序。

$ start-all.sh
$ start-hbase.sh

然后使用HBase shell。

hadoop@hbase:~$ hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/HBase/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/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 1.4.9, rd625b212e46d01cb17db9ac2e9e927fdb201afa1, Wed Dec  5 11:54:10 PST 2018
hbase(main):001:0> 

停止 HBase。

stop-hbase.sh

读的书:

Hadoop:权威指南:互联网规模的存储和分析

设计数据密集型应用程序:可靠、可扩展和可维护系统背后的重要理念

HBase:权威指南:随机访问星球大小的数据

大数据:可扩展实时数据系统的原理和最佳实践

结论

您已在 CentOS 7 上成功安装 Hadoop 和 HBase。请参阅 Apache Hadoop 文档和 Apache HBase 书籍以了解更多信息。

如何在 Linux 上使用 Systemd 运行 Java Jar 应用程序

如何在 CentOS 7 上安装 WildFly (JBoss) 应用服务器

©2015-2025 Norria support@norria.com