Hbase学习文档(超详细单机安装)

一、前言
1.1简述
本文分为五个部分:linux主机名的设置、jdk的安装、hadoop的安装、单机模式下hbase的安装、hbase的shell常用命令及java实例。
1.2环境要求
本文使用系统环境:centOS6.5,hadoop-2.5.2,hbase-0.98.13-hadoop2-bin,jdk1.8;
可能需要用到的window软件:SwitchHosts(若使用云服务器,则可以使用与ip绑定的域名作为主机名)。

二、linux主机名的设置
2.1 临时修改hostname
注:如果是云服务器推荐使用域名作为主机名,如果是虚拟机可以自定义.

# hostname hbase.domain

hbase配置用户名密码 hbase hostname_hbase超详细单机安装


2.2 永久修改hostname

# vi /etc/sysconfig/network

结果如下:

hbase配置用户名密码 hbase hostname_hbase_02


2.3 配置Host

# vi /etc/hosts

结果如下:

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_03


若配置完,没生效可以重启服务器

2.4 防火墙设置

本文推荐自己设置防火墙入栈规制,不要直接关闭防火墙.本文只是学习,所以在这里选择关闭防火墙,若是要直接使用的话最好不要关闭防火墙.

查看防火墙状态:

# service iptables status

临时关闭防火墙:

# service iptables stop

永久关闭防火墙:

# chkconfig iptables off

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_04

三、jdk的安装

在确保linux系统本身没有安装jdk的时候,执行下面步骤:

3.1 上传jdk

将jdk-8u171-linux-x64.tar.gz这个文件上传到linux虚拟机然后,解压到/opt/modules/这个目录下,若没有这个目录可以用mkdir -p,创建目录。

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_05


hbase配置用户名密码 hbase hostname_hbase配置用户名密码_06


3.2 解压jdk

# tar -zxvf jdk-8u171-linux-x64.tar.gz  -C  /opt/modules/

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_07


3.3 配置环境变量

# vi /etc/profile

在末尾行添加

# set java environment
JAVA_HOME=/opt/modules/jdk1.8.0_171
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

hbase配置用户名密码 hbase hostname_hbase API接口的使用_08

# source /etc/profile  使更改的配置立即生效
# java -version 验证结果是否正确

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_09

四、hadoop的安装
4.1 验证hadoop是否已经安装.

# hadoop version

如果一切正常,会得到下面的输出:

hbase配置用户名密码 hbase hostname_hbase_10


如果系统上是无法找到 Hadoop,那么证明还未安装.

4.2 开始安装hadoop

4.2.1上传hadoop-2.5.2.tar.gz到/root目录下:

hbase配置用户名密码 hbase hostname_hbase_11


4.2.2 将文件解压到/opt/modules/hadoopstandalone/目录下:

# tar -zxvf /root/hadoop-2.5.2.tar.gz -C /opt/modules/hadoopstandalone/

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_12


4.2.3 配置Hadoop环境变量

可以通过附加下面的命令在 〜/etc/profile文件中以设置 Hadoop 环境变量。

export HADOOP_HOME=/opt/modules/hadoopstandalone/hadoop-2.5.2
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

hbase配置用户名密码 hbase hostname_hbase API接口的使用_13


#source /etc/profile 可以使配置立即生效

4.2.4 Hadoop配置

找到位于 “$HADOOP_HOME/etc/hadoop” 目录下所有的Hadoop配置文件。根据需要Hadoop将配置文件中的内容作修改。

#cd $HADOOP_HOME/etc/hadoop

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

export JAVA_HOME=/opt/modules/jdk1.8.0_171

hbase配置用户名密码 hbase hostname_hbase_14


4.2.5 编辑以下文件来配置Hadoop

core-site.xml

core-site.xml文件中包含,如:用于Hadoop实例的端口号,分配给文件系统,存储器限制用于存储数据存储器和读/写缓冲器的大小的信息。

打开core-site.xml,并在和标签之间添加以下属性。

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

如图:

hbase配置用户名密码 hbase hostname_hbase API接口的使用_15


hdfs-site.xml

hdfs-site.xml文件中包含,如:复制数据的值,NameNode的路径,本地文件系统,要存储Hadoop基础架构的Datanode路径的信息。

假设有以下数据。

