HBase
黑猴子的家
拥有技术,便拥有自由
B站 Up主专注于技术 https://space.bilibili.com/398602910
展开
-
黑猴子的家:HBase 分部式部署
1、部署Hadoophttps://www.jianshu.com/p/2d8518b19ee52、部署Zookeeperhttps://www.jianshu.com/p/e04167aef33a3、HBase解压到指定目录[victor@node1 software]$ tar -xzvf hbase-1.2.5-bin.tar.gz -C /opt/modu...原创 2018-09-05 16:50:00 · 346 阅读 · 0 评论 -
黑猴子的家:HBase 的角色
1、HMaster 功能1)监控RegionServer2)处理RegionServer故障转移3)处理元数据的变更4)处理region的分配或移除5)在空闲时间进行数据的负载均衡6)通过Zookeeper发布自己的位置给客户端2、RegionServer 功能1)负责存储HBase的实际数据2)处理分配给它的Region3)刷新缓存到HDFS 4)维护HLog...原创 2018-09-30 15:45:00 · 376 阅读 · 0 评论 -
黑猴子的家:HBase 的起源
HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储。官方网站:http://hbase.apache.org-- 2006年Google发表BigTable白皮书-- 2006年开始开发HBase-- 2008年北京成功开奥运会,程序员默默地将HBase弄成了Hadoop的子项目-- 2010年H...原创 2018-09-30 15:41:00 · 375 阅读 · 0 评论 -
黑猴子的家:Hue 与 HBase 集成
1、修改hue.ini配置文件位置:/opt/module/cdh/hue-3.7.0-cdh5.3.6/desktop/conf/hue.ini找到[hbase]标签,涉及修改内容如下[root@node1 conf]$ vim hue.ini[hbase]hbase_clusters=(Cluster|hadoop102:9090)hbase_conf_dir=/opt/mo...原创 2018-09-14 14:46:00 · 202 阅读 · 0 评论 -
黑猴子的家:HBase 与 Sqoop 集成
Sqoop supports additional import targets beyond HDFS and Hive. Sqoop can also import records into a table in HBase.之前我们已经学习过如何使用Sqoop在Hadoop集群和关系型数据库中进行数据的导入导出工作,接下来我们学习一下利用Sqoop在HBase和RDBMS中进行数据的转储。...原创 2018-10-05 09:24:00 · 144 阅读 · 0 评论 -
黑猴子的家:HBase 历史命令查看
1、首先进入home目录[victor@hadoop102 opt]$ cd ~[victor@hadoop102 ~]$ cd[victor@hadoop102 ~]$ pwd/home/victor2、在用户home目录下创建.irbrc 文件[victor@hadoop102 ~]$ touch .irbrc3、编辑 .irbrc 文件[victor@ha...原创 2018-10-25 14:16:00 · 1838 阅读 · 0 评论 -
黑猴子的家:HBase 存储剖析 与 数据迁移
1、概述HBase的存储结构和关系型数据库不一样,HBase面向半结构化数据进行存储。所以,对于结构化的SQL语言查询,HBase自身并没有接口支持。在大数据应用中,虽然也有SQL查询引擎可以查询HBase,比如Phoenix、Drill这类。但是阅读这类SQL查询引擎的底层实现,依然是调用了HBase的Java API来实现查询,写入等操作。这类查询引擎在业务层创建Schema来映射HBas...原创 2018-10-22 10:25:00 · 221 阅读 · 0 评论 -
黑猴子的家:HBase 之 java.lang.RuntimeException: HRegionServer Aborted
1、思想(1)先查看hbase.log 日志,找出问题,不知道什么问题,又如何解决呢??(2)这里 以 java.lang.RuntimeException: HRegionServer Aborted 问题 是由 服务器时间不同步引起的2、查看hbase log 日志[victor@hadoop102 hbase]# tail -F log/hbase-regionserver....原创 2018-10-22 10:08:00 · 958 阅读 · 0 评论 -
黑猴子的家:HBase 之HRegionserver挂死,日志出现Session Expired异常排查
1、编辑hbase-site.xml配置文件加大zookeeper会话超时时间,编辑hbase-site.xml文件,添加下面的属性[victor@hadoop102 hbase]# vim conf/hbase-site.xml<property> <name>zookeeper.session.timeout</name> &l...原创 2018-10-22 10:01:00 · 1490 阅读 · 0 评论 -
黑猴子的家:HBase 的架构
HBase一种是作为存储的分布式文件系统,另一种是作为数据处理模型的MR框架。因为日常开发人员比较熟练的是结构化的数据进行处理,但是在HDFS直接存储的文件往往不具有结构化,所以催生出了HBase在HDFS上的操作。如果需要查询数据,只需要通过键值便可以成功访问。架构图如下图所示HBase内置有Zookeeper,但一般我们会有其他的Zookeeper集群来监管master和region...原创 2018-09-30 15:51:00 · 158 阅读 · 0 评论 -
黑猴子的家:HBase Shell 命令
1、基本操作1)进入HBase客户端命令行[victor@hadoop102 hbase]$ bin/hbase shell2)查看帮助命令hbase(main)> help3)查看当前数据库中有哪些表hbase(main)> list2、表的操作1)创建表hbase(main)> create 'student','info'...原创 2018-09-30 16:03:00 · 152 阅读 · 0 评论 -
黑猴子的家:HBase 读数据流程
1、HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里面获取meta表所在的位置信息,即找到这个meta表在哪个HRegionServer上保存着。2、接着Client通过刚才获取到的HRegionServer的IP来访问Meta表所在的HRegionServer,从而读取到Meta,进而获取到Meta表中存放...原创 2018-09-30 16:14:00 · 150 阅读 · 0 评论 -
黑猴子的家:Sqoop HBase 到 RDBMS
mysql导入hbase可以直接通过sqoop进行,但是hbase导出到mysql无法直接进行,需要经过hive的中间作用来完成,思路是这样的hbase→hive外部表→hive内部表→sqoop导出→mysql,这就需要hive和hbase 的整合集成1、Hive和HBase整合集成https://www.jianshu.com/p/e9d1ccfc6ff12、Hive与HBase集...原创 2018-09-09 07:33:00 · 295 阅读 · 0 评论 -
黑猴子的家:Sqoop RDBMS 到 HBase
1、相关参数参数 描述 --column-family <family> Sets the target column family for the import 设置导入的目标列族。 --hbase-create-table If specified, create missing HBase tables是否自动创建不存在的HBase表(这就意味着,不...原创 2018-09-09 07:22:00 · 153 阅读 · 0 评论 -
黑猴子的家:HBase 自定义HBase-MapReduce案列二
实现将HDFS中的数据写入到HBase表中1、Code -> GitHubhttps://github.com/liufengji/hbase_mapreduce_two.git2、构建ReadFruitFromHDFSMapper类用于读取HDFS中的文件数据import java.io.IOException;import org.apache.hadoop.hba...原创 2018-10-05 08:11:00 · 162 阅读 · 0 评论 -
黑猴子的家:HBase 自定义HBase-MapReduce案列一
将fruit表中的一部分数据,通过MR迁入到fruit_mr表中1、Code -> GitHubhttps://github.com/liufengji/hbase_mapredece_one.git2、构建ReadFruitMapper类,用于读取fruit表中的数据import java.io.IOException;import org.apache.hadoop....原创 2018-10-05 08:03:00 · 147 阅读 · 0 评论 -
黑猴子的家:HBase 官方HBase-MapReduce案列二
1、查看HBase的MapReduce任务的执行[victor@node1 hbase]$ bin/hbase mapredcp2、执行环境变量的导入[victor@node1 ~]$ export HBASE_HOME=/opt/module/hbase-1.3.1[victor@node1 ~]$ export HADOOP_HOME=/opt/module/hadoop-...原创 2018-10-02 09:34:00 · 161 阅读 · 1 评论 -
黑猴子的家:HBase 官方HBase-MapReduce案列一
1、查看HBase的MapReduce任务的执行[victor@node1 hbase]$ bin/hbase mapredcp2、执行环境变量的导入[victor@node1 ~]$ export HBASE_HOME=/opt/module/hbase-1.3.1[victor@node1 ~]$ export HADOOP_HOME=/opt/module/hadoop-...原创 2018-10-02 09:29:00 · 711 阅读 · 0 评论 -
黑猴子的家:HBase Java API 基本操作
注意,这部分的学习内容,我们先学习使用老版本的API,接着再写出新版本的API调用方式。因为在企业中,有些时候我们需要一些过时的API来提供更好的兼容性。1、HBase API Code -> GitHubhttps://github.com/liufengji/HBase_API_Demo.git2、安装Maven并配置环境变量https://www.jianshu.com...原创 2018-09-30 17:00:00 · 193 阅读 · 0 评论 -
黑猴子的家:HBase 写数据流程
1、Client也是先访问zookeeper,找到Meta表,并获取Meta表信息。2、确定当前将要写入的数据所对应的RegionServer服务器和Region。3、Client向该RegionServer服务器发起写入数据请求,然后RegionServer收到请求并响应。4、Client先把数据写入到HLog,以防止数据丢失。5、然后将数据写入到Memstore。6、如果H...原创 2018-09-30 16:16:00 · 112 阅读 · 0 评论 -
黑猴子的家:HBase 微博小项目
Code -> GitHubhttps://github.com/liufengji/hbase_weibo.git1、需求分析1) 微博内容的浏览,数据库表设计2) 用户社交体现:关注用户,取关用户3) 拉取关注的人的微博内容2、代码设计总览1) 创建命名空间以及表名的定义2) 创建微博内容表3) 创建用户关系表4) 创建用户微博内容接收邮件表5) 发...原创 2018-10-08 11:47:00 · 870 阅读 · 1 评论 -
黑猴子的家:HBase 2.0 新特性
2017年8月22日凌晨2点左右,HBase发布了2.0.0 alpha-2,相比于上一个版本,修复了500个补丁,写这篇简书时,我又查了一下,在2018年7月18号发布了2.1.0版本 ,我们来了解一下2.X 版本的HBase新特性。文档http://hbase.apache.org/book.html#ttl官方发布主页http://mail-archives.apache.org...原创 2018-10-08 11:10:00 · 463 阅读 · 0 评论 -
黑猴子的家:HBase 服役节点(commissioning)
当启动regionserver时,regionserver会向HMaster注册并开始接收本地数据,开始的时候,新加入的节点不会有任何数据,平衡器开启的情况下,将会有新的region移动到开启的RegionServer上。如果启动和停止进程是使用ssh和HBase脚本,那么会将新添加的节点的主机名加入到conf/regionservers文件中。1、进入HBase客户端命令行[victo...原创 2018-10-06 08:21:00 · 236 阅读 · 0 评论 -
黑猴子的家:HBase 数据的备份与恢复(里程碑和容灾)
1、备份停止HBase服务后,使用distcp命令运行MapReduce任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群,即,把数据转移到当前集群的其他目录下(也可以不在同一个集群中)[victor@node1 hadoop-2.8.2]$ bin/hadoop distcp \hdfs://node1:9000/hbase \hdfs://node1:...原创 2018-10-05 10:00:00 · 136 阅读 · 0 评论 -
黑猴子的家:HBase Shell 基本命令操作
1、satus例如:显示服务器状态hbase> status 'linux01'2、whoami显示HBase当前用户,例如hbase> whoami3、list显示当前所有的表hbase> list4、count统计指定表的记录数,例如hbase> count 'hbase_book'5、describe...原创 2018-10-05 09:58:00 · 119 阅读 · 0 评论 -
黑猴子的家:Hive与HBase集成测试案例二
在HBase中已经存储了某一张表hbase_emp_table,然后在Hive中创建一个外部表来关联HBase中的hbase_emp_table这张表,使之可以借助Hive来分析HBase这张表中的数据注:该案例2紧跟案例1的脚步,所以完成此案例前,请先完成案例11、HBase已有表,在Hive中创建外部表hive> create external table relevance...原创 2018-09-07 22:01:00 · 124 阅读 · 0 评论 -
黑猴子的家:Hive与HBase集成测试案例一
创建Hive表的同时创建HBase表,插入数据到Hive表的同时能够影响HBase表1、emp.txt数据https://www.jianshu.com/p/1d1ecf881a722、在Hive中创建表同时关联HBasehive> create table hive_hbase_emp_table(empno int,ename string,job string,...原创 2018-09-07 21:55:00 · 186 阅读 · 0 评论 -
黑猴子的家:Hive和HBase整合集成
1、HBase Jar包拷贝到Hive/lib目录下因为在操作Hive的同时对HBase也会产生影响,所以Hive需要持有操作HBase的Jar包,那么接下来拷贝Hive所依赖的Jar包(或者使用软连接的形式)[victor@node1 ~]$ ln -s $HBASE_HOME/lib/hbase-common-1.2.5.jar $HIVE_HOME/lib/hbase-commo...原创 2018-09-07 21:48:00 · 154 阅读 · 0 评论 -
黑猴子的家:HBase 与 Hive 的对比
1、Hive(1) 数据仓库Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。(2) 用于数据分析、清洗Hive适用于离线的数据分析和清洗,延迟较高。(3) 基于HDFS、MapReduceHive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。2、HBase(1) ...原创 2018-10-05 09:06:00 · 177 阅读 · 0 评论 -
黑猴子的家:HBase 与 Hive 集成
1、Hive和HBase整合集成https://www.jianshu.com/p/425df8dbca112、Hive与HBase集成测试案例一https://www.jianshu.com/p/c43b5f5301743、Hive与HBase集成测试案例二https://www.jianshu.com/p/3c0be7c78160...原创 2018-10-05 09:10:00 · 102 阅读 · 0 评论 -
黑猴子的家:HBase 退役节点(decommissioning)
顾名思义,就是从当前HBase集群中删除某个RegionServer1、方式一 (不建议) 0.90.2版本之前,只有这一种方式1)进入HBase客户端命令行[victor@node1 hbase]$ bin/hbase shell2)停止负载平衡器(在HMaster节点上)hbase> balance_switch false3)在退役节点上停止Region...原创 2018-10-06 08:28:00 · 986 阅读 · 1 评论 -
黑猴子的家:HBase 版本的确界
1、版本的下界默认的版本下界是0,即禁用。row版本使用的最小数目是与生存时间(TTL Time To Live)相结合的,并且我们根据实际需求可以有0或更多的版本,使用0,即只有1个版本的值写入cell。2、版本的上界之前默认的版本上界是3,也就是一个row保留3个副本(基于时间戳的插入)。该值不要设计的过大,一般的业务不会超过100。如果cell中存储的数据版本号超过了3个,再次插...原创 2018-10-06 08:59:00 · 304 阅读 · 0 评论 -
黑猴子的家:HBase 高可用 HA
在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。1、关闭HBase集群(如果没有开启则跳过此步)[victor@hadoop102 hbase]$ bin/stop-hbase.s...原创 2018-10-08 08:48:00 · 168 阅读 · 0 评论 -
黑猴子的家:HBase 商业项目中的能力
消息量:发送和接收的消息数超过60亿 将近1000亿条数据的读写 高峰期每秒150万左右操作,500万是300MB大小 整体读取数据占有约55%,写入占有45% 超过2PB的数据,涉及冗余共6PB数据 数据每月大概增长300千兆字节。 ...原创 2018-10-08 11:03:00 · 105 阅读 · 0 评论 -
黑猴子的家:HBase 命名空间
1、命名空间的结构1)Table表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定,则在default默认的命名空间中。2)RegionServer group一个命名空间包含了默认的RegionServer Group。3)Permission权限,命名空间能够让我们来定义访问控制列表ACL(Access Control List)。例如,创建表,读取表,...原创 2018-10-08 10:51:00 · 264 阅读 · 2 评论 -
黑猴子的家:HBase 之 基础优化
1、允许在HDFS的文件中追加内容不是不允许追加内容么?没错,请看背景故事http://blog.cloudera.com/blog/2009/07/file-appends-in-hdfs/hdfs-site.xml、hbase-site.xml属性:dfs.support.append解释:开启HDFS追加同步,可以优秀的配合HBase的数据同步和持久化。默认值为true。2、优...原创 2018-10-08 10:40:00 · 233 阅读 · 0 评论 -
黑猴子的家:HBase 之 内存优化
HBase操作过程中需要大量的内存开销,毕竟Table是可以缓存在内存中的,一般会分配整个可用内存的70%给HBase的Java堆。但是不建议分配非常大的堆内存,因为GC过程持续太久会导致RegionServer处于长期不可用状态,一般16~48G内存就可以了,如果因为框架占用内存过高导致系统内存不足,框架一样会被系统服务拖死。[victor@hadoop102 ~]$ export HBA...原创 2018-10-08 09:55:00 · 116 阅读 · 0 评论 -
黑猴子的家:HBase 之 RowKey设计
一条数据的唯一标识就是rowkey,那么这条数据存储于哪个分区,取决于rowkey处于哪个一个预分区的区间内,设计rowkey的主要目的 ,就是让数据均匀的分布于所有的region中,在一定程度上防止数据倾斜。接下来我们就谈一谈rowkey常用的设计方案。1、生成随机数、hash、散列值比如:原本rowKey为1001的,SHA1后变成dd01903921ea24941c26a48...原创 2018-10-08 09:50:00 · 169 阅读 · 0 评论 -
黑猴子的家:HBase 之 预分区
每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据索要投放的分区提前大致的规划好,以提高HBase性能。1、方法一:手动设定预分区hbase> create 'staff','info','partition1',SPLITS => ['10...原创 2018-10-08 09:15:00 · 298 阅读 · 0 评论 -
黑猴子的家:HBase 之 Zookeeper 优化
优化Zookeeper会话超时时间hbase-site.xml参数:zookeeper.session.timeout解释:In hbase-site.xml, set zookeeper.session.timeout to 30 seconds or less to bound failure detection (20-30 seconds is a good start).该值会直...原创 2018-10-08 09:12:00 · 133 阅读 · 0 评论