第三部分:Hadoop使用和Hbase使用

一、实验目的和要求

理解Hadoop和Hbase的工作原理,安装部署HBase,掌握HDFS文件系统和Hbase的操作命令。

二、实验内容和原理

Hadoop文件系统:

HDFS,是Hadoop Distributed File System的简称,是Hadoop抽象文件系统的一种实现。Hadoop抽象文件系统可以与本地系统、Amazon S3等集成,甚至可以通过Web协议(webhsfs)来操作。HDFS的文件分布在集群机器上,同时提供副本进行容错及可靠性保证。例如客户端写入读取文件的直接操作都是分布在集群各个机器上的,没有单点性能压力。

Hbase:

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

hadoop命令差别 hdfs hadoop hdfs hbase_hbase

三、主要环境

CentOS 6.5、虚拟机、hbase-1.2.6-bin

四、实验数据记录和处理

Hadoop使用

4.1 HDFS命令的熟悉

1.创建文件夹

hadoop fs -mkdir input

hadoop fs -mkdir /input

2.列出HDFS文件

hadoop fs -ls #返回HDFS的user/zzf目录下的内容

hadoop fs -ls / #返回HDFS根目录下的内容

hadoop fs -ls /input #返回HDFS的input目录下的内容

3.上传本地文件到HDFS

hadoop fs -put newfile /input #上传到HDFS的input目录中

hadoop fs -put test1.txt /input

hadoop fs -put newfile newfile1 #上传并重新命名

4.将HDFS的文件复制到本地系统中

hadoop fs -get newfile1 newfile1

hadoop fs -get input in

5.删除HDFS下的文档

hadoop fs -rmr newfile1

hadoop fs -rm /newfile1

hadoop fs -rmr /input

6.查看HDFS下的文档

hadoop fs -cat newfile

hadoop fs -cat newfile | head -2

hadoop fs -cat newfile | tail -2

7.运行Sort

bin/hadoop jar hadoop-examples-1.2.1.jar sort /sort_in /sort_out

hadoop fs -cat /sort_out/*

8.查看HDFS命令

hadoop fs -help

9.报告HDFS的基本统计信息

hadoop dfsadmin -report

10.安全模式

hadoop dfsadmin -saftmode leave

hadoop dfsadmin -saftmode enter

11.负载均衡

bin/start-balancer.sh

安装部署HBase
该部分的安装需要在Hadoop已经安装成功的基础上,并且要求Hadoop已经正常启动。

4.2 解压并安装HBase

使用下面的命令,解压HBase安装包:

cd /home/zzf/resource

mv hbase-0.98.9-hadoop2.tar.gz ~/

cd

tar -zxvf hbase-0.98.9-hadoop21.tar.gz

cd hbase-0.98.9-hadoop2

4.3 配置HBase

进入HBase安装主目录,然后修改配置文件

cd /home/zzf/hbase-0.98.9-hadoop2/conf

4.3.1 修改环境变量hbase-env. sh

使用下面的命令打开文件

gedit hbase-env.sh

该文件的靠前部分有下面一行内容

#export JAVA_HOME=/usr/java/jdk1.6.0/

将该行内容修改为

export JAVA_HOME=/usr/java/jdk1.8.0_101/

4.3.2修改配置文件hbase-site.xml

用下面的内容替换原先hbase-site.xml中的内容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://master:9000/hbase</value>
	</property>
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>master</value>
	</property>
</configuration>

4.3.3设置regionservers

将regionservers中的localhost修改为下面的内容

slave

4.3.4将HBase安装文件复制到HadoopSlave节点

使用下面的命令操作

cd

scp -r hbase-0.98.9-hadoop2 slave:~/

4.4启动并验证HBase

进入HBase安装主目录,启动HBase

cd /home/zzf/hbase-0.98.9-hadoop2

bin/start-hbase.sh

执行命令后会看到下面的打印输出

hadoop命令差别 hdfs hadoop hdfs hbase_HDFS_02

4.5 HBase Shell操作命令实验

进入HBase安装主目录,启动HBase,进入客户端

cd /home/zzf/hbase-0.98.9-hadoop2

bin/hbase shell

hadoop命令差别 hdfs hadoop hdfs hbase_HDFS_03


查看列表

list

创建表test

create ‘test’,{NAME=>‘f1’,version=>5}

插入数据

put ‘test’,‘aid001’,‘f1:uid’,‘001’

扫描查询数据

scan ‘test’

单条查询数据

get ‘test’,‘aid001’

查看表结构

describe ‘test’

修改表

disable 'test’

alter ‘test’,NAME=>‘f1’,VERSION=>3

enable ‘test’

再次查看表结构进行对比

describe ‘test’

清空表

truncate ‘test’

扫描表

scan ‘test’

删除表

disable 'test’

drop 'test’

list

创建新表uid_cnt

Create ‘uid_cnt’,{NAME=>‘f1’,VERSION=>5}

五、实验结果与分析

HDFS命令:

hadoop命令差别 hdfs hadoop hdfs hbase_hadoop命令差别 hdfs_04

hadoop命令差别 hdfs hadoop hdfs hbase_hadoop_05


hadoop命令差别 hdfs hadoop hdfs hbase_hadoop_06


hadoop命令差别 hdfs hadoop hdfs hbase_hbase_07

启动并验证HBase:

打开Firefox浏览器,在地址栏中输入htttp://master:60010,会看到如下图的HBase管理页面,看到这些说明HBase已经启动成功

hadoop命令差别 hdfs hadoop hdfs hbase_HDFS_08

hadoop命令差别 hdfs hadoop hdfs hbase_HDFS_09

HBase Shell操作命令实验结果如图:

hadoop命令差别 hdfs hadoop hdfs hbase_hbase_10

hadoop命令差别 hdfs hadoop hdfs hbase_hbase_11

hadoop命令差别 hdfs hadoop hdfs hbase_hadoop_12

hadoop命令差别 hdfs hadoop hdfs hbase_hadoop_13