实战: 基于HBase的大数据在线分析

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 作者:青道

背景介绍

(一)课程预览

image001.png

What?

基于HBase存储的应用数据,构建一套大数据处理框架, 使用不同方式对HBase数据进行分析。


Why?

HBase作为开源分布式数据库,具备高性能,高可用,海量无限扩展的特点。然而HBase查询接口较简单,无法满足数据分析的需求,但HBase具有丰富数据生态,可以结合大量开源的组件对HBase进行数据分析。


Who?

大数据开发,希望了解HBase数据分析及大数据生态的用户。


How?

本课程将从原理到代码编写,手把手教用户构建基于HBase的大数据分析系统。


(二)HBase数据访问概览

image002.png

下面介绍一下HBase的数据访问方式,上方为整体架构图。


HBase的访问方式主要有三种。第一种是通过API访问,主要是 Put/Get/Scan这三个接口。对数据过滤、聚合等稍微复杂一点的需求,可以用“filter+coprocessor”的方式结合API来处理。


第二种是通过HFile Reader/Writer。因为HBase是存储计算分离的架构,它的数据文件存在HDFS上,可以直接用HBase提供的HFile Reader/Writer来读写HBase上的数据文件,然后通过Bulkload到HBase表中。


第三种是通过MapReduce框架封装,它提供了几个常用的工具类,API封装是TableInputFormat和 TableOutputFormat。因为框架需要切分任务,它底层会按照HBase表的分区来自动为每个分区并发带来访问数据,HFile的封装也是一样的。


(三)准备工作


1. 购买HBase实例

·购买Lindorm单机版
·Lindorm控制台 -> 实例详情 -> 访问控制 -> 添加开发服务器IP到白名单


2. 配置客户端
·Lindorm控制台 -> 数据库连 接 -> 宽表引擎 -> Lindorm shell下载

·从控制台数据库链接页面,获取到hbase-site.xml配置


3. 配置开发环境
·下载安装IDE开发环境
·安装配置好Java环境


注:详细操作步骤和代码,请下载Demo工程。


在线交互式分析


下面进行HBase数据在线交互系统分析,这里的在线交互分析是指在移动HBase数据的场景下,直接对数据进行访问与分析。


(一)在线分析HBase数据 - Spark


1. Spark + HBase 架构

image003.png

首先可以用“Spark+HBase”架构。


Spark是一个专门为大规模数据处理而设计的快速通用计算引擎。如上图所示,它上面有Spark RDD与Spark SQL这些引擎可以使用。


Spark连接HBase的方式有两种,一种是通过HBaseClient直接访问HBase。第二种是Spark引入HBase Connector之后,通过Spark SQL/Spark RDD就可以直接操作这个数据。


2.流程概览


·准备Spark

下载安装Spark


·开发

1)配置开发环境

2)下载demo工程

3)开发Spark作业


·打包运行

1)打包项目

2)提交Spark作业


3. HadoopRDD – InputFormat

image004.png

首先看HadoopRDD的方式,上方为一个样例的代码。


依赖HBase客户端,底层用TableInputFormat,底层Spark作业会自动把任务切分成Region的并发,然后对每个Region计算,然后获取最终结果。


4. Spark Connector - SparkSQL


image005.png

第二种是用SparkSQL访问HBase。SparkSQL依赖Spark Hbase Connector,像这个代码里面会直接建一张Spark的 表,表建好之后,就可以执行一些SQL去访问HBase的数据。


5. 直接使用HBase客户端读写数据

image006.png

除了上述方式,也可以直接使用HBase客户端读写数据。


(二)在线分析HBase数据 - Hive


1. Hive + HBase 架构


image007.png

Hive是一个基于Hadoop的数据仓库工具,用来对大规模数据进行处理。它也提供了SQL的查询功能,底层是将对应的SQL转换成MapReduce的任务来执行,所以它会依赖于关系型数据库作为MetaStore。


把整个架构搭起来之后,就可以通过SQL来执行HBase的数据分析。


2.准备工作


·安装Hadoop

1)下载安装Hadoop

2)设置环境变量

3)配置Hadoop

4)启动hdfs和yarn

5)验证


·安装MySQL

1)安装MySql

2)准备好Hive使用MySql用户和数据


·安装配置Hive

1)下载安装Hive

2)配置Hive

3)添加和替换hbase依赖

4)添加Hbase配置

5)验证


3.操作过程


1)建HBase外表:

CREATE EXTERNAL TABLE hbase_hive_table (key int, value string) STORED BY ‘org.apache.hadoop.hive. hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,cf1:val”) TBLPROPERTIES (“hbase.table.name” = “hbase_hive_table”, “hbase.mapred.output.outputtable” = “hbase_hive_table”);


2)SQL查询:
select count(*) from hbase_hive_table ;

image008.png

4.在线分析的弊端


弊端一:影响在线
占用HBase在线服务资源 影响应用对HBase的正常访问。

弊端二:存储格式 相对列存,HBase存储格式对分析不友好,分析性能差。 弊端三:数据变化
分析过程中,数据一直在变化。


离线及流式分析


除了在线分析,还有另外两种方式,分别是离线以及流式分析。

(一)HBase数据离线处理分析


1.完整步骤

image009.png

image010.png

首先使用LTS (Lindorm Tunnel Service)将Hbase数据全量导出到HDFS,存储为Parquet格式,接着开发Spark作业分析导出的Parquet文件数据。


2. 全量导出到HDFS - Parquet格式

image011.png

