logo资料库

10_尚硅谷大数据技术之HBase.doc

第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
资料共41页,剩余部分请下载后查看
第1章 HBase简介
1.1 什么是HBase
1.2 Hbase特点
1.3 HBase架构
1.3 HBase中的角色
1.3.1 HMaster
1.3.2 RegionServer
1.2.3 其他组件
第2章 HBase安装
2.1 Zookeeper正常部署
2.2 Hadoop正常部署
2.3 HBase的解压
2.4 HBase的配置文件
2.5 HBase远程发送到其他集群
2.6 HBase服务的启动
2.7 查看HBase页面
第3章 HBase Shell操作
3.1 基本操作
3.2 表的操作
第4章 HBase数据结构
4.1 RowKey
4.2 Column Family
4.3 Cell
4.4 Time Stamp
4.5 命名空间
第5章 HBase原理
5.1 读流程
5.2 写流程
5.3 数据flush过程
5.4 数据合并过程
第6章 HBase API操作
6.1 环境准备
6.2 HBaseAPI
6.2.1 获取Configuration对象
6.2.2 判断表是否存在
6.2.3 创建表
6.2.4 删除表
6.2.5 向表中插入数据
6.2.6 删除多行数据
6.2.7 获取所有数据
6.2.8 获取某一行数据
6.2.9 获取某一行指定“列族:列”的数据
6.3 MapReduce
6.3.1 官方HBase-MapReduce
6.3.2 自定义HBase-MapReduce1
6.3.3 自定义HBase-MapReduce2
6.4 与Hive的集成
6.4.1 HBase与Hive的对比
6.4.2 HBase与Hive集成使用
第7章 HBase优化
7.1 高可用
7.2 预分区
7.3 RowKey设计
7.4 内存优化
7.5 基础优化
第8章 Hbase实战之谷粒微博
8.1 需求分析
8.2 代码实现
8.2.1 代码设计总览:
8.2.2 创建命名空间以及表名的定义
8.2.3 创建微博内容表
8.2.4 创建用户关系表
8.2.5 创建微博收件箱表
8.2.6 发布微博内容
8.2.7 添加关注用户
8.2.8 移除(取关)用户
8.2.9 获取关注的人的微博内容
8.2.10 测试
第9章 扩展
9.1 HBase在商业项目中的能力
9.2 布隆过滤器
9.2 HBase2.0新特性
尚硅谷大数据技术之 HBase ——————————————————————————— —— 尚硅谷大数据技术之 HBase (作者:尚硅谷大数据研发部) 版本:V1.2 第 1 章 HBase 简介 1.1 什么是 HBase HBase 的原型是 Google 的 BigTable 论文,受到了该论文思想的启发,目前作为 Hadoop 的子项目来开发维护,用于支持结构化的数据存储。 官方网站:http://hbase.apache.org -- 2006 年 Google 发表 BigTable 白皮书 -- 2006 年开始开发 HBase -- 2008 年北京成功开奥运会,程序员默默地将 HBase 弄成了 Hadoop 的子项目 -- 2010 年 HBase 成为 Apache 顶级项目 -- 现在很多公司二次开发出了很多发行版本,你也开始使用了。 HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBASE 技 术可在廉价 PC Server 上搭建起大规模结构化存储集群。 HBase 的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能 够处理由成千上万的行和列所组成的大型数据。 HBase 是 Google Bigtable 的开源实现,但是也有很多不同之处。比如:Google Bigtable 利用 GFS 作为其文件存储系统,HBase 利用 Hadoop HDFS 作为其文件存储系统;Google 运行 MAPREDUCE 来处理 Bigtable 中的海量数据,HBase 同样利用 Hadoop MapReduce 来 处理 HBase 中的海量数据;Google Bigtable 利用 Chubby 作为协同服务,HBase 利用 Zookeeper 作为对应。 1.2 Hbase 特点 1)海量存储 Hbase 适合存储 PB 级别的海量数据,在 PB 级别的数据以及采用廉价 PC 存储的情况下, 能在几十到百毫秒内返回数据。这与 Hbase 的极易扩展性息息相关。正式因为 Hbase 良好的 扩展性,才为海量数据的存储提供了便利。 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 HBase ——————————————————————————— —— 2)列式存储 这里的列式存储其实说的是列族存储,Hbase 是根据列族来存储数据的。列族下面可以 有非常多的列,列族在创建表的时候就必须指定。 3)极易扩展 Hbase 的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩 展,一个是基于存储的扩展(HDFS)。 通过横向添加 RegionSever 的机器,进行水平扩展,提升 Hbase 上层的处理能力,提升 Hbsae 服务更多 Region 的能力。 备注:RegionServer 的作用是管理 region、承接业务的访问,这个后面会详细的介绍通 过横向添加 Datanode 的机器,进行存储层扩容,提升 Hbase 的数据存储能力和提升后端存 储的读写能力。 4)高并发 由于目前大部分使用 Hbase 的架构,都是采用的廉价 PC,因此单个 IO 的延迟其实并不 小,一般在几十到上百 ms 之间。这里说的高并发,主要是在并发的情况下,Hbase 的单个 IO 延迟下降并不多。能获得高并发、低延迟的服务。 5)稀疏 稀疏主要是针对 Hbase 列的灵活性,在列族中,你可以指定任意多的列,在列数据为空 的情况下,是不会占用存储空间的。 1.3 HBase 架构 Hbase 架构如图 1 所示: 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 HBase ——————————————————————————— —— 图 1 HBase 架构图 从图中可以看出 Hbase 是由 Client、Zookeeper、Master、HRegionServer、HDFS 等 几个组件组成,下面来介绍一下几个组件的相关功能: 1)Client Client 包含了访问 Hbase 的接口,另外 Client 还维护了对应的 cache 来加速 Hbase 的访 问,比如 cache 的.META.元数据的信息。 2)Zookeeper HBase 通过 Zookeeper 来做 master 的高可用、RegionServer 的监控、元数据的入口以及 集群配置的维护等工作。具体工作如下: 通过 Zoopkeeper 来保证集群中只有 1 个 master 在运行,如果 master 异常,会通过竞争 机制产生新的 master 提供服务 通过 Zoopkeeper 来监控 RegionServer 的状态,当 RegionSevrer 有异常的时候,通过回 调的形式通知 Master RegionServer 上下线的信息 通过 Zoopkeeper 存储元数据的统一入口地址 3)Hmaster master 节点的主要职责如下: 为 RegionServer 分配 Region 维护整个集群的负载均衡 维护集群的元数据信息 发现失效的 Region,并将失效的 Region 分配到正常的 RegionServer 上 当 RegionSever 失效的时候,协调对应 Hlog 的拆分 4)HregionServer HregionServer 直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下: 管理 master 为其分配的 Region 处理来自客户端的读写请求 负责和底层 HDFS 的交互,存储数据到 HDFS 负责 Region 变大以后的拆分 负责 Storefile 的合并工作 5)HDFS HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 HBase 提供高可用(Hlog 存储在 HDFS)的支持,具体功能概括如下: 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 HBase ——————————————————————————— —— 提供元数据和表数据的底层分布式存储服务 数据多副本,保证的高可靠和高可用性 1.3 HBase 中的角色 1.3.1 HMaster 功能 1.监控 RegionServer 2.处理 RegionServer 故障转移 3.处理元数据的变更 4.处理 region 的分配或转移 5.在空闲时间进行数据的负载均衡 6.通过 Zookeeper 发布自己的位置给客户端 1.3.2 RegionServer 功能 1.负责存储 HBase 的实际数据 2.处理分配给它的 Region 3.刷新缓存到 HDFS 4.维护 Hlog 5.执行压缩 6.负责处理 Region 分片 1.2.3 其他组件 1.Write-Ahead logs HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内 存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的 概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件 中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 2.Region Hbase 表的分片,HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer 中,在一个 RegionServer 中可以有多个不同的 region。 3.Store HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 HBase ——————————————————————————— —— 4.MemStore 顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL 中之后,RegsionServer 会在内存中存储键值对。 5.HFile 这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile 是以 Hfile 的形式存储在 HDFS 的。 第 2 章 HBase 安装 2.1 Zookeeper 正常部署 首先保证 Zookeeper 集群的正常部署,并启动之: [atguigu@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start [atguigu@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start [atguigu@hadoop104 zookeeper-3.4.10]$ bin/zkServer.sh start 2.2 Hadoop 正常部署 Hadoop 集群的正常部署并启动: [atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh 2.3 HBase 的解压 解压 HBase 到指定目录: [atguigu@hadoop102 software]$ tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/module 2.4 HBase 的配置文件 修改 HBase 对应的配置文件。 1)hbase-env.sh 修改内容: export JAVA_HOME=/opt/module/jdk1.8.0_144 export HBASE_MANAGES_ZK=false 2)hbase-site.xml 修改内容: hbase.rootdir hdfs://hadoop102:9000/hbase hbase.cluster.distributed true 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
hbase.zookeeper.quorum hadoop102:2181,hadoop103:2181,hadoop104:2181 尚硅谷大数据技术之 HBase ——————————————————————————— —— hbase.master.port 16000 hbase.zookeeper.property.dataDir /opt/module/zookeeper-3.4.10/zkData 3)regionservers: hadoop102 hadoop103 hadoop104 module]$ 4)软连接 hadoop 配置文件到 hbase: [atguigu@hadoop102 /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml [atguigu@hadoop102 /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml 2.5 HBase 远程发送到其他集群 [atguigu@hadoop102 module]$ xsync hbase/ 2.6 HBase 服务的启动 module]$ ln ln -s -s 1.启动方式 1 [atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start master [atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start regionserver 提 示 : 如 果 集 群 之 间 的 节 点 时 间 不 同 步 , 会 导 致 regionserver 无 法 启 动 , 抛 出 ClockOutOfSyncException 异常。 修复提示: a、同步时间服务 请参看帮助文档:《尚硅谷大数据技术之 Hadoop 入门》 b、属性:hbase.master.maxclockskew 设置更大的值 hbase.master.maxclockskew 180000 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 HBase ——————————————————————————— —— Time difference of regionserver from master 2.启动方式 2 [atguigu@hadoop102 hbase]$ bin/start-hbase.sh 对应的停止服务: [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh 2.7 查看 HBase 页面 启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如: http://hadoop102:16010 第 3 章 HBase Shell 操作 3.1 基本操作 1.进入 HBase 客户端命令行 [atguigu@hadoop102 hbase]$ bin/hbase shell 2.查看帮助命令 hbase(main):001:0> help 3.查看当前数据库中有哪些表 hbase(main):002:0> list 3.2 表的操作 1.创建表 hbase(main):002:0> create 'student','info' 2.插入数据到表 hbase(main):003:0> put 'student','1001','info:sex','male' hbase(main):004:0> put 'student','1001','info:age','18' hbase(main):005:0> put 'student','1002','info:name','Janna' hbase(main):006:0> put 'student','1002','info:sex','female' hbase(main):007:0> put 'student','1002','info:age','20' 3.扫描查看表数据 hbase(main):008:0> scan 'student' hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => '1001'} hbase(main):010:0> scan 'student',{STARTROW => '1001'} 4.查看表结构 hbase(main):011:0> describe ‘student’ 5.更新指定字段的数据 hbase(main):012:0> put 'student','1001','info:name','Nick' hbase(main):013:0> put 'student','1001','info:age','100' 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之 HBase ——————————————————————————— —— 6.查看“指定行”或“指定列族:列”的数据 hbase(main):014:0> get 'student','1001' hbase(main):015:0> get 'student','1001','info:name' 7.统计表数据行数 hbase(main):021:0> count 'student' 8.删除数据 删除某 rowkey 的全部数据: hbase(main):016:0> deleteall 'student','1001' 删除某 rowkey 的某一列数据: hbase(main):017:0> delete 'student','1002','info:sex' 9.清空表数据 hbase(main):018:0> truncate 'student' 提示:清空表的操作顺序为先 disable,然后再 truncate。 10.删除表 首先需要先让该表为 disable 状态: hbase(main):019:0> disable 'student' 然后才能 drop 这个表: hbase(main):020:0> drop 'student' 提示:如果直接 drop 表,会报错:ERROR: Table student is enabled. Disable it first. 11.变更表信息 将 info 列族中的数据存放 3 个版本: hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3} hbase(main):022:0> 'student','1001',{COLUMN=>'info:name',VERSIONS=>3} 第 4 章 HBase 数据结构 get 4.1 RowKey 与 nosql 数据库们一样,RowKey 是用来检索记录的主键。访问 HBASE table 中的行,只 有三种方式: 1.通过单个 RowKey 访问 2.通过 RowKey 的 range(正则) 3.全表扫描 RowKey 行键 (RowKey)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在 HBASE 内部,RowKey 保存为字节数组。存储时,数据按照 RowKey 的字 典序(byte order)排序存储。设计 RowKey 时,要充分排序存储这个特性,将经常一起读取的 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
分享到:
收藏