Hadoop HBase入门

2019-03-28 14:05|来源: 网络

HBase 是Hadoop的一个子项目,HBase采用了Google BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行,另外一方面里用了BigTable的高效数据组织形式.可以说HBase为海量数据的real-time相应提供了很好的一个开源解决方案.据说在某运营商中使用类似于 BigTable(个人猜测应该就是HBase)的技术可以在两秒时间内从2TB数据中查找到某条话费记录.而这是原来该运营商使用Oracle数据库所无法解决的问题.

对于HBase使用的类似与BigTable的技术我们这里就不仔细描述,可以参考google的论文以及网上的一些相关资料.另外,HBase的配置在HBase的官方文档中有很详细的描述.可以参见相关文档.

HBase提供了一个类似于mysql等关系型数据库的shell.通过该shell我们可以对HBase的内的相关表以及列族进行控制和处理.HBase shell的help命令比较详细的列出了HBase所支持的命令.具体使用方法可以参见其文档.

这里我们用一个学生成绩表作为例子,对HBase的基本操作和基本概念进行讲解:

下面是学生的成绩表:

name grad course:math course:art

Tom 1 87 97

Jerry 2 100 80

这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成:math和art,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics等相应的列添加入course列族.

有了上面的想法和需求,我们就可以在HBase中建立相应的数据表啦!

1, 建立一个表格 scores 具有两个列族grad 和courese

hbase(main):002:0> create \'scores\', \'grade\', \'course\'

0 row(s) in 4.1610 seconds

2,查看当先HBase中具有哪些表

hbase(main):003:0> list

scores

1 row(s) in 0.0210 seconds

3,查看表的构造

hbase(main):004:0> describe \'scores\'