在HDFS页面上可以直接创建一个任务,然后从某一个集群把某一张表数据全量导出到一个目标的HDFS上面,格式默认为Parquet。


参考文档:https://help.aliyun.com/document_detail/156428.html#title-ofz-4ah-45z


3. 使用Spark分析Parquet文件

image012.png

当数据导完后,下一步就是写一个Spark作业来分析这个Parquet文件,上方是一个样例的代码。


4. 离线分析的弊端

弊端一:实时性差

全量导出代价大,数据量越大数据产出越困难。


弊端二:存储冗余

数据在离线重复存储。


弊端三:重复导出

识别增量较难,历史数据重复导出。


(二)HBase数据流式处理分析


1.完整步骤

image013.png

image014.png

首先使用LTS增量订阅HBase 数据,写入到Kakfa,接着使用Spark Streaming对接Kafka,进行流式计算。


2. 导出到Kafka

image015.png

同样,这里使用的也是阿里云的LTS产品。


LTS里有Lindorm Streams模块,它可以订阅某一张或者某些表的数据,然后写到对应的消息存储里面去。当这个任务建起来之后,HBase写入数据就会实时同步到Kafka里。底层实现原理是订阅HBase日志,同步延迟在秒级别。


3. 使用Spark对接Kafka进行实时计算

image016.png

数据增量同步到Kafka之后,使用Spark对接Kafka进行实时计算。


总结

image017.png

如上图所示,整个HBase的数据生态十分丰富,可以看到有很多开源产品,首先上游APP、日志、数据库等高并发写入到HBase之后,Spark、Flink等可以直接读取HBase数据做分析。同时它们的结果也可以批量写入/Bulkload到HBase。


然后通过同步工具,如LTS、Kettle等,可以把HBase的数据全量同步到离线分析系统。 也可以通过增量订阅工具,如LTS、Replication,订阅到消息队列,下游再对接实时计算的产品,如Flink、Spark。


以上就是HBase的大致生态环境。




相关文章
|
26天前
|
存储 大数据 测试技术
用于大数据分析的数据存储格式:Parquet、Avro 和 ORC 的性能和成本影响
在大数据环境中,数据存储格式直接影响查询性能和成本。本文探讨了 Parquet、Avro 和 ORC 三种格式在 Google Cloud Platform (GCP) 上的表现。Parquet 和 ORC 作为列式存储格式,在压缩和读取效率方面表现优异,尤其适合分析工作负载;Avro 则适用于需要快速写入和架构演化的场景。通过对不同查询类型(如 SELECT、过滤、聚合和联接)的基准测试,本文提供了在各种使用案例中选择最优存储格式的建议。研究结果显示,Parquet 和 ORC 在读取密集型任务中更高效,而 Avro 更适合写入密集型任务。正确选择存储格式有助于显著降低成本并提升查询性能。
137 1
用于大数据分析的数据存储格式:Parquet、Avro 和 ORC 的性能和成本影响
|
2月前
|
分布式计算 Hadoop 大数据
Jupyter 在大数据分析中的角色
【8月更文第29天】Jupyter Notebook 提供了一个交互式的开发环境,它不仅适用于 Python 编程语言,还能够支持其他语言,包括 Scala 和 R 等。这种多语言的支持使得 Jupyter 成为大数据分析领域中非常有价值的工具,特别是在与 Apache Spark 和 Hadoop 等大数据框架集成方面。本文将探讨 Jupyter 如何支持这些大数据框架进行高效的数据处理和分析,并提供具体的代码示例。
50 0
|
15天前
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
75 12
|
10天前
|
JSON 数据可视化 数据挖掘
Polars函数合集大全:大数据分析的新利器
Polars函数合集大全:大数据分析的新利器
16 1
|
23天前
|
存储 分布式计算 Hadoop
大数据分析的工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。
28 8
|
1月前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
82 11
|
2月前
|
大数据 机器人 数据挖掘
这个云ETL工具配合Python轻松实现大数据集分析,附案例
这个云ETL工具配合Python轻松实现大数据集分析,附案例
|
2月前
|
数据采集 人工智能 安全
AI大数据处理与分析实战--体育问卷分析
本文是关于使用AI进行大数据处理与分析的实战案例,详细记录了对深圳市义务教育阶段学校“每天一节体育课”网络问卷的分析过程,包括数据概览、交互Prompt、代码处理、年级和学校维度的深入分析,以及通过AI工具辅助得出的分析结果和结论。
|
2月前
|
存储 分布式计算 数据处理
MaxCompute 的成本效益分析与优化策略
【8月更文第31天】随着云计算技术的发展,越来越多的企业选择将数据处理和分析任务迁移到云端。阿里云的 MaxCompute 是一款专为海量数据设计的大规模数据仓库平台,它不仅提供了强大的数据处理能力,还简化了数据管理的工作流程。然而,在享受这些便利的同时,企业也需要考虑如何有效地控制成本,确保资源得到最优利用。本文将探讨如何评估 MaxCompute 的使用成本,并提出一些优化策略以降低费用,提高资源利用率。
64 0
|
2月前
|
存储 分布式计算 大数据
MaxCompute 数据分区与生命周期管理
【8月更文第31天】随着大数据分析需求的增长,如何高效地管理和组织数据变得至关重要。阿里云的 MaxCompute(原名 ODPS)是一个专为海量数据设计的计算服务,它提供了丰富的功能来帮助用户管理和优化数据。本文将重点讨论 MaxCompute 中的数据分区策略和生命周期管理方法,并通过具体的代码示例来展示如何实施这些策略。
88 1
下一篇
无影云桌面