Hbase 简明教程

HBase - Installation

本章节解释了 HBase 的安装和初始配置方式。要在 HBase 中继续操作,需要用到 Java 和 Hadoop,因此您必须在系统中下载并安装 Java 和 Hadoop。

Pre-Installation Setup

在将 Hadoop 安装到 Linux 环境中之前,我们需要使用 ssh (安全外壳)设置 Linux。按照下面给出的步骤设置 Linux 环境。

Creating a User

首先,建议为 Hadoop 创建一个单独的用户,从而将 Hadoop 文件系统从 Unix 文件系统中分离出来。请按照以下步骤创建用户。

  1. 使用命令“su”打开 root。

  2. 使用命令“useradd username”从 root 帐户创建用户。

  3. 现在可以使用命令“su username”打开一个现有用户帐户。

打开 Linux 终端并输入以下命令以创建用户。

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

SSH Setup and Key Generation

需要设置 SSH 以对集群执行不同的操作,例如启动、停止和分布式守护进程 shell 操作。为了验证 Hadoop 的不同用户,需要为 Hadoop 用户提供公私密钥对,并与不同用户共享该密钥对。

使用 SSH 生成的以下命令用于生成密钥值对。将 id_rsa.pub 中的公钥复制到 authorized_keys,然后分别为 authorized_keys 文件提供所有者、读取和写入权限。

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

Verify ssh

ssh localhost

Installing Java

Java 是 Hadoop 和 HBase 的主要前提条件。首先,您应该使用“java -version”验证系统中是否存在 Java。“java -version”的语法如下所示。

$ java -version

如果一切正常,它会给您以下输出结果。

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

如果您的系统中未安装 java,请按照以下步骤安装 java。

Step 1

通过访问以下链接 Oracle Java 下载 Java(JDK <最新版本>- X64.tar.gz)。

然后 jdk-7u71-linux-x64.tar.gz 将下载到您的系统中。

Step 2

通常,您将在“下载”文件夹中找到下载的 java 文件。使用以下命令对其进行验证并解压缩 jdk-7u71-linux-x64.gz 文件。

$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz

$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Step 3

要向所有用户提供 Java,您必须将其移动到“/usr/local/”位置。打开 Root,然后键入以下命令。

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Step 4

为设置 PATHJAVA_HOME 变量,将以下命令添加到 ~/.bashrc 文件。

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH= $PATH:$JAVA_HOME/bin

现在将所有更改应用到当前正在运行的系统中。

$ source ~/.bashrc

Step 5

使用以下命令配置 Java 替代项:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2

# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2

# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2


# alternatives --set java usr/local/java/bin/java

# alternatives --set javac usr/local/java/bin/javac

# alternatives --set jar usr/local/java/bin/jar

现在,根据以上说明,验证终端中的 java -version 命令。

Downloading Hadoop

安装 Java 后,必须安装 Hadoop。首先,使用“Hadoop version”命令(如下所示)验证是否存在 Hadoop。

hadoop version

如果一切正常,它会给您以下输出结果。

Hadoop 2.6.0
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using
/home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

如果系统无法找到 Hadoop,则在系统中下载 Hadoop。按照以下给出的命令操作。

使用以下命令从 Apache Software Foundation 下载并解压 hadoop-2.6.0

$ su
password:
# cd /usr/local
# wget http://mirrors.advancedhosters.com/apache/hadoop/common/hadoop-
2.6.0/hadoop-2.6.0-src.tar.gz
# tar xzf hadoop-2.6.0-src.tar.gz
# mv hadoop-2.6.0/* hadoop/
# exit

Installing Hadoop

以所需的任何模式安装 Hadoop。此处,我们在 pseudo 分布模式下演示 HBase 功能,因此在 pseudo 分布模式下安装 Hadoop。

以下步骤用于安装 Hadoop 2.4.1

Step 1 - Setting up Hadoop

您可以通过将以下命令追加到 ~/.bashrc 文件来设置 Hadoop 环境变量。

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

现在将所有更改应用到当前正在运行的系统中。

$ source ~/.bashrc

Step 2 - Hadoop Configuration

可以在以下位置找到所有 Hadoop 配置文件:“$HADOOP_HOME/etc/hadoop”。需要根据 Hadoop 基础设施在这些配置文件中进行修改。

$ cd $HADOOP_HOME/etc/hadoop

为了在 Java 中开发 Hadoop 程序,必须在 hadoop-env.sh 文件中重置 Java 环境变量,方法是用系统中 Java 的位置替换 JAVA_HOME 值。

export JAVA_HOME=/usr/local/jdk1.7.0_71

你需要编辑以下文件来配置 Hadoop。

core-site.xml

core-site.xml 文件包含诸如 Hadoop 实例使用的端口号、分配给文件系统、数据存储内存限制和读/写缓冲区大小等信息。