dfs.replication (data replication value) = 1
(//opt/home/hadoop/hadoopinfra/hdfs/namenode目录路径可以自己定义)
namenode path = //opt/home/hadoop/hadoopinfra/hdfs/namenode
(//opt/home/hadoop/hadoopinfra/hdfs/datanode目录路径可以自己定义)
datanode path = //opt/home/hadoop/hadoopinfra/hdfs/datanode

打开这个文件,并在和 标记之间添加以下属性。

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

结果如下:

hbase配置用户名密码 hbase hostname_hbase_16


注:上面的文件,所有的属性值是用户定义的,可以根据自己的Hadoop的基础架构进行更改。

yarn-site.xml

此文件用于配置成yarn在Hadoop中。打开yarn-site.xml文件,并在标签之前添加以下属性到这个文件中。

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

结果如下:

hbase配置用户名密码 hbase hostname_hbase API接口的使用_17


mapred-site.xml

此文件用于指定MapReduce框架以使用。默认情况下Hadoop包含yarn-site.xml模板。首先,它需要从mapred-site.xml复制模板到mapred-site.xml文件,使用下面的命令来。

#cp mapred-site.xml.template mapred-site.xml

打开 mapred-site.xml 文件,并在 和 标签之间添加以下属性。

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

结果如下:

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_18


4.2.6 验证Hadoop安装

(1) 名称节点设置

设置名称节点使用“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 = hbase.domain/192.168.0.22
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.5.2
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/opt/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 hbase.domain/192.168.0.22
************************************************************/

(2)验证Hadoop DFS
下面的命令用来启动DFS。执行这个命令将启动Hadoop文件系统。

# start-dfs.sh

预期结果如下:

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

hbase配置用户名密码 hbase hostname_hbase API接口的使用_19


(3)验证yarn脚本

# start-yarn.sh

预期结果如下:

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

hbase配置用户名密码 hbase hostname_hbase_20


(4)访问本机的浏览器

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

http://192.168.0.22:50070

hbase配置用户名密码 hbase hostname_hbase API接口的使用_21


(5)验证集群中的所有应用程序

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

http://192.168.0.22:8088

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_22


五、单机模式下hbase的安装

5.1 上传hbase-0.98.13-hadoop2-bin.tar.gz 到/root目录下:

hbase配置用户名密码 hbase hostname_hbase API接口的使用_23


5.2 将hbase-0.98.13-hadoop2-bin.tar.gz解压安装在/usr/local目录下:

# tar -zxvf /root/hbase-0.98.13-hadoop2-bin.tar.gz -C /usr/local

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_24


5.3 单机模式下配置Hbase

在继续HBase之前,需要编辑下列文件和配置HBase。

hbase-env.sh 为HBase设置Java目录,并从conf文件夹打开hbase-env.sh文件。编辑JAVA_HOME环境变量,改变路径到当前JAVA_HOME变量:

# cd /usr/local/hbase-0.98.13-hadoop2/conf
# vi hbase-env.sh

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

hbase配置用户名密码 hbase hostname_hbase_25


hbase-site.xml

这是HBase的主配置文件。通过在 /usr/local/hbase-0.98.13-hadoop2 打开HBase主文件夹,设置数据目录到合适的位置。在 conf 文件夹里面有几个文件,现在打开hbase-site.xml文件:

# cd /usr/local/hbase-0.98.13-hadoop2/
# cd conf
# vi hbase-site.xml

在hbase-site.xml文件里面,找到 和 标签。并在其中,设置属性键名为“hbase.rootdir”,如下图所示的HBase目录。

<configuration>
///opt/home/hadoop/HBase/HFiles这个目录可以自己定义
<property>
<name>hbase.rootdir</name>
<value>file:/opt/home/hadoop/HBase/HFiles</value>
</property>
///opt/home/hadoop/zookeeper这个目录可以自己定义
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/home/hadoop/zookeeper</value>
</property>
</configuration>

如下图所示:

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_26


到此 HBase 的安装配置已成功完成。可以通过使用 HBase 的 bin 文件夹中提供 start-hbase.sh 脚本启动 HBase。为此,打开HBase 主文件夹,然后运行 HBase 启动脚本,如下图所示。

# cd /usr/local/hbase-0.98.13-hadoop2/bin
# ./start-hbase.sh

如果一切顺利,当运行HBase启动脚本,它会提示一条消息:HBase has started

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

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_27


启动HBase主服务器

这在相同目录。启动它,如下图所示:

# ./bin/local-master-backup.sh start 2 (数字是用来区分不同的hbase服务器的)

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_28


启动区域服务器

启动区域服务器,如下所示.

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

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_29


启动HBase Shell

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

# cd bin
# ./hbase shell

这会给出HBase shell 的提示符,如下图所示。

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_30


5.4 HBase的Web界面

要访问 HBase 的 Web界面,在浏览器中键入以下URL:

http://192.168.0.22:60010 以下界面列出了当前正在运行的区域服务器,备份主服务以及HBase表。

HBase区域服务器和备份主服务

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_31

HBase表

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_32


5.5 设置类路径

继续进行之前编程,在.bashrc文件中设置类路径到HBase库。打开.bashrc文件编辑,如下所示。

# vi /etc/profile

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

hbase配置用户名密码 hbase hostname_hbase_33

六、hbase的shell常用命令及java实例

6.1 hbase的shelll常用命令

6.1.1通用命令

(1)status: 提供HBase的状态,例如,服务器的数量。

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_34


(2)version: 提供正在使用HBase版本。

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_35


(3)table_help: 表引用命令提供帮助。

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_36


(4)whoami: 提供有关用户的信息.

hbase配置用户名密码 hbase hostname_hbase_37


6.1.2 数据定义语言

(1) create: 创建一个表。

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_38


(2)list: 列出HBase的所有表。

hbase配置用户名密码 hbase hostname_hbase_39


(3)disable: 禁用表。

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_40


(4)is_disabled: 验证表是否被禁用。

表示被禁用:

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_41


表示启用:

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_42


(5)enable: 启用一个表。

hbase配置用户名密码 hbase hostname_hbase API接口的使用_43


(6)is_enabled: 验证表是否已启用。

表示启用:

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_44


表示被禁用:

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_45


(7)describe: 提供了一个表的描述。

hbase配置用户名密码 hbase hostname_hbase API接口的使用_46


(8)alter: 改变一个表。

hbase配置用户名密码 hbase hostname_hbase API接口的使用_47


(9)exists: 验证表是否存在。

hbase配置用户名密码 hbase hostname_hbase_48


(10)drop: 从HBase中删除表。

分两步:首先disable,然后drop

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_49

(11)drop_all: 丢弃在命令中给出匹配“regex”的表。

hbase> drop_all ‘t.*’

注意:要删除表,则必须先将其禁用。

假设有一些表的名称如下:

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_50


所有这些表以字母test0开始。首先使用disable_all命令禁用所有这些表如下所示。

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_51


现在,可以使用 drop_all 命令删除它们,如下所示。

hbase配置用户名密码 hbase hostname_hbase API接口的使用_52


(12)Java Admin API: 在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor 这两个重要的类提供DDL功能。

6.1.3 数据操纵语言
(1) put: 把指定列在指定的行中单元格的值在一个特定的表。

put ‘table name’,'row ',‘Column family:column name’,‘new value’

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_53


(2)get: 取行或单元格的内容。

get ‘table name’,‘row1’

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_54


(3)delete: 删除表中的单元格值。

delete ‘table name’, ‘row’, 'column name ', ‘time stamp’

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_55


(4)deleteall: 删除给定行的所有单元格。

deleteall ‘table name’, ‘row’,

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_56


(5)scan: 扫描并返回表数据。

scan ‘table name’

hbase配置用户名密码 hbase hostname_hbase API接口的使用_57


(6)count: 计数并返回表中的行的数目。

count ‘table name’

hbase配置用户名密码 hbase hostname_hbase配置用户名密码_58


(7)truncate: 禁用,删除和重新创建一个指定的表。

truncate ‘table name’

hbase配置用户名密码 hbase hostname_hbase_59


hbase配置用户名密码 hbase hostname_hbase shell命令的使用_60


(8)Java client API: 在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的类。6.2 java实例

6.2.1 准备

如果是用虚拟机搭建的hbase环境,要对虚拟机服务器的ip进行硬编码.如果是云服务器则可采用域名直接访问hbase服务.进行硬编码时,推荐采用switchhost进行硬编码,不要直接在C盘下操作host文件.

hbase配置用户名密码 hbase hostname_hbase超详细单机安装_61


测试硬编码是否已正常启用可以使用浏览器用:

http://hbase.domain:60010/master-status

hbase配置用户名密码 hbase hostname_hbase shell命令的使用_62


6.2.2 java程序与hbase服务器的交互

详细可参考案例代码:

相关软件下载:

链接:https://pan.baidu.com/s/17QnMfoXXvNNL0v4if6uJcw

提取码:26pr

案例代码下载:

链接:https://pan.baidu.com/s/1eb0xUI0vg2QNFtZKLC61mA

提取码:nnrd