一、 hbase的原理知识

1. hbase介绍

hbase是hadoop的一个重要成员,主要用于存储结构化数据,构建在hdfs之上的分布式存储系统,它主要通过横向扩展,通用不断增加廉价服务器增加计算和存储能力。

2. hbase的特点

1. 大:一个表可以有数十亿行,上百万列;

2. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;

3. 面向列:面向列(族)的存储和权限控制,列(族)独立检索;

4. 稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;

5. 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

6. 数据类型单一:Hbase中的数据都是字符串,没有类型。

3. hbase的结构

1. 在 HBase 中首先会有 Column Family 的概念,简称为 CF。CF 一般用于将相关的列(Column)组合起来。在物理上 HBase 其实是按 CF 存储的,只是按照 Row-key 将相关 CF 中的列关联起来。

2. Row-key 加上 CF 加上 Qulifier 再加上一个时间戳才可以定位到一个单元格数据(Hbase 中每个单元格默认有 3 个时间戳的版本数据)

3. 逻辑结构图与物理结构的映射如下:

二、hbase的安装(Linux )(伪分布式)

还是用之前的伪分布式集群。

1. 将hbase-1.0.1.1-bin.tar.gz上传到集群,并解压

tar -zxvf hbase-1.0.1.1-bin.tar.gz

默认会解压到当前路径,并创建一个hbase-1.0.1.1-bin文件夹

2. 设置环境变量(root用户,修改/etc/profile,在最后添加)

HBASE_HOME=/home/qjx/hbase-1.0.1.1
export PATH=$PATH:$HBASE_HOME/bin

 使之立刻生效

source /etc/profile

3. 修改 /home/qjx/hbase-1.0.1.1/bin/hbase-env.sh

3.hbase-env.sh中的如下属性:

export JAVA_HOME=/usr/java/jdk1.8.0_121
export HBASE_MANAGES_ZK=true

 将上面连个取消注释使之生效,

HBASE_MANAGES_ZK=true是使zookeeper生效

4. 修改 /home/qjx/hbase-1.0.1.1/bin/hbase-site.xml配置文件,添加配置(配置之前需要在hdfs中添加hbase文件夹)

hadoop fs -mkdir /hbase

(同时需要创建/home/qjx/hadoop/zookeeper文件夹)

mkdir /home/qjx/hadoop/zookeeper

修改 /home/qjx/hbase-1.0.1.1/bin/hbase-site.xml配置文件

<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://qjx:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/qjx/hadoop/zookeeper</value>
</property>
</configuration>

5. 启动

bin/start-hbase.sh

6. 关闭

bin/stop-hbase.sh

7. 检查配置是否正确

jps比之前多现实三个

三、 hbase的shell命令

1. 创建表

create 'table1','info','address'

这个后面的参数 'table1','info','address' 是列族

2. 查看表

list

3. 查看表的描述

3.1 查看

describe 'table1'

3.2 修改version为存储多个版本

alter 'table1',{NAME=>'address',VERSIONS=>3}

再次查看,发现VERSIONS变为了3,即可以存储3个版本的数据

4. 删除表

disable 'table1'
drop 'table1'

5. 添加记录

put 'table1','qujinxu','info:age','22'
put 'table1','qujinxu','address:city','shuangyashan'
put 'table1','xukang','info:age','23'
put 'table1','xukang','info:birthday','1994'
put 'table1','xukang','address:province','hebei'
put 'table1','xukang','address:city','handan'

6. 查询记录

6.1 查询一个row-key的记录

get 'table1','qujinxu'
get 'table1','xukang'

6.2 查询一个row-key的某一列的记录

get 'table1','qujinxu','info'
get 'table1','qujinxu','address'
get 'table1','xukang','info'
get 'table1','xukang','address'

6.3 查看某几个版本的数据

如果有多个版本,可以显示多条,如果没有,可以自己设置,见3.2操作

注意:VERSOIONS 而不是VERSION

put 'table1','qujinxu','address:city','qinhuangdao'
get 'table1','qujinxu',{COLUMN=>'address:city',VERSION=>5}

7. 更新记录

更新记录还是讲数据put上去进行覆盖,不过会产生新的迭代版本,见上一步操作的第一步

8. 全部扫描

scan 'table1'

9. 删除记录

9.1 删除具体的row-key的某个列

delete 'table1','qujinxu','info:city'

9.2 删除row-key的某个列族