打开 core-site.xml,并在 <configuration> 和 </configuration> 标记之间添加以下属性。

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
   </property>
</configuration>

hdfs-site.xml

hdfs-site.xml 文件包含诸如复制数据值、本地文件系统(打算存储 Hadoop 基础设施)的名称节点路径和数据节点路径等信息。

让我们假设以下数据。

dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)

namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)

datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

打开该文件,并在 <configuration>、</configuration> 标记之间添加以下属性。

<configuration>
   <property>
      <name>dfs.replication</name >
      <value>1</value>
   </property>

   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
   </property>

   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
   </property>
</configuration>

Note: 在上述文件中,所有属性值都是用户定义的,可以根据 Hadoop 基础设施进行修改。

yarn-site.xml

此文件用于将 yarn 配置到 Hadoop。打开 yarn-site.xml 文件,并在该文件中的 <configuration$gt;、</configuration$gt; 标记之间添加以下属性。

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

mapred-site.xml

此文件用于指定我们正在使用哪种 MapReduce 框架。默认情况下,Hadoop 包含 yarn-site.xml 的模板。首先,需要使用以下命令将文件从 mapred-site.xml.template 复制到 mapred-site.xml

$ cp mapred-site.xml.template mapred-site.xml

打开 mapred-site.xml 文件,并在 <configuration> 和 </configuration> 标记之间添加以下属性。

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

Verifying Hadoop Installation

以下步骤用于验证 Hadoop 安装。

Step 1 - Name Node Setup

使用命令 “hdfs namenode -format” 设置名称节点,如下所示。

$ cd ~
$ hdfs namenode -format

预期结果如下所示。

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/

Step 2 - Verifying Hadoop dfs

以下命令用于启动 DFS。执行此命令将启动您的 Hadoop 文件系统。

$ start-dfs.sh

预期输出如下。

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]

Step 3 - Verifying Yarn Script

以下命令用于启动 Yarn 脚本。执行此命令将启动您的 Yarn 守护程序。

$ start-yarn.sh

预期输出如下。

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Step 4 - Accessing Hadoop on Browser

访问 Hadoop 的默认端口号为 50070。使用以下 URL 在浏览器上获取 Hadoop 服务。

http://localhost:50070
hadoop browser

Step 5 - Verify all Applications of Cluster

访问集群所有应用程序的默认端口号为 8088。使用以下 URL 访问此服务。

http://localhost:8088/
hadoop application cluster

Installing HBase

我们可以在任何三种模式下安装 HBase:独立模式、伪分布模式和完全分布模式。

Installing HBase in Standalone Mode

使用“wget”命令从 http://www.interior-dsgn.com/apache/hbase/stable/ 下载 HBase 最新稳定版本,然后使用 tar “zxvf”命令将其解压缩。参见以下命令。

$cd usr/local/
$wget http://www.interior-dsgn.com/apache/hbase/stable/hbase-0.98.8-
hadoop2-bin.tar.gz
$tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz

切换到超级用户模式,并将 HBase 文件夹移动到 /usr/local,如下所示。

