NoSQL数据库

  • 关系型数据库:用表格的行-列来保存数据,OLTP,写入多,行式存储
  • 非关系型数据库:只用来存储数据,业务逻辑由应用程序处理,OLAP,查询多,列式存储
  • 常见NoSQL数据库
    • Redis:基于内存的NoSQL数据库
    • MongoDB:基于文档型(BSON)的NoSQl数据库
  • 设计一个数据库保存电影信息
    • Oracle:至少三张表,每张1000行,笛卡尔积1000*1000*1000,性能低
    • MongoDB:只有1000条记录,查询快(MongoDB 4.0 开始支持事务,支持分布式存储和MapReduce)

HBase

  • Hadoop Database
  • 以HDFS作为最基本的存储单元(表、列族-->目录,数据-->文件)
  • 可快速随机访问海量结构化数据
  • 支持数据随机查找,增量数据处理,数据更新
  • 适用于大量数据存储,大量数据高并发操作,需要对数据进行随机读写的简单操作
  • 内部使用哈希表,通过索引对HDFS文件中的数据进行快速查找(HDFS只能顺序访问)
  • Zookeeper实现HA

安装

  • 本地:单机,不需要HDFS,数据直接保存在操作系统,只启动HMaster

    • 解压->设置环境变量->改配置文件(hbase-env.sh,hbase-site.xml)
  • 伪分布:单机模拟分布式,ZK+HMaster+RegionServer
    • 改配置文件(hbase-env.sh,hbase-site.xml)
    • 依赖HDFS和ZK,必须先启动
  • 全分布
  • HA

过程

  • 在HBase中创建表,参数--表名、列族
  • 增加列,参数--列名
  • 插入数据,参数--表名,行名,列名,值

命令

  • 启动:start-hbase.sh
  • 命令行工具:hbase shell
  • 查看所有表:list
  • 创建表:create 'student','info','grade'
  • 插入数据:put 'student','stu001','info:name','Tom'
  • 查看表:scan 'student'
  • 停用表:disable 'student'
  • 删除表:drop 'student'
  • 删除命名空间:drop_namespace 'school'

Java API

  • 启动hdfs
  • 运行Java API
  • 在hbase shell中查看

 1 package Demo.base;
2
3 import org.apache.hadoop.conf.Configuration;
4 import org.apache.hadoop.hbase.HColumnDescriptor;
5 import org.apache.hadoop.hbase.HTableDescriptor;
6 import org.apache.hadoop.hbase.TableName;
7 import org.apache.hadoop.hbase.client.Get;
8 import org.apache.hadoop.hbase.client.HBaseAdmin;
9 import org.apache.hadoop.hbase.client.HTable;
10 import org.apache.hadoop.hbase.client.Put;
11 import org.apache.hadoop.hbase.client.Result;
12 import org.apache.hadoop.hbase.client.ResultScanner;
13 import org.apache.hadoop.hbase.client.Scan;
14 import org.apache.hadoop.hbase.util.Bytes;
15 import org.junit.Test;
16
17 /*
18 * 注意:需要:hamcrest-core-1.3.jar包
19 */
20 public class TestHbase {
21
22 @Test
23 public void testCreateTable() throws Exception{
24 //创建表
25 //配置ZooKeeper地址
26 Configuration conf = new Configuration();
27 conf.set("hbase.zookeeper.quorum", "192.168.174.111");
28
29 //得到一个HBase的客户端
30 HBaseAdmin client = new HBaseAdmin(conf);
31
32 //采用:面向对象的思想来建表
33 //1、指定表的描述符
34 HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("mytable"));
35
36 //2、指定列族
37 htd.addFamily(new HColumnDescriptor("info"));
38 htd.addFamily(new HColumnDescriptor("grade"));
39
40 //创建表
41 client.createTable(htd);
42
43 //关闭客户端
44 client.close();
45 }
46 @Test
47 public void testPutData() throws Exception{
48 //插入数据
49 //配置ZooKeeper地址
50 Configuration conf = new Configuration();
51 conf.set("hbase.zookeeper.quorum", "192.168.174.111");
52
53 //得到一个客户端
54 HTable client = new HTable(conf, "mytable1");
55
56 //构造一个Put对象:一条数据
57 Put put = new Put(Bytes.toBytes("id001"));
58
59 //指定列的值
60 /*
61 put.addColumn(family, 列族的名字
62 qualifier, 列的名字
63 value) 值
64 */
65 put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("Tom"));
66
67 // 一次插入多条记录client.put(List);
68
69 client.put(put);
70
71 client.close();
72 }
73 }

参考

/etc/profile 和 ~/.bash_profile 的区别

http://blog.chinaunix.net/uid-14735472-id-3190130.html

hbase shell 中退格无法使用的解决方法

https://blog.csdn.net/zhangchen124/article/details/92801219

hbase shell 常用命令

https://blog.csdn.net/vbirdbest/article/details/88236575

put流程

https://blog.csdn.net/yangzishiw/article/details/53910775

region机制

https://blog.csdn.net/DianaCody/article/details/39530165

深入理解hbase

https://segmentfault.com/a/1190000019959411