delete 'table1','qujinxu','info

hadoop学习第七天-HBase的原理、安装、shell命令的更多相关文章

  1. Hadoop 学习之路(六)—— HDFS 常用 Shell 命令

    1. 显示当前目录结构 # 显示当前目录结构 hadoop fs -ls <path> # 递归显示当前目录结构 hadoop fs -ls -R <path> # 显示根目录 ...

  2. hbase的常用的shell命令&hbase的DDL操作&hbase的DML操作

    前言 笔者在分类中的hbase栏目之前已经分享了hbase的安装以及一些常用的shell命令的使用,这里不仅仅重新复习一下shell命令,还会介绍hbase的DDL以及DML的相关操作. hbase的 ...

  3. Hbase_02、Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作(转)

    阅读目录 前言 一.hbase的shell操作 1.1启动hbase shell 1.2执行hbase shell的帮助文档 1.3退出hbase shell 1.4使用status命令查看hbase ...

  4. hadoop2.5.2学习及实践笔记(五)—— HDFS shell命令行常见操作

    附:HDFS shell guide文档地址 http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/FileSy ...

  5. ZooKeeper学习之路(三)—— Zookeeper常用Shell命令

    一.节点增删改查 1.1 启动服务和连接服务 # 启动服务 bin/zkServer.sh start #连接服务 不指定服务地址则默认连接到localhost:2181 zkCli.sh -serv ...

  6. ZooKeeper学习第七期--ZooKeeper一致性原理

    一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示. 图 1.1 ZooK ...

  7. Hadoop学习记录(4)|MapReduce原理|API操作使用

    MapReduce概念 MapReduce是一种分布式计算模型,由谷歌提出,主要用于搜索领域,解决海量数据计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce( ...

  8. 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系

    Hive目的是为了简化MapReduce编程 实际应用中,Hive与Hbase不经常链接

  9. C# Hadoop学习笔记(二)—架构原理

    一,架构   二.名词解释 (一)NameNode(简称NN),Hadoop的主节点,负责侦听节点是否活跃,对外开放接口等.在未来的大数据处理过程中,由于访问量和节点数量的不断增多,需要该节点的处理能 ...

随机推荐

  1. Atitit.虚拟机与指令系统的设计

    Atitit.虚拟机与指令系统的设计 1. 两种计算模型  ,堆栈机和状态机(基于寄存器的虚拟机1 1.1.1. 堆栈机1 1.1.2. 状态机2 2. 为什么状态机比堆栈机快呢?3 2.1. Sta ...

  2. 通过 append() 和 prepend() 方法添加若干新元素

    在上面的例子中,我们只在被选元素的开头/结尾插入文本/HTML. 不过,append() 和 prepend() 方法能够通过参数接收无限数量的新元素.可以通过 jQuery 来生成文本/HTML(就 ...

  3. centos虚拟机复制后网络重启出错解决

    参考:http://blog.csdn.net/xluren/article/details/38986667 执行service network restart后出现如下错误 FAILED: Bri ...

  4. QQ宠物怀念版H5

    <QQ宠物>相伴十三载 哇!明信片邮到了!!开心ヽ(○^㉨^)ノ♪ 大乐斗Ⅱ 怀念一波...

  5. Javascript间歇调用和超时调用

    间歇调用:每隔指定的时间就执行一次代码 超时调用:在指定的时间过后执行代码  HTML Code  12345678910111213141516171819   <!DOCTYPE html& ...

  6. 用Python和py2app写独立的Mac OS X 应用

    文/lovexiaov(简书作者)原文链接:http://www.jianshu.com/p/afb6b2b97ce9著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 前提 创建一个普通 ...

  7. mysql的体系架构和存储引擎

    定义数据库和实例 数据库:物理操作系统的文件或其他形式文件类型的集合.在mysql数据库中,数据库文件可以是frm.MYD.MYI.ibd结尾的文件. 实例:MySQL数据库由后台线程以及一个共享内存 ...

  8. wxPython安装使用

    https://wiki.wxpython.org/How to install wxPython pip install -U wxPython 验证版本 D:\python>python P ...

  9. iOS学习笔记(十一)——JSON数据解析

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  10. 启发式搜索技术A*

    开篇 这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索. 对于入门的好文章不多,而这篇文章就是为初学者而写的,很适合入门的一篇.文章定位:非专业性A*文章,很适合入门. 有图有真相,先给 ...