Hadoop之Hbase数据库
来源:互联网 发布:手游答器软件 编辑:程序博客网 时间:2024/06/05 20:11
Hadoop之Hbase数据库
一、概念
1、面向列族的数据库2、基于内存的
二、Hbase知识点
1、Hbase列族2、Hbase Regions -自动水平分区 -row的子集 -第一行(include),最后一行(exclude) -每张表至少一个region -增长到阀值时,切割成两个相同的region -row update是原子性的3、Hbase架构:基于Hadoop存储4、Hbase构成 -Hbase master(1) 负责初始安装 指定region到regionserver 恢复故障的rs 轻负载 -Hbase ReginServer(n) 携带0~n个region 负责客户端rw请求。
三、安装Hbase
具体如何安装请访问http://blog.csdn.net/reblue520/article/details/70888850
注:需要先安装zookeeper然后安装Hbase
启动成功后在浏览器输入http://master:16010/master-status可查看到Hbase信息页面
四、Shell基础练习
1、用shell连接你的HBase
输入 help 然后 可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。
[root@master bin]# hbase shell2017-07-11 13:46:46,575 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicableSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/usr/local/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]HBase Shell; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase ShellVersion 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017hbase(main):001:0>
2、创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况,然后插入些值
hbase(main):010:0> create 'test', 'cf'0 row(s) in 2.2510 secondshbase(main):014:0> list 'test'TABLE test1 row(s) in 0.0090 seconds=> ["test"]hbase(main):002:0> put 'test', 'row1', 'cf:a', 'value1'0 row(s) in 0.9180 secondshbase(main):003:0> put 'test', 'row2', 'cf:b', 'value2'0 row(s) in 0.0160 secondshbase(main):004:0> put 'test', 'row3', 'cf:c', 'value3'0 row(s) in 0.0170 seconds
以上我们分别插入了3行。第一个行key为row1, 列为 cf:a, 值是 value1。HBase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a
3、检查插入情况
a·Scan这个表,操作如下
hbase(main):005:0> scan 'test'ROW COLUMN+CELL row1 column=cf:a, timestamp=1499755697391, value=value1 row2 column=cf:b, timestamp=1499755703238, value=value2 row3 column=cf:c, timestamp=1499755708694, value=value3 3 row(s) in 0.0690 seconds
b·Get一行,操作如下
hbase(main):006:0> get 'test', 'row1'COLUMN CELL cf:a timestamp=1499755697391, value=value11 row(s) in 0.0760 seconds
c·disable 再 drop 这张表,可以清除你刚刚的操作
hbase(main):001:0> disable 'test'0 row(s) in 3.2300 secondshbase(main):002:0> drop 'test'0 row(s) in 1.3340 seconds
d·关闭shell
hbase(main):014:0> exit
创建表成功后访问http://master:50070/explorer.html#/hbase截图如下
五、项目实战-eclise调用Hbase API实现操作功能
前提准备:Hbase Jar包 相对路径为:hbase-1.2.6-bin\lib
1、编写Java类
package com.xt.hbase;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.MasterNotRunningException;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.ZooKeeperConnectionException;import org.apache.hadoop.hbase.client.HBaseAdmin;public class HbaseApp { public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException { // 创建Hbase的配置文件,是Hadoop的子类 Configuration config = HBaseConfiguration.create(); // 创建Hbase管理员 HBaseAdmin admin = new HBaseAdmin(config); try { // 设置表名称 TableName tableName = TableName.valueOf("test1"); // 创建表描述符 HTableDescriptor htd = new HTableDescriptor(tableName); // 创建列描述符 HColumnDescriptor hcd = new HColumnDescriptor("data"); // 添加列族 htd.addFamily(hcd); // 创建表 admin.createTable(htd); //成功后输出OK System.out.println("OK"); } finally { admin.close(); } }}
2、导出Jar包
3、运行程序
注:1、看`/usr/local/hbase/lib下hadoop`版本是否与hadoop版本一致.不一致则删除`/usr/local/hbase/lib`中有关hadoop的jar包 `rm -rf hadoop*.jar`,然后执行`find /usr/local/hadoop/share/hadoop -name "hadoop*jar" | xargs -i cp {} /usr/local/hbase/lib/ `拷贝所有hadoop下的jar包hbase下进行hadoop版本的统一2、hbase1.2.0 依赖 amazonaws包下的两个文件`aws-java-sdk-core-1.10.77.jar`,`aws-java-sdk-s3-1.11.34.jar`,故需要把下面两个文件上传至$HBASE_HOME/lib 目录下,否则会出现下面的错误Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentialsProviderCaused by: java.lang.ClassNotFoundException: com.amazonaws.services.s3.AmazonS3
然后分别执行
export HBASE_CLASSPATH=hadoophbase01.jar ------》将jar包配置为HBASE_CLASSPATHhbase com.xt.hbase.HbaseApp ------》执行jar
阅读全文
0 0
- Hadoop之Hbase数据库
- Hadoop之Hbase数据库完全分…
- Hadoop之Hbase数据库的应用
- 8-hadoop之hbase分布式数据库
- Hadoop平台HBase数据库
- Hadoop Hbase数据库操作
- zookeeper+hadoop+hbase 之 hbase
- Hadoop之Hbase------>Hbase常用命令
- Hadoop之Hbase数据库完全分布模式安装guide
- zookeeper+hadoop+hbase 之 hadoop
- Hadoop学习之HBase
- Hadoop学习之HBase
- Hadoop之谈谈HBase
- Hadoop实战之HBase
- hadoop安装之-hbase
- Hadoop之Hbase详解
- hadoop之Hbase简介
- hadoop之hbase学习
- 关于freemarker操作word的相关问题
- ORACLE initialization or shutdown in progress解决方法
- 读研前的学习计划
- 设置多个复选框选中与取消选中
- python 将数据保存为excel的xls格式
- Hadoop之Hbase数据库
- POJ3295 Tautology (模拟)
- 对象池技术
- eclipse复制项目项目名更改的问题
- 对java学习方向的总结!
- 多个摄像头在一个Activity里显示
- easyui-panel Demo
- eclips导入项目jdk版本不一样解决方案
- 复杂链表复制