Hbase

  • 是什么

    • HDFS上开发的面向列的分布式数据库
    • 依赖于zookeeper
  • 数据模型
      • 模式

        • 表的属性

          • disable离线
          • enable在线
        • 列族的列表
        • 行键

          • 字节数组
        • 行根据行的键值进行排序
        • 列族column family

          • 物理上所有的列族成员都一起存放在文件系统中
          • 调优和存储都是在列族层次进行的
          • 必须作为表的一部分预先给出
          • 列族成员可以随后加入
          • 属性
            • 是否应该在文件系统中被压缩存储
            • 一个单元格要保存多少个版本
      • 单元格cell
        • 行和列的交叉坐标决定
        • 有版本
          • hbase插入时的时间戳
        • 未解释的字节数组
      • 区域region
        • 由表中行的子集构成
        • 由其所属的表、它包含的第一行及最后一行(不含这行)来表示
        • 超过大小阀值便会分成两个大小基本相同的新分区region
  • 实现
    • regionserver

      • 负责region区域管理
      • 响应客户端的请求
        • 写操作

          • 首先被追加到提交日志commit log中
          • 然后被加入内存中的memstore
          • memstore满则被刷入文件系统
        • 读操作
      • region区域划分并通知HBase master有了新的子区域daughter region
        • 这样master就可以用子区域替换父区域
    • master节点协调管理多个regionserver从属机
      • 启动bootstrap一个全新的安装
      • 把区域分配给注册的regionserver
    • zookeeper实例
      • 根目录表的位置,master主控机的地址等信息管理
      • 机器故障时通过zookeeper协调恢复服务
      • regionserver节点列在conf/regionservers文件中
    • 持久化
      • Hadoop文件系统API来实现

        • 本地文件系统
        • HDFS等
    • 运行中的HBase
      • 特殊目录表

        • 维护所有区域的列表、状态和位置
        • -ROOT-
          • 包含.META.表的区域列表
          • .META.
            • 包含所有用户空间区域的列表
            • 使用区域名作为键
              • 区域名由所属的表名、区域的起始行、区域的创建时间以及对其整体进行的MD5哈希值组成
              • 键是排序的,查询某行所在区域只要在目录表中找到第一个键大于或等于给定行的键的项即可
        • 区域变化时目录表会进行相应的更新
        • 每个行操作可能要访问三次远程节点
          • 连接到zookeeper的客户端首选查找-ROOT-的位置
          • 然后通过-ROOT-获取到请求范围所属.META.区域的位置
          • 接着查找.META.区域来获取用空间区域所在节点及位置
          • 接着客户端就可以直接和管理那个区域的regionserver进行交互
      • 客户端会缓存他们遍历-ROOT-时获取的信息和.META.位置以及用空间区域的开始行和结束行
        • 当发生错误时会再去查看.META.获取区域的新位置
      • 如果一个regionserver崩溃,master会根据提交日志重做使得区域恢复到服务器失败前的状态
  • 安装
    • 解压

      • tar xfz hbase-0.90.4.tar.gz
    • 修改配置
      • hbase-env.sh

        • 打开注释配置你的JDK安装路径: export JAVA_HOME=/usr/java/jdk1.6.0_27
      • hbase-site.xml
        • <configuration>  <property>   <name>hbase.rootdir</name>   <value>file:///home/skysnow/hbase/rootdir</value>  </property> </configuration>

          因为是单机启动,所以只设定了HBase写入的本地路径

    • 启动
      • bin/start-hbase.sh
    • 关闭
      • bin/stop-hbase.sh
    • shell实践
      • 1、用shell来连接HBase.

        • ./hbase shell
      • 2、如果无法连接查看是否是防火墙的问题
        • 执行service iptables stop关闭防火墙,重启hbase。
      • 3、 建表操作演示
        • create 'table1','col1'
        • list
        • put 'table1','row1','col1:a','value1'
        • put 'table1','row2','col1:b','value2'
        • put 'table1','row3','col1:c','value3'
      • 4、 用scan查看表所有数据
        • scan 'table1'
      • 5、 用get查看单行数据
        • get 'table1','row1'
      • 6、 用disable和drop删除表
        • disable 'table1'
        • drop 'table1'
  • 集群安装
    • 设置JAVA_HOME
    • 设置zookeeper
    • conf/hbase-site.xml
      • hbase.rootdir

        • file:///home/testuser/hbase
      • hbase.zookeeper.property.dataDir
        • /home/testuser/zookeeper
      • hbase.cluster.distributed
        • true
      • hbase.zookeeper.quorum
        • master,slave1,slave2
      • hbase.zookeeper.property.dataDir
        • Property from ZooKeeper’s config zoo.cfg. The directory where the snapshot is stored.
        • /home/myhadoop/hbase/tmp/zookeeper
    • 免密码ssh
    • conf/regionservers
      • master.hadoop
      • slave1.hadoop
      • slave2.hadoop
    • Configure ZooKeeper
      • conf/hbase-site.xml

        • hbase.zookeeper.quorum

          • master,slave1,slave2
        • hbase.zookeeper.property.dataDir
  • 数据迁移
    • 导出导入

      • mapreduce

        • cd $HADOOP_HOME/
        • bin/hadoop fs -ls /data/test_table
        • bin/hbase org.apache.hadoop.hbase.mapreduce.Export test_table /data/test_table
        • create 'test_copy', 'cf'
        • bin/hbase org.apache.hadoop.hbase.mapreduce.Import test_copy hdfs://l-master.data/data/test_table
          • test_table为要导出的表名,/data/test_table为hdfs中的目录地址。
      • text
        • echo "scan 'foo'" | hbase shell > myText