HBase创建命名空间的API操作,抛异常的坑

https://blog.csdn.net/wx1528159409/article/details/85266856

HDFS数据写入HBase

https://blog.csdn.net/lianghecai52171314/article/details/104801847/

列式存储

https://blog.csdn.net/zl1zl2zl3/article/details/86632044

https://blog.csdn.net/dc_726/article/details/41143175

https://zhuanlan.zhihu.com/p/129342230

[BD] HBase的更多相关文章

  1. 读取hive文件并将数据导入hbase

    package cn.tansun.bd.hbase; import java.io.IOException; import java.net.URI; import java.util.List; ...

  2. client 如何找到正确的RegionServer(HBase -ROOT-和.META.表)

    在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...

  3. Hbase案例分析(一)

    Hbase应用场景: 1 随机读或者写 2 大数据上的高并发操作,比如每秒对PB级数据进行上千次操作.(查询,删除等操作) 3 读写均是非常简单的操作,比如没有join操作 Hbase Schema设 ...

  4. hbase 性能优化 (转载)

    一.服务端调优 1.参数配置 1).hbase.regionserver.handler.count:该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB ...

  5. 【转载】Hadoop 2.7.3 和Hbase 1.2.4安装教程

    转载地址:http://blog.csdn.net/napoay/article/details/54136398 目录(?)[+]   一.机器环境 系统:MAC OS Hadoop:2.7.3 H ...

  6. Ubuntu16.04下HBase的安装与配置

    一.环境 os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_161 hadoop : mysql : hive : hbase: -hadoop2 安装HBase前,系统 ...

  7. Lily hbase indexer搭建配置概要文档

    1.solrcloud搭建好2.hbase-solr-indexer服务开启3.确定hbase中的对应的表开启replication功能 create '} // 1表示开启replication 已 ...

  8. HBase 协处理器统计行数

    环境:cdh5.1.0 启用协处理器方法1. 启用协处理器 Aggregation(Enable Coprocessor Aggregation) 我们有两个方法:1.启动全局aggregation, ...

  9. hive与hbase数据类型对应关系

    hive与hbase数据类型对应关系 当hbase中double,int 类型以byte方式存储时,用字符串取出来必然是乱码. 在hivd与hbase整合时也遇到这个问题:做法是:#b 1.加#b C ...

随机推荐

  1. Android Studio 之 RadioButton

    •任务 如何通过 RadioButton 实现如图所示的界面? •基本用法 RadioButton 单选按钮,就是只能够选中一个,所以我们需要把 RadioButton 放到 RadioGroup 按 ...

  2. java面试一日一题:如何优化sql

    问题:请讲下在mysql下如何优化sql 分析:该问题主要考察对mysql的优化,重点考虑对索引优化的掌握. 回答要点: 主要从以下几点去考虑, 1.什么样的sql需要优化? 2.怎么对sql进行优化 ...

  3. OO第三单元小结

    目录 JML理论基础 JML工具链 openjml使用 openjml总结 jmlunitng使用 代码分析 第一次作业 第二次作业 第三次作业 测试&bug分析 黑盒测试 白盒测试(Juni ...

  4. 了解什么是redis的雪崩和穿透?redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理redis的穿透?

    缓存雪崩发生的现象 缓存雪崩的事前事中事后的解决方案 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级, ...

  5. [高清文字版]R语言实战(可复制文字PDF)

    电子书资源:R语言实战 书籍简介   <R语言实战>从解决实际问题入手,尽量跳脱统计学的理论阐述来讨论R语言及其应用,讲解清晰透澈,极具实用性.作者不仅高度概括了R语言的强大功能.展示了各 ...

  6. M1 和 Docker 谈了个恋爱

    出于开源项目的需要,我准备把之前在 windows 下运行的开源项目移植到 Mac 上跑得试下,但是 Mac M1 芯片并不能很好地支持 Docker,这不,发现 Docker 也正式支持 Mac 了 ...

  7. H5 hybrid开发-前端资源本地化方案纪要

    H5 hybrid-前端资源本地化方案纪要 就整个行业来说,大前端是趋势,现阶段,native方面除了一些偏CPU密集型工作与操作系统底层API方面的工作外,H5基本都可以满足需要. 目前的工作更偏向 ...

  8. 面试有关TCP常问的几个问题

    在面试中网络问题是一定会考察的,而TCP协议则是考察网络知识的重点.经常会被问道的问题如下: 请讲一下TCP协议建立连接的过程 请介绍TCP协议中的三次握手和四次挥手是怎么样的 为什么TCP协议要三次 ...

  9. Java多线程详解——一篇文章搞懂Java多线程

    目录 1. 基本概念 2. 线程的创建和启动 2.1. 多线程实现的原理 2.2.多线程的创建,方式一:继承于Thread类 2.3.多线程的创建,方式一:创建Thread匿名子类(也属于方法一) 2 ...

  10. .Net Core 集成 Kafka

    最近维护的一个系统并发有点高,所以想引入一个消息队列来进行削峰.考察了一些产品,最终决定使用kafka来当做消息队列.以下是关于kafka的一些知识的整理笔记. kafka kafka 是分布式流式平 ...