写点什么

利用 Big SQL 管理 Hadoop 数据

  • 2013-08-06
  • 本文字数:2570 字

    阅读完需:约 8 分钟

Big SQL 是 IBM 的基于 Hadoop 的平台 InfoSphere BigInsights 的 SQL 接口,旨在让 SQL 开发人员能够轻松地掌握对 Hadoop 管理的数据的查询。它使数据管理员能够为 Hive、HBase 或他们的 BigInsights 分布式文件系统中存储的数据创建新表。来自 IBM 的工程师 Cynthia 和 Uttam 对 Big SQL 做了简要的介绍

Big SQL 并没有将 Hadoop 转变为一种大型的分布式关系数据库。它是一个软件层,使 IT 专业人员可使用熟悉的 SQL 语句在 BigInsights 中创建表和查询数据。为此,程序员将会使用标准的 SQL 语法,并在某些情况下使用 IBM 创建的 SQL 扩展,使得利用某些基于 Hadoop 的技术变得非常轻松。Big SQL 的架构图如下:

Cynthia 和 Uttam 对此做了详细的介绍:

Big SQL 支持来自 Linux 和 Windows 平台的 JDBC 和 ODBC 客户端访问。此外,Big SQL LOAD 命令可直接从多种关系 DBMS 系统以及存储在本地或 BigInsights 分布式文件系统中的文件读取数据。BigInsights EE 2.1 可配置为支持 Hadoop Distributed File System (HDFS) 或 IBM 的 General Parallel File System with the File Placement Optimizer (GPFS-FPO)。

SQL 查询引擎支持连接、联合、分组、常见的表表达式、窗口函数,以及其他熟悉的 SQL 表达式。此外,通过优化提示和配置选项,您还可以改变数据访问策略。根据查询的性质、数据量和其他因素,Big SQL 可以使用 Hadoop 的 MapReduce 框架并行处理各种查询任务,或者在单个节点上的 Big SQL 服务器上本地执行您的查询,无论哪种方式最适合您的查询。

对 Big SQL 感兴趣的组织通常在内部拥有丰富的 SQL 技能,以及一个基于 SQL 的商业智能应用程序和查询 / 报告工具套件。对于不熟悉 Hadoop 的组织而言,能够利用现有技能和工具(并且可能重用部分现有应用程序)的概念可能非常有吸引力。确实如此,一些拥有构建于 DBMS 系统之上的大型数据仓库的公司正在寻找基于 Hadoop 的平台,使用该平台作为卸载 “冷的” 或不常用数据的潜在目标,同时仍然支持查询访问。在其他情况下,组织会依靠 Hadoop 来分析和过滤非传统数据(比如日志、传感器数据、社交媒体帖子等),最终将此信息的子集或集合提供给他们的关系仓库,以扩充其产品、客户或服务视图。

在这些和其他一些情况下,Big SQL 可能发挥着重要作用。但是,认为 Big SQL 会取代关系 DBMS 技术是不恰当的。Big SQL 旨在为基于 Hadoop 的基础架构提供补充并在 BigInsights 中利用该架构。关系 DBMS 系统的一些常见特性在 Big SQL 中并不存在,而且一些 Big SQL 特性在大多数关系 DBMS 系统中都不存在。例如,Big SQL 支持查询数据,但不支持 SQL UPDATEDELETE 语句。INSERT 语句仅支持用于 HBase 表。Big SQL 表可能包含具有复杂数据类型的列,比如 structarray,而不是简单的 “扁平” 行。而且还支持一些基础存储机制,包括:

  • 存储在 HDFS 或 GPFS-FPO 中的分割文件(比如逗号分隔文件)
  • 顺序文件格式、RCFile 格式等格式的 Hive 表。(Hive 是 Hadoop 的数据仓库实现)
  • HBase 表(HBase 是 Hadoop 的基于键值或基于列的数据存储)

Cynthia 和 Uttam 举例说明了 Big SQL 的基本用法,比如创建一个 Big SQL 表并向其中加载来自本地文件的数据:

复制代码
create table mygosales.product_brand_lookup (
product_brand_code int,
product_brand_en varchar(180)
)
row format delimited fields terminated by '\t';
load hive data local inpath '/home/user1/data/product.tsv'
overwrite into table mygosales.product_brand_lookup;

CREATE TABLE 语句创建一个包含两列的 Hive 表;第一列捕获一个数字代码,将它用作产品品牌的标识符,第二列捕获该品牌的一段英文描述。此语句的最后一行指定了该数据将用来存储(和想要的)输入数据的格式:以包含制表符分隔的字段的行格式。LOAD 语句,提供了本地文件系统中我们希望加载到表中的一个文件的完整路径。给定我们的表定义,此文件中的每个记录必须包含两个由 \t(制表符)分隔的字段(一个整数和一个字符串)。OVERWRITE 子句告诉 Big SQL 将表的内容替换为文件中包含的数据。

传统事务管理不是 Hadoop 生态系统的一部分,所以 Big SQL 的运行未涉及到事务或锁管理。这表明提交和回滚操作不受支持,而且一些并发操作可能导致应用程序或查询错误。

关于性能方面的考虑因素,Cynthia 和 Uttam 也做了简要的介绍:

