50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

利用 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:013931
用户头像

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

关注

评论

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

13-注解增删改查

爱好编程进阶

Java 程序员 后端开发

2021全网最全Activiti7教程02(Activiti7入门使用-欢迎收藏)

爱好编程进阶

Java 程序员 后端开发

2年工作经验的Java程序员面试经历

爱好编程进阶

程序员 后端开发

动手实操丨RC522射频卡模块与IC卡完成充值消费查询的技术实现思路

华为云开发者联盟

stm32 RC522射频卡模块 IC卡 RC522

维权思考

成周

显卡只是为游戏而生吗?GPU服务器了解一下

Finovy Cloud

GPU服务器 GPU算力

《数字经济全景白皮书》Z世代用户洞察篇 完整版 发布

易观分析

Z世代

15 个优秀开源的 Spring Boot 学习项目,一网打尽!

爱好编程进阶

Java 程序员 后端开发

快来跟20年京东T9架构师学习进阶微服务+Docker+Dubbo+SpringBoot

Java架构追梦

spring java面试 后端开发

架构师成长路线

AI架构师汤师爷

软件架构 架构师 成长路线

Apache ShardingSphere 企业行|走进汽车之家

SphereEx

数据库 企业 ShardingSphere SphereEx apache 社区

区块链 重塑不良资产互信机制

CECBC

微服务实战文档分享,阿里内部的Spring cloud微服务精髓都在里面

Java架构追梦

Java 微服务 阿里

内存不超过5M,datop 在识别冷热内存及跨 numa 访存有多硬核?| 龙蜥技术

OpenAnolis小助手

cpu 内存 datop 轻量级 muma

CoProcessFunction实战三部曲之三:定时器和侧输出

爱好编程进阶

Java 程序员 后端开发

CRUD勿进,全身心投入才能读懂腾讯P8亲码的“Java微服务

爱好编程进阶

Java 程序员 后端开发

终于有人把tomcat讲清楚了!阿里大牛推荐的tomcat架构解析文档

Java架构追梦

Java 后端开发 JVM’

2021年4月23号,成功斩获阿里(Java岗

爱好编程进阶

Java 程序员 后端开发

4年JAVA外包终上岸,我只能说避雷这些公司

爱好编程进阶

Java 程序员 后端开发

centos7的启动流程(systemctl)

爱好编程进阶

Java 程序员 后端开发

让 Rust 的 CI 加速 2~3倍速度

非凸科技

rust 构建 cl cithub 缓存空间

元宇宙核心技术--脑机接口

CECBC

Stack 顿悟三部曲(1):从CPU的视角说起

蓬蒿

cpu 堆栈 计算机原理 stack

耗时三年终于整理出了SSM+微服务+Nginx+Redis+MySQL的PDF了!

Java架构追梦

Java 后端开发

(JavaSE)数据类型变量与运算符

爱好编程进阶

Java 程序员 后端开发

BAT华为等一线大厂Java工程师必读书单

爱好编程进阶

Java 程序员 后端开发

2021-11-9【数据结构平时实验】

爱好编程进阶

Java 程序员 后端开发

不愧是字节跳动技术官,算法精髓全写这本666页笔记里了

Java架构追梦

Java 程序员 数据结构与算法、

7Z命令行

爱好编程进阶

Java 程序员 后端开发

BATJ关于Redis的高频面试真题

爱好编程进阶

Java 程序员 后端开发

CGBTN2111-DAY02总结复习

爱好编程进阶

Java 程序员 后端开发

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