zoukankan      html  css  js  c++  java
  • Hbase学习笔记


    一,Hbase概述

      HBase是建 立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。

      HBase 依赖于 HDFS 做底层的数据存储, 依赖于 MapReduce 做数据计算, 依赖于 ZooKeeper 做服务协调。

      它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据。HBase 查询数据功能很简单,不支持 join 等复杂操作。 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)主要用来存储结构化和半结构化的松散数据。

      HBase 中的表特点
      大:一个表可以有上十亿行,上百万列。
      面向列:面向列(族)的存储和权限控制,列(簇)独立检索。
      稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
      无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一 张表中不同的行可以有截然不同的列。

    二,Hbase的结构

      Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。

      Column的概念,列,可理解成MySQL列。

      ColumnFamily的概念,列族, HBase引入的概念。Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取
      TimeStamp的概念,TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
      单元格(Cell),由{rowkey, column( = + ), version} 唯一确定的单元。 Cell 中的数据是没有类型的,全部是字节码形式存贮。
     
    三,hbase单机部署
      1,安装hadoop,jdk,zookeeper环境。
      2,下载,解压hbase。
      3,环境配置:vi /etc/profile。
      4,在root目录下:
     
    mkdir  /root/hbase 
    mkdir  /root/hbase/tmp  
    mkdir  /root/hbase/pids
    

      5,修改/conf/hbase-env.sh

    export JAVA_HOME=/home/java/jdk1.8
    export HADOOP_HOME=/home/hadoop/hadoop2.8
    export HBASE_HOME=/home/hbase/hbase-1.2.6
    export HBASE_CLASSPATH=/home/hadoop/hadoop2.8/etc/hadoop
    export HBASE_PID_DIR=/root/hbase/pids
    export HBASE_MANAGES_ZK=false
    

      6,修改hbase-site.xml

    <!-- 存储目录 -->
    <property>  
    <name>hbase.rootdir</name>  
    <value>hdfs://server1:9000/hbase</value>  
    <description>The directory shared byregion servers.</description>  </property> 
    <!-- hbase的端口 -->
    <property>  
    <name>hbase.zookeeper.property.clientPort</name>  
    <value>2181</value>  
    <description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.  
    </description>  </property>  
    <!--  超时时间 -->
    <property>  
    <name>zookeeper.session.timeout</name>  
    <value>120000</value>  </property>  
    <!--  zookeeper 集群配置。如果是集群,则添加其它的主机地址 --><property>  
    <name>hbase.zookeeper.quorum</name>  
    <value>server1</value>  </property>  
    <property>  
    <name>hbase.tmp.dir</name>  
    <value>/root/hbase/tmp</value>  </property>  
    <!-- false是单机模式,true是分布式模式  如果是单机模式则调用自身的zookeeper--><property>  
    <name>hbase.cluster.distributed</name>  
    <value>true</value>
    </property>

      7,在成功启动Hadoop之后

      切换到HBase目录下

      cd /home/hbase/hbase-1.2.6/bin

      输入:./start-hbase.sh

      在浏览器输入:http://server1:16010/

     
     
    三,Hbase shell操作入门
      
    进入shell客户端:hbase shell
      推出shell客户端:exit
       HBase表的操作:  
      创建表:create '表名',{NAME => '列簇名',VERSIONS => 版本号}
      查看表:list
      查看表的详细信息:desc '表名'
      修改表的定义alter:
      添加一个列簇:alter '表名',NAME => '列簇名'
      删除一个列簇:alter '表名',NAME => '列簇名', METHOD => 'delete'
      或者:alter '表名','delete' => 'myCard'
      添加列簇的同时修改列簇:alter '表名',{NAME => '列簇'},{NAME => '列簇',METHOD => 'delete'}
      清空表:truncate '表名'  
      删除表:先停用表:disable '表名'  再删除表:drop '表名'
      HBase表中数据的操作:
      增put: put '表名' ,'rowkey','列簇名:字段名','字段值'
      查get + scan:get '表名','rowkey','列簇名'
      查询表中的所有信息:scan '表名'   scan '表名',{COLUMNS => '列簇名'}
      删delete:delete '表名','rowkey','列簇名:字段名' 
    

      

     
  • 相关阅读:
    Core Expression
    Linux基础
    express
    C#程序模拟登录批量获取各种邮件内容信息
    Windows Phone 执行模型概述
    Wp8—LongListSelector控件使用
    网页背景图片自然缩放
    Unix sed实用教程系列目录[已完成]
    Unix sed实用教程开篇
    《SpringMVC从入门到放肆》十五、SpringMVC之上传文件
  • 原文地址:https://www.cnblogs.com/songweideboke/p/9874068.html
Copyright © 2011-2022 走看看