一、什么是NOSQL

NoSQL:not only SQL,非关系型数据库
NoSQL是一个通用术语

  • 指不遵循传统RDBMS模型的数据库
  • 数据是非关系的,且不使用SQL作为主要查询语言
  • 解决数据库的可伸缩性和可用性问题
  • 不针对原子性或一致性问题

二、NOSQL的优缺点

NoSQL和关系型数据库对比:

hadoop如何开启NameNode审计日志 hadoop nosql_数据


NOsql的特点:

  • 最终一致性
  • 应用程序增加了维护一致性和处理事务等职责
  • 冗余数据存储

但是NoSQL != 大数据!!!

NoSQL基本概念:
三大基石:CAP、BASE、 最终一致性

分类如下:

hadoop如何开启NameNode审计日志 hadoop nosql_数据库_02

三、hbase概述

1.HBase是一个领先的NoSQL数据库

  • 是一个面向列存储的数据库
  • 是一个分布式hash map
  • 基于Google Big Table论文
  • 使用HDFS作为存储并利用其可靠性

2.HBase特点

  • 数据访问速度快,响应时间约2-20毫秒
  • 支持随机读写,每个节点20k~100k+ ops/s
  • 可扩展性,可扩展到20,000+节点

3.发展史

hadoop如何开启NameNode审计日志 hadoop nosql_大数据_03

四、hbase应用场景

4.1.增量数据-时间序列数据

高容量,高速写入

HBase之上有OpenTSDB模块,可以满足时序类场景,比如传感器,系统监控,股票行情监控等

hadoop如何开启NameNode审计日志 hadoop nosql_表名_04

4.2.信息交换-消息传递

高容量,高速读写

通信、消息同步的应用构建在HBase之上,比如email,FaceBook等

hadoop如何开启NameNode审计日志 hadoop nosql_表名_05

4.3.内容服务-Web后端应用程序

高容量,高速读写

头条类、新闻类的的新闻、网页、图片存储在HBase中

hadoop如何开启NameNode审计日志 hadoop nosql_数据_06

4.4.HBase应用场景示例

Facebook

9000 memcached instances,4000 shards mysql
2011全部迁移到HBase
Alibaba

自2010年以来,HBase一直为阿里搜索系统的核心存储
当前规模
3 个集群,每个有1000+ nodes
在Yarn上与Flink共享
每天提供超过10M+ ops/s 的服务

五、hbase架构

hadoop如何开启NameNode审计日志 hadoop nosql_大数据_07


HBase采用Master/Slave架构

  • HMaster
  • RegionServer
  • Zookeeper
  • HBase
  • Client
  • Region

HMaster的作用

  • 是HBase集群的主节点,可以配置多个,用来实现HA
  • 处理元数据的变更 监控RegionServer
  • 负责RegionServer的负载均衡
  • 处理RegionServer故障转移
  • 通过ZooKeeper发布自己的位置给客户端

HBase元数据管理

  • 数据管理目录
  • 系统目录表hbase:meta
  • 存储元数据 ZooKeeper
  • 存储hbase:meta表的位置信息
  • HBase实际数据存储在HDFS上
六、hbase基本语法
1.用户权限
 user_permission [‘表名’]
 grant ‘用户名’,‘RWXCA’
 2.表
 创建:create ‘表名’,{NAME=>‘列簇名’},{NAME=>‘列簇名’}
 删除:disable ‘表名’ —>drop ‘表名’
 改: snapshot ‘表名’,‘镜像名’
 clone_snapshot ‘镜像名’,‘表名’
 delete_snapshot"镜像名"
 查:list
 3.行
 插入数据:put ‘表名’,‘行键’,’‘列簇名:列名’,‘值’
 可以单独删除行,行内的数据全部删除
 4.列簇
 增加:alter’表名’,NAME=>‘列簇名’
 删除:… ,METHOD=‘delete’
 改:先加后删
 查:get ‘表名’,‘行键’,‘列簇名’
 5.列:
 覆盖
 6.批量导入文件
 hbase org.appche.hadoop.hbase.mapreduce.ImportTsv 
 -Dimporttsv.separator="," 
 -Dimporttsv.columns=“HBASE_ROW_KEY, 
 emp:name,emp:job_title,emp:company,time:sDate,time:eDate” 
 customer file:///root/emp_basic.csvpu