实验目的

了解hbase的概念

通过安装hbase了解hbase的原理

了解hbase与hadoop的关系

复习hadoop和zookeeper的运行

实验原理

  hbase是bigtable的开源山寨版本。hbase建立在hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与hadoop一样,hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

1.hbase逻辑视图
  hbase的逻辑介于nosql和RDBMS之间,hbase的列不是表格的schema,列族才是,每个列族可以拥有多个列。所以放数据的时候,我们需要指定rowkey、列族和列。而每个rowkey、列族和列确定的数据又有多个时间版本。

 

 

你会觉得其中第三个列族好像有的列是空的,没有数据,但是和关系型数据库不一样的是,就算这个列式空的也不会占用多余的空间,而且还可以随时添加列。

2.物理存储

Table中的所有行都按照row key的字典序排列,Table 在行的方向上分割为多个Hregion。

Hregion按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的Hregion,当table中的行不断增多,就会有越来越多的Hregion。

Hregion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的HRegion server上。但一个Hregion是不会拆分到多个server上的。

HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。事实上,HRegion由一个或者多个Store组成,每个store保存一个columns family。每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。

 

 

3.系统架构
  Client
  包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如region的位置信息。

  Zookeeper
  第一,保证任何时候,集群中只有一个master;
  第二,存贮所有Region的寻址入口;
  第三,实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master;
  第四,存储Hbase的schema,包括有哪些table,每个table有哪些column family。

  Master
  第一,为Region server分配region;
  第二,负责region server的负载均衡;
  第三,发现失效的region server并重新分配其上的region;
  第四,GFS上的垃圾文件回收;
  第五,处理schema更新请求。

  Region Server
  第一,Region server维护Master分配给它的region,处理对这些region的IO请求;
  第二,Region server负责切分在运行过程中变得过大的region。

  可以看到,client访问hbase上数据的过程并不需要master参与(寻址访问zookeeper和region server,数据读写访问regione server),master仅仅维护者table和region的元数据信息,负载很低。整个架构图就是这样:

 

 

实验环境

1.操作系统
  服务器1:Linux_CentOS
  服务器2:Linux_CentOS
  服务器3:Linux_CentOS
  服务器4:Linux_CentOS
  操作机:Windows_7
  服务器1默认用户名:root,密码:123456
  服务器2默认用户名:root,密码:123456
  服务器3默认用户名:root,密码:123456
  服务器4默认用户名:root,密码:123456
  操作机默认用户名:hongya,密码:123456

2.实验工具
  Xshell

 

 

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
  Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。实验中我们用到XShell5,其新增功能有:
  1.有效保护信息安全性;Xshell支持各种安全功能,如SSH1/SSH2协议,密码,和DSA和RSA公开密钥的用户认证方法,并加密所有流量的各种加密算法。重要的是要保持用户的数据安全与内置Xshell安全功能,因为像Telnet和Rlogin这样的传统连接协议很容易让用户的网络流量受到任何有网络知识的人的窃取。Xshell将帮助用户保护数据免受黑客攻击。
  2.最好的终端用户体验;终端用户需要经常在任何给定的时间中运用多个终端会话,以及与不同主机比较终端输出或者给不同主机发送同一组命令。Xshell则可以解决这些问题。此外还有方便用户的功能,如标签环境,广泛拆分窗口,同步输入和会话管理,用户可以节省时间做其他的工作。
  3.代替不安全的Telnet客户端;Xshell支持VT100,VT220,VT320,Xterm,Linux,Scoansi和ANSI终端仿真和提供各种终端外观选项取代传统的Telnet客户端。
  4. Xshell在单一屏幕实现多语言;Xshell中的UTF-8在同类终端软件中是第一个运用的。用Xshell,可以将多种语言显示在一个屏幕上,无需切换不同的语言编码。越来越多的企业需要用到UTF-8格式的数据库和应用程序,有一个支持UTF-8编码终端模拟器的需求在不断增加。Xshell可以帮助用户处理多语言环境。  5. 支持安全连接的TCP/IP应用的X11和任意;在SSH隧道机制中,Xshell支持端口转发功能,无需修改任何程序,它可以使所有的TCP/IP应用程序共享一个安全的连接。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

保存退出。

  2.3修改hbase-site.xml文件,添加以下内容:

vim hbase-site.xml

      <property>

      <name>hbase.rootdir</name>

      <value>hdfs://node6:9000</value>

      </property>

      <property>

      <name>hbase.cluster.distributed</name>

      <value>true</value>

      </property>

      <property>

      <name>hbase.zookeeper.quorum</name>

      <value>node6,node7,node8</value>

      </property>

 

 

2.4然后,需要配置hbase的work节点,配置regionservers,配置逻辑上存放数据库数据的节点每个换行:

vim regionservers

  添加内容:

node7

node8

node9

 

 

2.5为了hbase能够自动找到hadoop集群,应该如下配置二选一:
  1)在hbase-env.sh的HBASE_CLASSPATH变量后面加上HADOOP_CONF_DIR;
  2)将hdfs-site.xm、core-site.xml复制到$HBASE_HOME/conf/下面。
  实验中我们选择第二个:

cp $HADOOP_HOME/etc/hadoop/core-site.xml /opt/soft/hbase-1.2.4/conf/

cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml /opt/soft/hbase-1.2.4/conf/