hbase入门综合概要介绍相关推荐

  1. redis入门综合概要介绍

    redis入门综合概要介绍 概要介绍:个人感觉redis是一个将数据保存在内存的存取工具,类似一个增强的Map,所以存取比较快.数据的存取基本上是set(key,value),get(key)这种ke ...

  2. kafka入门综合概要介绍

    ~ kafka 设计初衷为统一信息收集平台 分布式收集,统一处理 可以实时处理反馈信息 支持大数据 高容错 分布式.分区的.多副本的.多订阅者的日志系统(分布式MQ系统) 消息的发布(publish) ...

  3. zookeeper入门综合概要介绍

    ~ zookeeper 原理 zookeeper是一个具有高可用性的高性能协调服务 模型 zookeeper维护着一个具有高可用性的树形层次结构 树节点被称为znode znode可以存储数据 ACL ...

  4. 一条数据的HBase之旅,简明HBase入门教程-Write全流程

    如果将上篇内容理解为一个冗长的"铺垫",那么,从本文开始,剧情才开始正式展开.本文基于提供的样例数据,介绍了写数据的接口,RowKey定义,数据在客户端的组装,数据路由,打包分发, ...

  5. 各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言)

    各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言) 总结 a.一个语言或者一个东西能火是和这种语言进入某一子行业的契机有关.也就是说这个语言有没有解决社会急需的问题. ...

  6. 一条数据的HBase之旅,简明HBase入门教程-开篇

    常见的HBase新手问题: 什么样的数据适合用HBase来存储? 既然HBase也是一个数据库,能否用它将现有系统中昂贵的Oracle替换掉? 存放于HBase中的数据记录,为何不直接存放于HDFS之 ...

  7. 一条数据的HBase之旅,简明HBase入门教程1:开篇

    [摘要] 这是HBase入门系列的第1篇文章,主要介绍HBase当前的项目活跃度以及搜索引擎热度信息,以及一些概况信息,内容基于HBase 2.0 beta2版本.本系列文章既适用于HBase新手,也 ...

  8. 大数据学习之HBase入门笔记

    文章目录 一.HBase简介 1.1.HBase定义 1.2.HBase数据模型 1.2.1.HBase逻辑结构 1.2.2.物理存储结构 1.2.3.数据模型 1.3.HBase基础架构(入门版) ...

  9. 数据库入门理论知识介绍以及编译安装MySql

    数据库入门理论知识介绍以及编译安装MySql 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1&g ...

最新文章

  1. 春运背后默默守护高铁安全的“隐形人”
  2. 26 进程优先级队列Queue
  3. PHP数组——自定义排序
  4. YBTOJ:前缀数组(KMP)
  5. 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties
  6. php实现for循环输出星阵,星阵让先再胜职业棋手三阵 18日晚将对阵世界冠军
  7. ubuntu 安装redash
  8. 计算机语言python读音_编程语言是什么意思_编程语言的翻译_音标_读音_用法_例句_爱词霸在线词典...
  9. 深入理解JVM-类加载器深入解析(3)
  10. springboot+mybatis+druid+atomikos 处理分布式事务
  11. qq透明图像问题#13
  12. win10下装黑苹果双系统_高手拆换GPD P2 Max无线模块,实现完美黑苹果
  13. 0x80070057复制从服务器复制文件,解决win10更改用户文件夹提示0x80070057的方法
  14. 赴日工作之在留换签证
  15. Wilcoxon signed rank sum test 检验
  16. 面试时英语自我介绍范文
  17. 生活中的ps!女朋友把菜花烤了一下,结果......
  18. 内核编译时出现 ERROR: modpost: “some_function” [xxx.ko] undefined!
  19. nrm是什么?以及nrm的安装与命令
  20. 如何用JS刷新当前页面

热门文章

  1. 专访头条搜索:从推荐到搜索,如何构建搜索技术的另一种可能?
  2. scannet数据集和shapenet、modelnet等数据集的名称和标签对应关系
  3. PyTorch 深度学习:36分钟快速入门——GAN
  4. ios项目中使用gcd的场景_iOS中超级超级详细介绍GCD
  5. java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件
  6. oracle数据库dca,有关Oracle数据库
  7. 加快Linux上yum下载安装包的速度(以CentOS 7,安装gcc为例)
  8. 106页《Python进阶》中文版介绍分享
  9. 网易身患绝症员工被裁事件背后 年轻一代的辛酸和压力
  10. 如何估算太坊交易的gas消耗量