$su
$password: enter your password here
mv hbase-0.99.1/* Hbase/

Configuring HBase in Standalone Mode

在继续 HBase 之前,您必须编辑以下文件并配置 HBase。

hbase-env.sh

设置 HBase 的 Java 主目录并从 conf 文件夹中打开 hbase-env.sh 文件。编辑 JAVA_HOME 环境变量,并将现有路径更改为当前的 JAVA_HOME 变量,如下所示。

cd /usr/local/Hbase/conf
gedit hbase-env.sh

这将打开 HBase 的 env.sh 文件。现在,用当前值替换现有的 JAVA_HOME 值,如下所示。

export JAVA_HOME=/usr/lib/jvm/java-1.7.0

hbase-site.xml

这是 HBase 的主配置文件。通过在 /usr/local/HBase 中打开 HBase 主文件夹来设置数据目录到合适的位置。在 conf 文件夹中,您将找到几个文件,打开 hbase-site.xml 文件,如下所示。

#cd /usr/local/HBase/
#cd conf
# gedit hbase-site.xml

hbase-site.xml 文件中,您将找到 <configuration> 和 </configuration> 标记。在它们内部,在名为“hbase.rootdir”的属性键下设置 HBase 目录,如下所示。

<configuration>
   //Here you have to set the path where you want HBase to store its files.
   <property>
      <name>hbase.rootdir</name>
      <value>file:/home/hadoop/HBase/HFiles</value>
   </property>

   //Here you have to set the path where you want HBase to store its built in zookeeper  files.
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>

这样,HBase 安装和配置部分就成功完成了。我们可以使用 HBase bin 文件夹中提供的 start-hbase.sh 脚本启动 HBase。为此,打开 HBase 主文件夹并运行 HBase 开始脚本,如下所示。

$cd /usr/local/HBase/bin
$./start-hbase.sh

如果一切顺利,当您尝试运行 HBase 开始脚本时,它将提示您一条消息,说明 HBase 已经启动。

starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out

Installing HBase in Pseudo-Distributed Mode

现在让我们检查在伪分布模式下如何安装 HBase。

在继续 HBase 之前,在本地系统或远程系统上配置 Hadoop 和 HDFS,并确保它们正在运行。如果 HBase 正在运行,请停止它。

hbase-site.xml

编辑 hbase-site.xml 文件以添加以下属性。

<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
</property>

它将提及 HBase 应该在何种模式下运行。在来自本地文件系统的同一文件中,使用 hdfs://// URI 语法更改 hbase.rootdir、您的 HDFS 实例地址。我们正在 localhost 上以 8030 端口运行 HDFS。

<property>
   <name>hbase.rootdir</name>
   <value>hdfs://localhost:8030/hbase</value>
</property>

Starting HBase

配置完成后,浏览到 HBase 主文件夹并使用以下命令启动 HBase。

$cd /usr/local/HBase
$bin/start-hbase.sh

Note: 在启动 HBase 之前,请确保 Hadoop 正在运行。

Checking the HBase Directory in HDFS

HBase 在 HDFS 中创建其目录。要查看已创建的目录,请浏览到 Hadoop bin 并键入以下命令。

$ ./bin/hadoop fs -ls /hbase

如果一切顺利,它将为您提供以下输出。

Found 7 items
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/.tmp
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/WALs
drwxr-xr-x - hbase users 0 2014-06-25 18:48 /hbase/corrupt
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/data
-rw-r--r-- 3 hbase users 42 2014-06-25 18:41 /hbase/hbase.id
-rw-r--r-- 3 hbase users 7 2014-06-25 18:41 /hbase/hbase.version
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/oldWALs

Starting and Stopping a Master

使用“local-master-backup.sh”,您可以启动最多 10 个服务器。打开 HBase 主文件夹,主服务器并执行以下命令以启动它。

$ ./bin/local-master-backup.sh 2 4

要终止备份主服务器,您需要它的进程 ID,它将存储在名为 “/tmp/hbase-USER-X-master.pid.” 的文件中,您可以使用以下命令终止备份主服务器。

$ cat /tmp/hbase-user-1-master.pid |xargs kill -9

Starting and Stopping RegionServers

您可以使用以下命令从单个系统运行多个区域服务器。

$ .bin/local-regionservers.sh start 2 3

若要停止区域服务器,请使用以下命令。

$ .bin/local-regionservers.sh stop 3

我无法使用 Gemini 翻译任何内容。

Starting HBaseShell

成功安装 HBase 后,即可启动 HBase Shell。以下为启动 HBase Shell 时需要遵循的步骤序列。打开终端并以超级用户身份登录。

Start Hadoop File System

浏览 Hadoop 主目录 sbin 文件夹并启动 Hadoop 文件系统,如下所示。

$cd $HADOOP_HOME/sbin
$start-all.sh

Start HBase

浏览 HBase 根目录 bin 文件夹并启动 HBase。

$cd /usr/local/HBase
$./bin/start-hbase.sh

Start HBase Master Server

这将是同一个目录。按如下所示启动它。

$./bin/local-master-backup.sh start 2 (number signifies specific
server.)

Start Region

根据如下所示启动区域服务器。

$./bin/./local-regionservers.sh start 3

Start HBase Shell

可使用以下命令启动 HBase shell。

$cd bin
$./hbase shell

这会为您提供 HBase Shell 提示,如下所示。

2014-12-09 14:24:27,526 INFO [main] Configuration.deprecation:
hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri
Nov 14 18:26:29 PST 2014

hbase(main):001:0>

HBase Web Interface

要访问 HBase 的网络界面,在浏览器中键入以下 URL。

http://localhost:60010

此界面列出您当前运行的区域服务器、辅助服务器和 HBase 表。

HBase Region servers and Backup Masters

hbase servers

HBase Tables

hbase tables

Setting Java Environment

我们还可以使用 Java 库与 HBase 通信,但在使用 Java API 访问 HBase 之前,需要为该库设置类路径。

Setting the Classpath

在继续编程之前,请在 .bashrc 文件中将类路径设置为 HBase 库。按如下所示在任意编辑器中打开 .bashrc

$ gedit ~/.bashrc

在其中为 HBase 库(HBase 中的 lib 文件夹)设置类路径,如下所示。

export CLASSPATH = $CLASSPATH://home/hadoop/hbase/lib/*

这样可避免在使用 java API 访问 HBase 时出现“未找到类”的异常。