{NAME => \'scores\', IS_ROOT => \'false\', IS_META => \'false\', FAMILIES => }

1 row(s) in 0.0130 seconds

4, 加入一行数据,行名称为 Tom 列族grad的列名为”” 值位1

hbase(main):005:0> put \'scores\', \'Tom\', \'grade:\', \'1\'

0 row(s) in 0.0070 seconds

5,给Tom这一行的数据的列族添加一列

hbase(main):006:0> put \'scores\', \'Tom\', \'course:math\', \'87\'

0 row(s) in 0.0040 seconds

6,给Tom这一行的数据的列族添加一列

hbase(main):007:0> put \'scores\', \'Tom\', \'course:art\', \'97\'

0 row(s) in 0.0030 seconds

7, 加入一行数据,行名称为 Jerry 列族grad的列名为”” 值位2

hbase(main):008:0> put \'scores\', \'Jerry\', \'grade:\', \'2\'

0 row(s) in 0.0040 seconds

8,给Jerry这一行的数据的列族添加一列

hbase(main):009:0> put \'scores\', \'Jerry\', \'course:math\', \'100\'

0 row(s) in 0.0030 seconds

9,给Jerry这一行的数据的列族添加一列

hbase(main):010:0> put \'scores\', \'Jerry\', \'course:art\', \'80\'

0 row(s) in 0.0050 seconds

10,查看scores表中Tom的相关数据

hbase(main):011:0> get \'scores\', \'Tom\'

COLUMN CELL

course:art timestamp=1224726394286, value=97

course:math timestamp=1224726377027, value=87

grade: timestamp=1224726360727, value=1

3 row(s) in 0.0070 seconds

11,查看scores表中所有数据

hbase(main):012:0> scan \'scores\'

ROW COLUMN+CELL

Tom column=course:art, timestamp=1224726394286, value=97

Tom column=course:math, timestamp=1224726377027, value=87

Tom column=grade:, timestamp=1224726360727, value=1

Jerry column=course:art, timestamp=1224726424967, value=80

Jerry column=course:math, timestamp=1224726416145, value=100

Jerry column=grade:, timestamp=1224726404965, value=2

6 row(s) in 0.0410 seconds

相关问答

更多
  • riak 华师大的吧- - 下面来简单介绍各个组件的作用: HDFS(Hadoop distribute file system)——Hadoop生态系统的基础组件Hadoop分布式文件系统。它是其他一些工具的基础HDFS的机制是将大量数据分布到计算机集群上,数据一次写入,但可以多次读取用于分析。HDFS让Hadoop可以最大化利用磁盘。 HBase—— 一个构建在HDFS之上的面向列的NoSql数据库,HBase用于对打量数据进行快速读取/写入。HBase将Zookeeper用于自身的管理,以保证其所有组 ...
  • hadoop和hbase问题[2022-03-08]

    Hadoop 是一个能够对大量数据进行分布式处理的软件框架。 HBase是一个分布式的、面向列的开源数据库。 HBase在Hadoop之上提供了类似于Bigtable的能力。 HBase是Apache的Hadoop项目的子项目。 HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。 另一个不同的是HBase基于列的而不是基于行的模式。
  • 两个不同层面的问题,没有什么不可以的。主要是要做好资源竞争方面的管理。一般Hbase都是实时查询多一点,所以应该设以更大的优先级。
  • Clent.HConnectionManager$HConnectionImplementation:Check the value with configured in 'zookeeper.znode.parent'. There could be a mismatch with the one configured in the master. 直观来看,自己去查看zookeeper.znode.parent的配置是否正确。在Hbase/conf/core-site.xml中自己配置的zookeepe ...
  • 1.hadoop是分布式平台,就把计算和存储都由hadoop自动调节分布到接入的计算机单元中 2.hbase是hadoop上实现的kv数据库 3.hbase+hadoop无需再与mysql搭配了, 而且kv数据库与传统关系数据库区别很大 4.hadoop+hbase是分布式计算与分布式数据库存储的组合 5.增删查改都是真的hbase的,
  • 首先想问下,为什么要直接学习Hbase而不接触Hadoop呢? 我的建议是至少把Hadoop环境搭建起来,理解hadoop的HDFS和Mapreduce。 再装Hbase
  • echo“scan'Employee',{COLUMNS =>'EmployeeInfo:Name'}”| hbase shell | grep“^”> EmplyeeExport.txt 这个命令可能对你有帮助....上面的Employee是一个表,EmployeeInfo是列族。 echo "scan 'Employee',{COLUMNS=>'EmployeeInfo:Name'}" | hbase shell | grep "^ " > EmplyeeExport.txt This command ...
  • 回答你的问题: 查看Hbase-Hadoop兼容性链接 。 hbase-0.98.9应该支持hadoop-2.6.0。 你有两个选择 1个主节点和3个从节点。 (既然你只有4个节点,这个配置就足够了) 如果你想启用HA,你可以选择2个主节点和2个从节点。 Answering your questions : See the Hbase-Hadoop compatibility link . hbase-0.98.9 should support hadoop-2.6.0. You have two opti ...
  • 以下是Hadoop和HBase版本之间的兼容性矩阵列表: 上图:S - 支持,X - 不支持,NT - 未测试 更多信息请访问: http : //hadoop.apache.org/releases.html Here is the list of compatibility matrix between Hadoop and HBase versions: Above: S - Supported, X - Not Supported, NT - Not Tested More Info availab ...
  • HDFS是一个分布式文件系统 ; 可以在其上执行大多数常规FS操作,例如列出目录中的文件,编写常规文件,读取文件的一部分等。它不仅仅是“结构化或非结构化数据的集合”,而不是EXT4或NTFS文件系统是。 HBase是一个内存中的键值存储,它可以持久存储到HDFS (这不是一个硬盘要求,你可以在任何分布式文件系统上运行HBase)。 对于要求HBase的任何读取密钥请求,它将首先检查其运行时内存缓存,以查看它是否具有缓存的值,否则访问其在HDFS上存储的文件以查找和读出特定值。 HBase中提供了各种配置来控 ...