Big SQL 将一个查询的执行分解为多个 _ 部分 _,比如连接、group-by 等。依赖于具体的查询、数据量、配置设置和其他因素,Big SQL 可顺序或并行执行这些部分。并行性是通过利用 Hadoop 的 MapReduce 框架来实现的。您可能已经想到,单个查询可能生成多个 MapReduce 作业。MapReduce 框架使用多个映射器或缩减程序 (reducer) 并行执行每个作业(任务)。这可能对针对大型数据集的复杂查询很有帮助。

但是,启动一个 MapReduce 作业涉及到一定量的处理开销。对于某些类型的查询,此开销可能超出并行处理的好处,比如助力小数据集或获取与一个特定 HBase 行键关联的数据的查询。在这些情况下,查询最好在单个节点上顺序执行。这有时称为 “本地” 查询执行,Big SQL 除了支持 MapReduce 并行性之外也支持此能力。

商用的关系 DBMS 系统采用了复杂的基于成本的优化器,参考与表大小、数据失真等相关的广泛统计信息,为它们的查询选择一种高效的数据访问策略。Big SQL 的查询优化器还会动态地参考某些统计信息来确定一种高效的数据访问策略。但是,在一些情况下,Big SQL 可能没有足够的统计信息可用。例如,它的基础数据源可能未提供这些信息。在这些情况下, Big SQL 程序员将优化提示嵌入其查询中可能有所帮助,因为这么做可使 Big SQL 生成更好的执行计划。提示可与查询执行模式(本地或并行)、连接方法、索引使用等相关。在 Big SQL 中,查询提示采用 /*+ name=value[, name=value ..] +*/ 的形式。

Big SQL 支持使用 CREATE INDEX 语句为 HBase 创建辅助索引。可以想象,这些索引可改进在加入索引的列上进行过滤的查询的运行时性能。HBase 索引可能基于单个键或复合键,使用 Big SQL 将数据插入 HBase 表中或将来自一个文件的数据加载到 HBase 表中会自动更新它的索引。但是,在 BigInsights 2.1 中,将来自远程关系数据库的数据加载到 HBase 表中不会自动更新表的辅助索引。相反,管理员需要丢弃并重新创建必要的索引。

2013-08-06 08:013518
用户头像

发布了 501 篇内容, 共 257.5 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

使用APICloud AVM多端框架开发消防检查助手App项目实践分享

YonBuilder低代码开发平台

APP开发 APICloud 多端开发 应用开发 avm.js

资金穿透分析

清林情报分析师

数据分析 分析软件 分析工具 资金穿透 资金分析

常见线程数量的估算方式

snlfsnef

系统设计 线程 多CPU

信息化App在「左」,数字化App在「右」

Speedoooo

App 数字化 信息化

私有云和公有云的主要区别有几点?两者哪个更安全?

行云管家

云计算 公有云 私有云 企业上云 云管平台

不愧是美团内部“接口自动化测试学习笔记”这细节讲解,神了

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口测试

如何最简单、通俗地理解Python的pandas库?

Jackpop

web前端培训Vue面试题分享

@零度

Vue 前端开发

哈希彩竞猜娱乐游戏俱乐部系统开发详情

开发微hkkf5566

LoadBalance

Damon

6月月更

如何使用物联网低代码平台进行系统管理?

AIRIOT

物联网 低代码开发 低代码开发平台

Flink CDC + OceanBase 全增量一体化数据集成方案

Apache Flink

大数据 flink 编程 流计算 实时计算

TASKCTL关于 "Fastjson反序列化远程代码执行漏洞” 的风险通告

敏捷调度TASKCTL

DevOps ETL算法 大数据平台 反序列化 TASKCTL

什么是数据流向分析?

清林情报分析师

数据分析 流向分析 数据流向 资金流向 可视化分析

小程序开发真的可以取代APP软件开发设计吗?

开源直播系统源码

软件开发 小程序开发

外呼机器人7大难题,看网易云商如何攻破?

网易智企

AI 机器人

百度评论中台的设计与探索

百度Geek说

云原生中间件 — Kafka Operator 总览篇

Daocloud 道客

云原生 开源项目 消息中间件 上云 Strimzi Kafka Operator

企业如何建设知识管理系统

小炮

K8S集群无法通过Service Name访问的故障

领创集团Advance Intelligence Group

吉林长春等保测评公司有几家?详细地址在哪里?

行云管家

网络安全 等级保护 等保测评 等保测评机构 吉林

BI的落寞,低代码会重演一遍吗?

ToB行业头条

什么是面向对象编程?终于懂了

Jackpop

从感知智能跨越到认知智能,NLP领域要做哪些创新?

澜舟孟子开源社区

人工智能 自然语言处理 nlp 大模型 认知智能

可视化技术在 Nebula Graph 中的应用

NebulaGraph

可视化 图数据库 知识图谱

漫谈软件架构

韩陆

云原生 领域驱动设计 可观测性 软件架构 事件驱动架构

单线程性能炸裂 英特尔以Sapphire Rapids强势角逐AI计算市场

科技之家

为了写好代码,我坚持了这8条习惯!

Jackpop

如何从零开始开发一款chrome扩展?

Jackpop

高考后,学会这种能力,让你收益终生!

图灵教育

数学 高考 数学建模

【ELT.ZIP】OpenHarmony啃论文俱乐部—gpu上高效无损压缩浮点数

ELT.ZIP

鸿蒙 压缩算法 Openharmony啃论文俱乐部 ndzip

利用Big SQL管理Hadoop数据_大数据_崔康_InfoQ精选文章