Hadoop-No.7之行键】的更多相关文章

我们通过行键访问HBase.尽管使用扫描过滤器可以一次性指明大量的键,但是HBase仅仅能够根据行键识别出一行. 优秀的行键设计可以保证良好的HBase性能. 1.行键存在于HBase中的每一个单元格中.如果行键越长,用于存储单元格的I/O开销就会越大.通常我们采用MD5加密的定长键来代替行键. 2.对于组合式行键,每个组件的排序顺序取决于访问模式 如果是一个以主机名和事件类型存储的日志数据库,可能的键值选取方法有以下几种: [主机名][事件类型][时间戳] :适用于访问模式使用主机名和事件类型…
行是由列簇中的列组成.行根据行键依照字典顺序排序. HBase的行使用行键标识,可以使用行键查询整行的数据. 对同一个行键的访问都会落在同样的物理节点上.如果表包含2个列簇,属于两个列簇的文件还是保存在相同的节点上.因此,行键和节点存在一一对应的关系.…
  所谓RowKey行键生成器,是指通过软件工具制定行键生成策略,并可将策略信息保存成本地策略文件,待需要时再将本地策略文件序列化成行键生成策略对象,传入数据行信息后可自动生成RowKey行键. 那么,为什么要设计这个行键生成器呢?最初的时候,我们有一个需求,要把Oracle中的若干大表数据导入到HBase中,那么这里就出现了一个问题:那么多表,每个表的RowKey生成规则都是不一样的,难道我们要为每个表都设计一个行键生成方法吗?! 当然不可能,我们必须做一些事半功倍或者一劳永逸的事情来解决这个…
