【HBase企业应用开发】工作中自己总结的Hbase笔记,非常全面!

来源:互联网 发布:广西广电网络快吗 编辑:程序博客网 时间:2024/05/21 07:55

目录
一、HBase原理和结构说明
二、HBase的表结构
1) Row Key
2) 列族 column family
3) 单元 Cell
4) 时间戳 timestamp
三、HBASe单机配置
1) 下载
2) 使用root身份登录目标服务器系统(Suse10Linux)
3) 创建hadoop用户,useraddhadooppasswdhadoop修改hadoop用户的登录密码.
4) 解压hadoop
5) 配置hbase-site.xml文件
6) 启动和关闭
7) 说明
四、Hbase配置解释
1) 修改linux 系统参数
2) JVM 配置
3) 配置HBase运行参数
4) HBase中log4j的日志
五、HBase shell的基本用法
1) 建立一个表和列族
2) 按设计的表结构插入值
3) 根据键值查询数据
4) 扫描所有数据
5) 删除指定数据
6) 修改表结构
7) 统计行数
8) disable 和 enable 操作
9) 表的删除
10) hbase shell脚本
六、JAVA操作HBASE方面
1) 连接原理和配置
2) 创建表
3) 删除表
4) 查询数据
5) 插入数据
6) 删除数据
7) 切分表

一、HBase原理和结构说明
HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》
HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。
二、HBase的表结构
HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族/列簇(column family)。
实际情况为:
如上图所示,key1,key2,key3是三条记录的唯一的row key值,column-family1,column-family2,column-family3是三个列族,每个列族下又包括几列。比如column-family1这个列族下包括两列,名字是column1和column2,t1:abc,t2:gdxdf是由rowkey1和column-family1-column1唯一确定的一个单元cell。这个cell中有两个数据,abc和gdxdf。两个值的时间戳不一样,分别是t1,t2, hbase会返回最新时间的值给请求者。
这些名词的具体含义如下:
1) Row Key
与nosql数据库们一样,row key是用来检索记录的主键。访问hbase table中的行,只有三种方式:
(1.1) 通过单个row key访问
(1.2) 通过row key的range
(1.3) 全表扫描
Rowkey行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。
存储时,数据按照Row key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)
注意:
字典序对int排序的结果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行键必须用0作左填充。
行的一次读写是原子操作 (不论一次读写多少列)。这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。
2) 列族 column family
hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history , courses:math 都属于courses 这个列族。
访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。
3) 单元 Cell
HBase中通过row和columns确定的为一个存贮单元称为cell。由{row key, column( = +

三、HBASe单机配置
1) 下载
在Apache/Hadoop项目的网站(hadoop.apache.org/)下载hadoophbase发行包,此处两个发行包的大版本号一定要一致,譬如都是0.18版本:hadoop-0.18.2.tar.gzhbase-0.18.1.tar.gz
2) 使用root身份登录目标服务器系统(Suse10Linux)
首先安装java虚拟机,这个比较简单,随便找个绿色的解压就可以了,在这个例子里面我使用IBMWAS6.1附带的jdk,它的home目录是/opt/IBM/WebSphere/AppServer/java,我们只需要配置系统的环境变量就可以了.
编辑全局环境变量文件/etc/profile,在文件后面添加
exportJAVA_HOME=/opt/IBM/WebSphere/AppServer/java
exportPATH=JAVAHOME:PATH
保存profile文件后使用source/etc/profileprofile,便java-version查看javahome环境变量和path变量是否被正确加载.
另外到/etc/hosts文件中查看主机映射是否存在,例如127.0.0.1localhost或者什么其他的名字,在这里默认配置本机为localhost,如果需要做分布式的话,本机要做namenode,所以要把所有的datanode的host添加到这里面.
3) 创建hadoop用户,useraddhadooppasswdhadoop修改hadoop用户的登录密码.
创建hadoop用户的home目录,如果打算在别处安装hadoop/hbase的话可以不这样做,这里我们默认将hadoophbase安装在/home/username.cd/home
mkdirhadoophadoopchownhadoophadoop
改变目录权限,这里我们配大一些,其实只要644就足够了:
chmod755hadoop使hadoop,/home/hadoop,:chmoda+xhadoop-0.18.2.tar.gz
chmoda+xhbase0.18.1.tar.gz4)hadoop:tarzxvfhadoop-0.18.2.tar.gz
这样做会在/home/hadoop目录下解压hadoop发行包并创建到/home/hadoop/hadoop。
5) 配置hbase-site.xml文件


hbase.rootdir
file:///home/data/hbase


hbase.coprocessor.user.region.classes
com.avos.uluru.hbase.AggrEndPoint


hbase.zookeeper.quorum
10.5.31.10


zookeeper.session.timeout
60000


hbase.zookeeper.property.clientPort
2181


hbase.regionserver.dns.nameserver
test.hbase.com


hbase.master.dns.interface
em3


6) 启动和关闭
/bin/start-hbase.sh
/bin/stop-hbase.sh
7) 说明
必须配置的参数:
Hbase.zookeeper.quorum 本机的IP地址,不能为localhost或127.0.0.1,否则不能远程链接。
Hbase.master.dns.interface 为master绑定的网卡,多网卡的服务器必须配置,否则默认绑定到虚拟的轮回网卡,不配置不能远程链接。
ZooKeeper服务不认Ip,只认主机名,因此需要在/etc/hosts文件里增加一个ZooKeeper服务的IP地址与本机主机名的配置。如:10.5.31.10 amber-mts
如果不配置,Zookerper会绑定到locahost的主机名,远程就不能链接。
远程调用客户端也需要配置本机的DNS,在c:\windows\system32\driver\etc\host文件里增加Zookerper的Ip与主机名的配置。

…….
后续更多精彩内容请下载笔记后阅读。
http://www.dajiangtai.com/community/18296.do

3 0
原创粉丝点击