大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
HBase 教程
HBase 教程
HBase 体系结构
HBase 安装
HBase Shell
HBase 通用命令
HBase 管理员 API
HBase 创建表
HBase 列出表
HBase 禁用表
HBase 启用表
HBase 表描述和更改
HBase 验证表是否存在(exist命令)
HBase 删除表
HBase 关闭
HBase 客户端 API
HBase 创建(插入)数据
HBase 更新数据
HBase 读取数据
HBase 删除数据
HBase 扫描(scan)
HBase 计数(count)和截断(truncate)
HBase 安全
#HBase 安装 本章介绍了如何安装和初始配置HBase。要使用HBase,需要Java和Hadoop,因此您必须在系统中下载并安装Java和Hadoop。 ##安装前设置 在将Hadoop安装到Linux环境之前,我们需要使用ssh(Secure Shell)设置Linux 。请按照以下给出的步骤来设置Linux环境。 ###创建一个用户 首先,建议为Hadoop创建一个单独的用户,以将Hadoop文件系统与Unix文件系统隔离。请按照下面给出的步骤创建用户。 - 使用命令`su`打开根。 - 使用命令`useradd username`从根帐户创建一个用户。 - 现在,您可以使用命令`su username`打开一个现有的用户帐户。 打开Linux终端,然后键入以下命令来创建用户。 ```bash $ su password: # useradd hadoop # passwd hadoop New passwd: Retype new passwd ``` ###SSH设置和密钥生成 需要SSH设置才能在集群上执行不同的操作,例如启动,停止和分布式守护程序shell操作。为了认证Hadoop的不同用户,需要为Hadoop用户提供公钥/私钥对,并与其他用户共享。 以下命令用于使用SSH生成键值对。将公共密钥形式id_rsa.pub复制到authorized_keys,并分别向所有者提供对authorized_keys文件的读写权限。 ```bash $ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys ``` ###验证ssh ```bash ssh localhost ``` ##安装Java Java是Hadoop和HBase的主要前提。首先,您应该使用`java -version`来验证系统中是否存在Java。Java版本命令的语法如下。 ```bash $ java -version ``` 如果一切正常,它将为您提供以下输出。 ``` java version "1.8.0_71" Java(TM) SE Runtime Environment (build 1.8.0_71-b13) Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode) ``` 如果您的系统中未安装Java,请按照以下步骤安装Java。 ###第1步 通过访问以下链接[Oracle Java](https://www.oracle.com/java/technologies/javase-downloads.html "Oracle Java")下载Java(JDK <最新版本>-X64.tar.gz)。 然后将jdk-8u71-linux-x64.tar.gz下载到您的系统中。 ###第2步 通常,您会在Downloads文件夹中找到下载的Java文件。验证它并使用以下命令解压缩jdk-8u71-linux-x64.gz文件。 ```bash $ cd Downloads/ $ ls jdk-8u71-linux-x64.gz $ tar zxf jdk-8u71-linux-x64.gz $ ls jdk1.8.0_71 jdk-8u71-linux-x64.gz ``` ###第3步 为了使Java对所有用户可用,您必须将其移动到`/usr/local/`位置。打开root并键入以下命令。 ```bash $ su password: # mv jdk1.8.0_71 /usr/local/ # exit ``` ###第4步 要设置`PATH`和`JAVA_HOME`变量,请将以下命令添加到`〜/.bashrc`文件。 ```bash export JAVA_HOME=/usr/local/jdk1.8.0_71 export PATH= $PATH:$JAVA_HOME/bin ``` 现在将所有更改应用于当前正在运行的系统。 ```bash $ source ~/.bashrc ``` 现在,如上所述,从终端验证 `java -version` 命令。 ##下载Hadoop 安装Java之后,您必须安装Hadoop。首先,使用`Hadoop version`命令验证Hadoop的存在,如下所示。 ```bash hadoop version ``` 如果一切正常,它将为您提供以下输出。 ```bash Hadoop 3.3.0 Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r aa96f1871bfd858f9bac59cf2a81ec470da649af Compiled by brahma on 2020-07-06T18:44Z Compiled with protoc 3.7.1 From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4 This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.3.0.jar ``` 如果系统无法找到Hadoop,请在系统中下载Hadoop。请按照下面给出的命令进行操作。 使用以下命令从[Apache Software Foundation](https://hadoop.apache.org/releases.html "Apache Software Foundation")下载并解压缩hadoop-3.3.0。 ```bash $ su password: # cd /usr/local # wget http://mirrors.advancedhosters.com/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0-src.tar.gz # tar xzf hadoop-3.3.0-src.tar.gz # mv hadoop-3.3.0/* hadoop/ # exit ``` ##安装Hadoop 以任何必需的模式安装Hadoop。在这里,我们以伪分布式模式演示HBase功能,因此以伪分布式模式安装Hadoop。 以下步骤用于安装Hadoop ###第1步:设置Hadoop 您可以通过将以下命令附加到`〜/.bashrc`文件来设置Hadoop环境变量。 ```bash 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 ``` 现在将所有更改应用于当前正在运行的系统。 ```bash $ source ~/.bashrc ``` ###第2步:Hadoop配置 您可以在`$HADOOP_HOME/etc/hadoop`位置找到所有Hadoop配置文件。您需要根据Hadoop基础结构在这些配置文件中进行更改。 ```bash $ cd $HADOOP_HOME/etc/hadoop ``` 为了用Java开发Hadoop程序,您必须通过用系统中java的位置替换JAVA_HOME值来重置`hadoop-env.sh`文件中的java环境变量。 ```bash export JAVA_HOME=/usr/local/jdk1.8.0_71 ``` 您将必须编辑以下文件来配置Hadoop。 ####core-site.xml core-site.xml文件包含的信息,如用于Hadoop的实例,分配给文件系统的存储器,存储器限制用于存储所述数据的端口号,以及读/写缓冲器的大小。 打开core-site.xml,并在`
`和`
`标记之间添加以下属性。 ```xml
fs.default.name
hdfs://localhost:9000
``` ####hdfs-site.xml 在hdfs-site.xml文件中包含的信息,如复制数据的值,名称节点的路径,你的本地文件系统的数据管理部路径。它表示您要存储Hadoop下文的位置。 让我们假设以下数据。 ```xml dfs.replication (data replication value) = 1 namenode path = //home/hadoop/hadoopinfra/hdfs/namenode datanode path = //home/hadoop/hadoopinfra/hdfs/datanode ``` 路径/hadoop/是用户名。`hadoopinfra/hdfs/namenode` 是hdfs文件系统创建的目录。`hadoopinfra/hdfs/datanode`是hdfs文件系统创建的目录。 打开此文件,并在此文件的`
`,`
`标记之间添加以下属性。 ```xml
dfs.replication
1
dfs.name.dir
file:///home/hadoop/hadoopinfra/hdfs/namenode
dfs.data.dir
file:///home/hadoop/hadoopinfra/hdfs/datanode
``` >注意:在上面的文件中,所有属性值都是用户定义的,您可以根据Hadoop基础结构进行更改。 ####yarn-site.xml 该文件用于将yarn配置到Hadoop中。打开yarn-site.xml文件,并在此文件的`
`,`
`标记之间添加以下属性。 ```xml
yarn.nodemanager.aux-services
mapreduce_shuffle
``` ####mapred-site.xml 该文件用于指定我们使用的MapReduce框架。打开mapred-site.xml文件,并在此文件的`
`,`
`标记之间添加以下属性。 ```xml
mapreduce.framework.name
yarn
``` ##验证Hadoop安装 以下步骤用于验证Hadoop安装。 ###步骤 1:命名节点设置 如下所示,使用命令`hdfs namenode -format`设置名称节点。 ```bash $ cd ~ $ hdfs namenode -format '' #设置名称节点。 ``` 预期结果如下。 ```bash 2020-12-22 15:24:57,009 INFO util.GSet: Computing capacity for map INodeMap 2020-12-22 15:24:57,009 INFO util.GSet: VM type = 64-bit 2020-12-22 15:24:57,009 INFO util.GSet: 1.0% max memory 916.4 MB = 9.2 MB 2020-12-22 15:24:57,009 INFO util.GSet: capacity = 2^20 = 1048576 entries 2020-12-22 15:24:57,012 INFO namenode.FSDirectory: ACLs enabled? true 2020-12-22 15:24:57,012 INFO namenode.FSDirectory: POSIX ACL inheritance enabled? true 2020-12-22 15:24:57,012 INFO namenode.FSDirectory: XAttrs enabled? true 2020-12-22 15:24:57,012 INFO namenode.NameNode: Caching file names occurring more than 10 times 2020-12-22 15:24:57,019 INFO snapshot.SnapshotManager: Loaded config captureOpenFiles: false, skipCaptureAccessTimeOnlyChange: false, snapshotDiffAllowSnapRootDescendant: true, maxSnapshotLimit: 65536 2020-12-22 15:24:57,027 INFO snapshot.SnapshotManager: SkipList is disabled 2020-12-22 15:24:57,032 INFO util.GSet: Computing capacity for map cachedBlocks 2020-12-22 15:24:57,032 INFO util.GSet: VM type = 64-bit 2020-12-22 15:24:57,032 INFO util.GSet: 0.25% max memory 916.4 MB = 2.3 MB 2020-12-22 15:24:57,033 INFO util.GSet: capacity = 2^18 = 262144 entries 2020-12-22 15:24:57,054 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10 2020-12-22 15:24:57,054 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10 2020-12-22 15:24:57,054 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25 2020-12-22 15:24:57,062 INFO namenode.FSNamesystem: Retry cache on namenode is enabled 2020-12-22 15:24:57,062 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis 2020-12-22 15:24:57,065 INFO util.GSet: Computing capacity for map NameNodeRetryCache 2020-12-22 15:24:57,065 INFO util.GSet: VM type = 64-bit 2020-12-22 15:24:57,065 INFO util.GSet: 0.029999999329447746% max memory 916.4 MB = 281.5 KB 2020-12-22 15:24:57,065 INFO util.GSet: capacity = 2^15 = 32768 entries 2020-12-22 15:24:57,154 INFO namenode.FSImage: Allocated new BlockPoolId: BP-487692657-192.168.61.201-1608621897118 2020-12-22 15:24:57,270 INFO common.Storage: Storage directory /home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 2020-12-22 15:24:57,334 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoopinfra/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression 2020-12-22 15:24:57,486 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoopinfra/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 396 bytes saved in 0 seconds . 2020-12-22 15:24:57,515 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 2020-12-22 15:24:57,526 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown. 2020-12-22 15:24:57,527 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at www.hadoopdoc.com/192.168.61.201 ************************************************************/ ``` ###步骤 2:验证Hadoop DFS 以下命令用于启动dfs。执行此命令将启动Hadoop文件系统。 ```bash $ start-dfs.sh ``` 预期的输出如下: ``` Starting namenodes on [localhost] 上一次登录:二 12月 22 15:50:41 CST 2020pts/0 上 Starting datanodes 上一次登录:二 12月 22 15:50:52 CST 2020pts/0 上 Starting secondary namenodes [www.hadoopdoc.com] 上一次登录:二 12月 22 15:50:55 CST 2020pts/0 上 ``` ###步骤 3:验证yarn脚本 以下命令用于启动yarn脚本。执行此命令将启动yarn守护程序。 ```bash $ start-yarn.sh ``` 预期的输出如下: ``` Starting resourcemanager 上一次登录:二 12月 22 15:51:03 CST 2020pts/0 上 Starting nodemanagers 上一次登录:二 12月 22 15:53:11 CST 2020pts/0 上 ``` ###步骤 4:在浏览器上访问Hadoop 访问Hadoop的默认端口号是50070(3.x版本的hadoop改成9870)。使用以下URL在浏览器上获取Hadoop服务。 ``` http://localhost:9870/Hadoop ``` ![](/media/editor/file_1664345191000_20220928140631248060.png) ###步骤 5:验证集群的所有应用程序 访问群集的所有应用程序的默认端口号是8088。使用以下URL访问此服务。 ``` http://localhost:8088/ ``` ##安装HBase 我们可以以以下三种模式中的任何一种来安装HBase:**独立模式**,**伪分布式模式**和**完全分布式模式**。 ###独立模式 ####在独立模式下安装HBase 使用`wget`命令从[https://hbase.apache.org/downloads.html](https://hbase.apache.org/downloads.html "https://hbase.apache.org/downloads.html")下载HBase的最新稳定版本,然后使用`tar zxvf`命令将其解压缩。请参阅以下命令。 ```bash $cd usr/local/ $wget https://mirror.bit.edu.cn/apache/hbase/2.4.0/hbase-2.4.0-bin.tar.gz $tar -zxvf hbase-2.4.0-bin.tar.gz ``` 切换到超级用户模式,然后将HBase文件夹移动到/usr/local,如下所示。 ```bash $su $password: enter your password here mv hbase-2.4.0/* Hbase/ ``` ####在独立模式下配置HBase 在继续使用HBase之前,您必须编辑以下文件并配置HBase。 #####hbase-env.sh 设置HBase的java Home并从conf文件夹中打开hbase-env.sh文件。编辑JAVA_HOME环境变量,并将现有路径更改为当前JAVA_HOME变量,如下所示。 ```bash cd /usr/local/hbase/conf vim hbase-env.sh ``` 这将打开HBase的env.sh文件。现在,将现有的JAVA_HOME值替换为您的当前值,如下所示。 ``` export JAVA_HOME=/usr/lib/jvm/java-1.8.0 ``` #####hbase-site.xml 这是HBase的主要配置文件。通过打开/usr/local/hbase中的hbase主文件夹,将数据目录设置到适当的位置。在conf文件夹中,您会找到几个文件,打开hbase-site.xml文件,如下所示。 ```bash #cd /usr/local/hbase/ #cd conf # vim hbase-site.xml ``` 在hbase-site.xml文件中,您将找到`
`和`
`标记。在其中,将HBase目录设置在属性键下,名称为`hbase.rootdir`,如下所示。 ```xml
//Here you have to set the path where you want HBase to store its files.
hbase.rootdir
file:/home/hadoop/HBase/HFiles
//Here you have to set the path where you want HBase to store its built in zookeeper files.
hbase.zookeeper.property.dataDir
/home/hadoop/zookeeper
``` 至此,HBase安装和配置部分成功完成。我们可以使用HBase的bin文件夹中提供的start-hbase.sh脚本来启动HBase。为此,打开HBase主文件夹并运行HBase启动脚本,如下所示。 ```bash $cd /usr/local/HBase/bin $./start-hbase.sh ``` 如果一切顺利,当您尝试运行HBase启动脚本时,它将提示您HBase已启动的消息。 ``` starting master, logging to /usr/local/hbase/bin/../logs/hbase-tpmaster-localhost.localdomain.out ``` ###伪分布式模式 现在让我们检查如何在伪分布式模式下安装HBase。 ####配置HBase 在继续使用HBase之前,请在本地系统或远程系统上配置Hadoop和HDFS,并确保它们正在运行。如果HBase正在运行,请停止它。 #####hbase-site.xml 编辑hbase-site.xml文件以添加以下属性。 ```xml
hbase.cluster.distributed
true
``` 它将提到应该在哪种模式下运行HBase。在本地文件系统的同一文件中,使用`hdfs:////URI`语法更改`hbase.rootdir`(您的HDFS实例地址)。我们正在本地主机的端口9000上运行HDFS。 ```xml
hbase.rootdir
hdfs://localhost:9000/hbase
``` ###启动HBase 配置结束后,浏览至HBase主文件夹并使用以下命令启动HBase。 ```bash $cd /usr/local/HBase $bin/start-hbase.sh ``` >注意:在启动HBase之前,请确保Hadoop正在运行。 ##在HDFS中检查HBase目录 HBase在HDFS中创建其目录。要查看创建的目录,请浏览至Hadoop bin并键入以下命令。 ```bash $ ./bin/hadoop fs -ls /user/jc2182/tmp/hbase ``` 如果一切顺利,它将为您提供以下输出。 ```bash drwxr-xr-x - jc2182 supergroup 0 2020-12-29 11:52 /user/jc2182/tmp/hbase/.hbck drwxr-xr-x - jc2182 supergroup 0 2020-12-29 14:09 /user/jc2182/tmp/hbase/.tmp drwxr-xr-x - jc2182 supergroup 0 2020-12-29 14:08 /user/jc2182/tmp/hbase/MasterData drwxr-xr-x - jc2182 supergroup 0 2020-12-29 14:10 /user/jc2182/tmp/hbase/WALs drwxr-xr-x - jc2182 supergroup 0 2020-12-29 11:52 /user/jc2182/tmp/hbase/archive drwxr-xr-x - jc2182 supergroup 0 2020-12-29 11:52 /user/jc2182/tmp/hbase/corrupt drwxr-xr-x - jc2182 supergroup 0 2020-12-29 14:08 /user/jc2182/tmp/hbase/data -rw-r--r-- 1 jc2182 supergroup 42 2020-12-29 11:52 /user/jc2182/tmp/hbase/hbase.id -rw-r--r-- 1 jc2182 supergroup 7 2020-12-29 11:52 /user/jc2182/tmp/hbase/hbase.version drwxr-xr-x - jc2182 supergroup 0 2020-12-29 11:52 /user/jc2182/tmp/hbase/mobdir drwxr-xr-x - jc2182 supergroup 0 2020-12-29 14:10 /user/jc2182/tmp/hbase/oldWALs drwx--x--x - jc2182 supergroup 0 2020-12-29 11:52 /user/jc2182/tmp/hbase/staging ``` ##启动和停止主机(master) 使用`local-master-backup.sh`,您最多可以启动10台服务器。打开HBase的主文件夹,主目录并执行以下命令将其启动。 ```bash $ ./bin/local-master-backup.sh 2 4 ``` 要杀死备份主服务器,您需要其进程ID,该进程ID将存储在名为`/tmp/hbase-USER-X-master.pid`的文件中。您可以使用以下命令杀死备份主服务器。 ```bash $ cat /tmp/hbase-user-1-master.pid |xargs kill -9 ``` ##启动和停止RegionServer 您可以使用以下命令从单个系统运行多个区域服务器。 ```bash $ .bin/local-regionservers.sh start 2 3 ``` 要停止区域服务器,请使用以下命令。 ```bash $ .bin/local-regionservers.sh stop 3 ``` ##启动HBaseShell 成功安装HBase之后,可以启动HBase Shell。下面给出的是启动HBase Shell所需遵循的步骤顺序。打开终端。 ###启动Hadoop文件系统 浏览Hadoop home sbin文件夹并启动Hadoop文件系统,如下所示。 ```bash $cd $HADOOP_HOME/sbin $start-all.sh ``` ###启动HBase 浏览HBase根目录bin文件夹并启动HBase。 ```bash $cd /usr/local/hbase $./bin/start-hbase.sh ``` ###启动HBase主服务器 这将是同一目录。如下所示启动它。 ```bash $./bin/local-master-backup.sh start 2 (数字表示指定的服务器数量。) ``` ###启动区域服务器 如下所示启动区域服务器。 ```bash $./bin/./local-regionservers.sh start 3 ``` ###启动HBase Shell 您可以使用以下命令启动HBase Shell。 ```bash $cd bin $./hbase shell ``` 这将为您提供HBase Shell提示符,如下所示。 ```bash HBase Shell Use "help" to get list of supported commands. Use "exit" to quit this interactive shell. For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell Version 2.4.0, r282ab70012ae843af54a6779543ff20acbcbb629, Thu Dec 3 09:58:52 PST 2020 Took 0.0020 seconds hbase:001:0> ``` ##HBase Web界面 要访问HBase的Web界面,请在浏览器中键入以下URL。 ``` http://localhost:16010 ``` 该界面列出了您当前正在运行的Region服务器,备份主服务器和HBase表。 ![](/media/editor/file_1664347855000_20220928145055871388.png) ![](/media/editor/file_1664347880000_20220928145120576195.png) ##设置Java环境 我们还可以使用Java库与HBase通信,但是在使用Java API访问HBase之前,您需要为这些库设置类路径。 ###设置classpath 在进行编程之前,请在.bashrc文件中将类路径设置为HBase库。如下所示,在任何一个编辑器中打开`.bashrc`。 ```bash $ gedit ~/.bashrc ``` 如下所示,在其中设置HBase库的类路径(HBase中的lib文件夹)。 ```bash export CLASSPATH = $CLASSPATH://home/hadoop/hbase/lib/* ``` 这是为了防止在使用Java API访问HBase时出现“找不到类”异常。
加我微信交流吧