2. RowKey行键设计规范 2.1. RowKey四大特性 2.1.1 字符串类型 虽然行键在HBase中是以byte[]字节数组的形式存储的,但是建议在系统开发过程中将其数据类型设置为String类型,保证通用性:如果在开发过程中将RowKey规定为其他类型,譬如Long型,那么数据的长度将可能受限于编译环境等所规定的数据长度. 常用的行键字符串有以下几种: 纯数字字符串,譬如9559820140512: 数字+特殊分隔符,譬如95598-20140512; 数字+英文字母,譬如city2…
​在一个集群中,一个导入数据的进程锁住不动,所有的client都在等待一个region (因而也就是一个单个节点),过了一会后,变成了下一个region…​如果使用了单调递增 或者时序的key便会造成这样的问题. 数据存储提示:rowkey采用单调增加的值真的很糟糕. 使用了顺序的key会将本没有顺序的数据变得有顺序,把负载压在一台机器上.所以要尽量避免时间戳或者序列(e.g. 1, 2, 3)这样的行键. monotonically increasing values are bad When…
数据总数:746条数据 因为后面需要进行算法合成,而且spark目前对这种算法支持并不好,因此采用代码编写,所以在查询hbase的过程中采用的是java直接查询, 但是为了加快查询速度,我尽可能的使用了过滤器 1:初期Hbase的rowkey组合:时间+"_"+订单id 查询思路: 1:能快速检索,减少GC,采用过滤器 2:支持时间段查询 根据上面两点,我采用时间过滤,比如:startTime=201904010000  endTime=201904180000|:[注意这个符号:“|…
rowkey是行的主键,而且hbase只能用rowkey范围即scan来查找数据.rowkey是以字典排序的.可以巧妙设计行键,比如想通过电影的评价进行排序,可以把评分rate和电影id组合起来,rate_id这样的形式来实现排序. 做个小推广:程序员经常久坐,颈椎毛病比较多,特别推荐ventry颈椎保健枕…
和哈希表类比,HBase中的行键类似于哈希表中的键.要构造一个良好的HBase模式,关键之一就是选择一个合适的行键. 1 记录检索 行键是HBase中检索记录所使用的键.HBase记录含有的列在数量上没有限制,但是只能有一个行键.这一点同关系型数据库有所不同,后者的主键可以有多个列组合.既然要为一个记录创建唯一的行键,那么单一的行键就需要包含多种信息.例如,如果一行标识一个订单,那么customer_id,order_id,timestamp可以作为该行的行键.在关系型数据库中,customer…
#!/bin/bash #TOOL_PATH=$(cd "$(dirname "$0")"; pwd) #TOOL_PATH_TMP=$(cd "$(dirname "$0")"; pwd) if [ $# != 3 ];then echo 'usage:sh byRowKeyRange.sh table startrowkey endrowkey' exit fi table=$1 srowkey=$2 erowkey=$3…
首先要回答一个问题,为何要使用HBase? 随着业务不断发展.数据量不断增大,MySQL数据库存在这些问题: MySQL支持的数据量为TB级,不能一直保留历史数据.而HBase支持的数据量为PB级,适合存储久远的历史冷数据 新增列的代价较高,数据量越大耗费时间越长.而HBase可以随意增加列,空列不占据空间,业务模型可以灵活变化 要使用HBase,最重要的一点是rowkey行键设计,如果设计不妥,后续要改的代价非常大. HBase行键设计原则 下面列几个HBase rowkey设计的原则: 组合…
一.代码编写 1.1 单词统计 回顾我们以前单词统计的例子,如代码1.1所示. package counter; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.…
关于Hadoop [root@master ~]# hadoop --help Usage: hadoop [--config confdir] COMMANDwhere COMMAND is one of: fs run a generic filesystem user client version print the version jar <jar> run a jar file checknative [-a|-h] check native hadoop and compressi…
  HDFS命令操作 首先需要在xshell启动hadoop start-all.sh  or start-hdfs.sh hadoop fs -ls /        (显示当前目录下所有文件) hadoop fs -du /sevenclass     (显示目录中所有文件的大小) hadoop fs -cat /a.txt     (查看当前文本信息) hadoop fs -text /a.txt     (查看当前文本信息) hadoop fs -count /test        …
使用HABSE之前,要先安装一个zookeeper 我以前写的有https://www.cnblogs.com/wpbing/p/11309761.html 先简单介绍一下HBASE HBASE是一个数据库----可以提供数据的实时随机读写 他是一个nosql数据库,并不是结构化的,他只能粗略的进行一些查询,像多表之间的连接查询他是很难做到的(至少我这辣鸡不会). 我也是第一次接触这种nosql,人家的表结构不太一样,就是啥吧, 他有一个行健(类似于主键的东西) 然后剩下的就是你可以定义有几个列…
很少有人会这样来自问自己?只知道,以键值对的形式处理数据并输出结果,而没有解释为什么要以键值对的形式进行. 包括hadoop的mapreduce里的键值对,spark里的rdd里的map等. 这是为什么呢? 1.键值对的具体含义 首先,我们会通过强调Java标准库中的类似概念,来阐明我们所说的键值对的含义. java.util.Map接口是常用类,如HashMap,甚至原始Hashtable的父类(通过向后重构代码库). 对于任何Java Map对象,其内容是从指定类型的给定键到相关值的一组映射…
HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) 实际上,HBase的存储值,即一个键值对,是   { row key,column family,column name,timestamp }   ->  value   行键,相当于第一步级索…
HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳)   行键,相当于第一步级索引. 列簇,相当于第二步级索引. 列修饰符,相当于第三步级索引. 时间戳,相当于第四步级索引.…
管理HDFS中的文件 分析MapReduce框架中的组件 读写输入输出数据   1.HDFS文件操作   [命令行方式]   Hadoop的文件命令采取的形式为: hadoop fs -cmd <args> 其中,cmd是具体的文件命令,而<args>是一组数目可变的参数.   (1)添加文件和目录      HDFS有一个默认的工作目录/user/$USER,其中$USER是你的登录用户名.不过这个目录不会自动建立,让我们用mkdir命令创建它.Hadoop的mkdir命令会自动…
HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型,它存储的是松散型数据. 一.HBase:BigTable的开源实现 1.1 HBase出现的背景 (1)随着数据规模越来越大,大量业务场景开始考虑数据存储水平扩展,使得存储服务可以增加/删除,而目前的关系型数据库更专注于一台机器. (2)海量数据量存储成为瓶颈,单台机器无法负载大量数据. (3)单台机器IO读…
大数据第一天 1.Hadoop生态系统 1.1 Hadoop v1.0 架构 MapReduce(用于数据计算) HDFS(用于存储数据) 1.2 Hadoop v2.0 架构 MapReduce(用于数据计算,Hadoop提供计算框架) 其他非Hadoop计算框架 YARN(用户管理和分配集群资源,包括软硬件资源) HDFS(用于存储数据) 1.3 Hive(基于MR的数据仓库) 类似SQL,通常用于离线数据处理(采用MapReduce) 可以理解为HQL->MR的语言翻译器 用途:用于日志.…
1.注意问题: 1.在开发过程中一定要导入hbase源码中的lib库否则出现如下错误 TableMapReducUtil 找不到什么-- 2.编码: import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import java.util.StringToke…
一.常用命令:(hbase shell 进入终端) 1.创建表: create 'users','user_id','address','info' 表users,有三个列族user_id,address,info 2.列出全部表 list 3.得到标的信息 describe'users' 4.删除表 disable 'users' drop 'users' 5.清空表 truncate 'users' 6.添加记录 put 'users','xiaoming','info:age','24'…
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  .该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237 [注]该系列所使用到安装包.测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.c…
转自:http://blog.csdn.net/iAm333 1 什么是HBase? HBase,是Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.使用HBase技术可以在廉价的PC服务器上搭建起大规模结构化的存储集群.它底层的文件系统使用HDFS,使用Zookeeper来管理集群的HMaster和各Region server之间的通信,监控各Region server的状态,存储各Region的入口地址等. 2. 何时用HBase? 首先想想传统的关系型…
1.列出安装Hadoop流程步骤 a) 创建hadoop账号 b) 更改ip c) 安装Java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登录 f) 解压hadoop g) 配置hadoop  conf下面的配置文件 h) Hadoop namenode -format  格式化 i) Start 启动 2.列出hadoop集群启动中的所有进程和进程的作用 a) Namenode 管理集群  记录namenode文件信息 b) Seco…
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CellScanner; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hb…
导读 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. 一.Hbase简介 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统:Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce…
视频地址:http://pan.baidu.com/s/1dDEgKwD 第六课统讲了hadoop几个子项目和HBase,第七课还是讲的HBase 第八课讲了PIG 第九课讲了Hive和Zookeeper 第十课讲了sqoop 这一课还是比较受用,之前就一直疑问HDFS怎么和关系型数据库联系起来 原来有这样的组件 这几节讲的很笼统,也不实践,都是快进看的. Linux whereis命令 http://www.jb51.net/os/RedHat/1103.html MR的输出目录必须是不存在的…
这一次开始学习HBase数据库. 我用的是VMWare + ubuntu16.04 +Hbase1.1.5 +hadoop2.6.0的组合. 经过亲自安装验证,版本间没有发生冲突,可以进行学习和开发. 具体的安装过程参照了厦门大学数据实验室的安装教程,个人感觉这里面的安装步骤非常详细,非常少适合新人上手,只要懂得基本的java和linux基础即可. 下面是厦大数据实验室的链接:http://dblab.xmu.edu.cn/blog/588-2/#more-588 Hbase即hadoop da…
本例中需要将hdfs上的文本文件,解析后插入到hbase的表中. 本例用到的hadoop版本2.7.2 hbase版本1.2.2 hbase的表如下: create 'ns2:user', 'info' hdfs上的文本文件如下[data/hbase_input/hbase.txt] 1,xiejl,20 2,haha,30 3,liudehua,40 4,daoming,41 可以通过命令查看hadoop的classpath现在包含哪些jar包: [hadoop@master ~]$ hdfs…