一、前言
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
2.2 永久修改hostname
# vi /etc/sysconfig/network
# vi /etc/hosts
结果如下:
若配置完,没生效可以重启服务器
2.4 防火墙设置
本文推荐自己设置防火墙入栈规制,不要直接关闭防火墙.本文只是学习,所以在这里选择关闭防火墙,若是要直接使用的话最好不要关闭防火墙.
查看防火墙状态:
# service iptables status
临时关闭防火墙:
# service iptables stop
永久关闭防火墙:
# chkconfig iptables off
三、jdk的安装
在确保linux系统本身没有安装jdk的时候,执行下面步骤:
3.1 上传jdk
将jdk-8u171-linux-x64.tar.gz这个文件上传到linux虚拟机然后,解压到/opt/modules/这个目录下,若没有这个目录可以用mkdir -p,创建目录。
3.2 解压jdk
# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/modules/
# 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
# source /etc/profile 使更改的配置立即生效
# java -version 验证结果是否正确
四、hadoop的安装
4.1 验证hadoop是否已经安装.
# hadoop version
如果一切正常,会得到下面的输出:
如果系统上是无法找到 Hadoop,那么证明还未安装.
4.2 开始安装hadoop
4.2.1上传hadoop-2.5.2.tar.gz到/root目录下:
4.2.2 将文件解压到/opt/modules/hadoopstandalone/目录下:
# tar -zxvf /root/hadoop-2.5.2.tar.gz -C /opt/modules/hadoopstandalone/
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
#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
4.2.5 编辑以下文件来配置Hadoop
core-site.xml
core-site.xml文件中包含,如:用于Hadoop实例的端口号,分配给文件系统,存储器限制用于存储数据存储器和读/写缓冲器的大小的信息。
打开core-site.xml,并在和标签之间添加以下属性。
fs.default.name
hdfs://hbase.domain:9000
如图:
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
打开这个文件,并在和 标记之间添加以下属性。
dfs.replication
1
dfs.name.dir
file:///opt/home/hadoop/hadoopinfra/hdfs/namenode
dfs.data.dir
file:///opt/home/hadoop/hadoopinfra/hdfs/datanode
结果如下:
注:上面的文件,所有的属性值是用户定义的,可以根据自己的Hadoop的基础架构进行更改。
yarn-site.xml
此文件用于配置成yarn在Hadoop中。打开yarn-site.xml文件,并在标签之前添加以下属性到这个文件中。
yarn.nodemanager.aux-services
mapreduce_shuffle
结果如下:
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 文件,并在 和 标签之间添加以下属性。
mapreduce.framework.name
yarn
结果如下:
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]
# 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
(4)访问本机的浏览器
访问Hadoop的默认端口号为50070。使用以下网址,以获取Hadoop服务在浏览器中。
http://192.168.0.22:50070
(5)验证集群中的所有应用程序
访问群集的所有应用程序的默认端口号为8088。使用以下URL访问该服务。
http://192.168.0.22:8088
五、单机模式下hbase的安装
5.1 上传hbase-0.98.13-hadoop2-bin.tar.gz 到/root目录下:
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
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-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目录。
///opt/home/hadoop/HBase/HFiles这个目录可以自己定义
hbase.rootdir
file:/opt/home/hadoop/HBase/HFiles
///opt/home/hadoop/zookeeper这个目录可以自己定义
hbase.zookeeper.property.dataDir
/opt/home/hadoop/zookeeper
如下图所示:
到此 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
# ./bin/local-master-backup.sh start 2 (数字是用来区分不同的hbase服务器的)
# ./bin/./local-regionservers.sh start 3
启动HBase Shell
可以使用以下命令启动HBase shell
# cd bin
# ./hbase shell
这会给出HBase shell 的提示符,如下图所示。
5.4 HBase的Web界面
要访问 HBase 的 Web界面,在浏览器中键入以下URL:
http://192.168.0.22:60010
以下界面列出了当前正在运行的区域服务器,备份主服务以及HBase表。
HBase区域服务器和备份主服务
HBase表
5.5 设置类路径
继续进行之前编程,在.bashrc文件中设置类路径到HBase库。打开.bashrc文件编辑,如下所示。
# vi /etc/profile
为HBase库设置类路径(HBase的lib文件夹),如下图所示。
六、hbase的shell常用命令及java实例
6.1 hbase的shelll常用命令
6.1.1通用命令
(1)status: 提供HBase的状态,例如,服务器的数量。
(2)version: 提供正在使用HBase版本。
(3)table_help: 表引用命令提供帮助。
(4)whoami: 提供有关用户的信息.
6.1.2 数据定义语言
(1) create: 创建一个表。
(2)list: 列出HBase的所有表。
(3)disable: 禁用表。
(4)is_disabled: 验证表是否被禁用。
表示被禁用:
表示启用:
(5)enable: 启用一个表。
(6)is_enabled: 验证表是否已启用。
表示启用:
表示被禁用:
(7)describe: 提供了一个表的描述。
(8)alter: 改变一个表。
(9)exists: 验证表是否存在。
(10)drop: 从HBase中删除表。
分两步:首先disable,然后drop
(11)drop_all: 丢弃在命令中给出匹配“regex”的表。
hbase> drop_all ‘t.*’
注意:要删除表,则必须先将其禁用。
假设有一些表的名称如下:
所有这些表以字母test0开始。首先使用disable_all命令禁用所有这些表如下所示。
现在,可以使用 drop_all 命令删除它们,如下所示。
(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’
get ‘table name’,‘row1’
delete ‘table name’, ‘row’, 'column name ', ‘time stamp’
deleteall ‘table name’, ‘row’,
scan ‘table name’
count ‘table name’
(7)truncate: 禁用,删除和重新创建一个指定的表。
truncate ‘table name’
(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文件.
测试硬编码是否已正常启用可以使用浏览器用:
http://hbase.domain:60010/master-status
6.2.2 java程序与hbase服务器的交互
详细可参考案例代码:
相关软件下载:
链接:https://pan.baidu.com/s/17QnMfoXXvNNL0v4if6uJcw
提取码:26pr
案例代码下载:
链接:https://pan.baidu.com/s/1eb0xUI0vg2QNFtZKLC61mA
提取码:nnrd