内容简介
Impala是 Cloudera公司主导开发的新型查询系统,它提供 SQL语义,能查询存储在 Hadoop的 HDFS和 HBase中的 PB级大数据。Impala 1.0版比原来基于 MapReduce的 Hive SQL查询速度提升 3~90倍,因此, Impala有可能完全取代 Hive。作者基于自己在本职工作中应用 Impala的实践和心得编写了《开源大数据分析引擎Impala实战》。
《开源大数据分析引擎Impala实战》共分 10章,全面介绍开源大数据分析引擎 Impala的技术背景、安装与配置、架构、操作方法、性能优化,以及富技术含量的应用设计原则和应用案例。《开源大数据分析引擎Impala实战》紧扣目前计算技术发展热点,适合所有大数据分析人员、大数据开发人员和大数据管理人员参考使用。
内页插图
精彩书评
★看到将为中国读者发布的这一本中文版的Impala书籍,我非常欣喜,这无疑对中国用户更好地使用Hadoop,解决他们的业务问题有很大帮助。因此,我要感谢所有为发布本书的中文版做出贡献的人们。
——Cloudera副总裁 苗凯翔博士
★Impala是Hadoop生态圈不可或缺的一个环节,它提供SQL语义,能够对HDFS和HBase中的PB级大数据进行交互式实时查询,从而弥补了Hive批处理的不足。本书是国内第1本Impala专业书籍,相信对您有益。
——中国云计算专家咨询委员会副主任、秘书长中国信息协会大数据分会副会长 刘鹏
★这是国内第1本全面讲解Impala的书籍,既可以作为想快速搭建基于Hadoop的数据仓库的原数据库爱好者们的优秀参考书籍,又可以成为对Spark感兴趣的用户的架构理解入门书籍。本书融入作者多年的数据库和分布式工作的经验,可以说是Impala在目前国内全面、完整的技术讲解书籍。
——EasyHadoop社区创始人eXadoop公司创始人 向磊
★作者贾传青执着于技术并乐于分享,他一直想写一本看着舒服的技术书籍。希望本书能够为有兴趣研究Impala的专业人员或学习者有所帮助。
——慧聪网CTO 郭刚
★贾先生与我在多个大数据技术领域有过深入交流,贾先生深厚的技术功底和严谨的钻研精神给我留下深刻印象。非常高兴能看见贾先生的新著。这是我截至目前看到的,阐述Impala技术和应用体系化的中文书籍,本书将带领读者快速地掌握这个技术,打开大数据时代的窗户。
——中信证券 庄伟波
★天下武学,唯快不破,窃以为IT系统亦是如此。本书中详尽地讲解了Hadoop生态系统中的实时分析引擎Impala,相信能帮助每个读者快速地掌握这-技术。
——山西联通 郭瑜敏
★在商业领域,如何发挥“大数据”的商业价值,帮助企业形成核心能力还没有形成-个成熟的框架模式.一些运用“大数据”技术的先行者们开展了积极的尝试,传青就是其中的-位专家.他的努力,所取得的成果和工作精神值得敬佩。
——《实用数据分析》译者中国邮政 刁晓纯博士
目录
第1章 Impala概述、安装与配置
1.1 Impala概述
1.2 Cloudera Manager安装准备
1.3 CM及 CDH安装
1.4 Hive安装
1.5 Impala安装
第2章 Impala入门示例
2.1 数据加载
2.2 数据查询
2.3 分区表
2.4 外部分区表
2.5 笛卡尔连接
2.6 更新元数据
第3章 Impala概念及架构
3.1 Impala服务器组件
3.1.1 Impala Daemon
3.1.2 Impala Statestore
3.1.3 Impala Catalog
3.2 Impala应用编程
3.2.1 Impala SQL方言
3.2.2 Impala编程接口概述
3.3 与Hadoop生态系统集成
3.3.1 与Hive集成
3.3.2 与HDFS集成
3.3.3 使用HBase
第4章 SQL语句
4.1 注释
4.2 数据类型
4.2.1 BIGINT
4.2.2 BOOLEAN
4.2.3 DOUBLE
4.2.4 FLOAT
4.2.5 INT
4.2.6 REAL
4.2.7 SMALLINT
4.2.8 STRING
4.2.9 TIMESTAMP
4.2.10 TINYINT
4.3 常量
4.3.1 数值常量
4.3.2 字符串常量
4.3.3 布尔常量
4.3.4 时间戳常量
4.3.5 NULL
4.4 SQL操作符
4.4.1 BETWEEN操作符
4.4.2 比较操作符
4.4.3 IN操作符
4.4.4 IS NULL操作符
4.4.5 LIKE操作符
4.4.6 REGEXP操作符
4.5 模式对象和对象名称
4.5.1 别名
4.5.2 标示符
4.5.3 数据库
4.5.4 表
4.5.5 视图
4.5.6 函数
4.6 SQL语句
4.6.1 ALTER TABLE
4.6.2 ALTER VIEW
4.6.3 COMPUTE STATS
4.6.4 CREATE DATABASE
4.6.5 CREATE FUNCTION
4.6.6 CREATE TABLE
4.6.7 CREATE VIEW
4.6.8 DESCRIBE
4.6.9 DROP DATABASE
4.6.10 DROP FUNCTION
4.6.11 DROP TABLE
4.6.12 DROP VIEW
4.6.13 EXPLAIN
4.6.14 INSERT
4.6.15 INVALIDATE METADATA
4.6.16 LOAD DATA
4.6.17 REFRESH
4.6.18 SELECT
4.6.19 SHOW
4.6.20 USE
4.7 内嵌函数
4.7.1 数学函数
4.7.2 类型转换函数
4.7.3 时间和日期函数
4.7.4 条件函数
4.7.5 字符串函数
4.7.6 特殊函数
4.8 聚集函数
4.8.1 AVG
4.8.2 COUNT
4.8.3 GROUP_CONCAT
4.8.4 MAX
4.8.5 MIN
4.8.6 NDV
4.8.7 SUM
4.9 用户自定义函数UDF
4.9.1 UDF概念
4.9.2 安装UDF开发包
4.9.3 编写UDF
4.9.4 编写UDAF
4.9.5 编译和部署UDF
4.9.6 UDF性能
4.9.7 创建和使用UDF示例
4.9.8 UDF安全
4.9.9 Impala UDF的限制
4.10 Impala SQL &Hive; QL
4.11 将 SQL移植到Impala上
第5章 Impala shell
5.1 命令行选项
5.2 连接到Impalad
5.3 运行命令
5.4 命令参考
5.5 查询参数设置
第6章 Impala管理
6.1 准入控制和查询队列
6.1.1 准入控制概述
6.1.2 准入控制和YARN
6.1.3 并发查询限制
6.1.4 准入控制和Impala客户端协同工作
6.1.5 配置准入控制
6.1.6 使用准入控制指导原则
6.2 使用YARN资源管理(CDH5)
6.2.1 Llama进程
6.2.2 检查计算的资源和实际使用的资源
6.2.3 资源限制如何生效
6.2.4 启用Impala资源管理
6.2.5 资源管理相关impala-shell参数
6.2.6 Impala资源管理的限制
6.3 为进程,查询,会话设定超时限制
6.4 通过代理实现Impala高可用性
6.5 管理磁盘空间
第7章 Impala存储
7.1 文件格式选择
7.2 Text
7.2.1 查询性能
7.2.2 创建文本表
7.2.3 数据文件
7.2.4 加载数据
7.2.5 LZO压缩
7.3 Parquet
7.3.1 创建Parquet表
7.3.2 加载数据
7.3.3 查询性能
7.3.4 Snappy/Gzip压缩
7.3.5 与其他组件交换 Parquet数据文件
7.3.6 Parquet数据文件组织方式
7.4 Avro
7.4.1 创建Avro表
7.4.2 使用Hive创建的Avro表
7.4.3 通过JSON指定Avro模式
7.4.4 启用压缩
7.4.5 模式进化
7.5 RCFile
7.5.1 创建RCFile表和加载数据
7.5.2 启用压缩
7.6 SequenceFile
7.6.1 创建和加载数据
7.6.2 启用压缩
7.7 HBase
7.7.1 支持的 Hbase列类型
7.7.2 性能问题
7.7.3 适用场景
7.7.4 数据加载
7.7.5 启用压缩
7.7.6 限制
7.7.7 示例
第8章 Impala分区
8.1 分区技术适用场合
8.2 分区表相关 SQL语句
8.3 分区修剪
8.4 分区键列
8.5 使用不同的文件格式
第9章 Impala性能优化
9.1 最佳实践
9.2 连接查询优化
9.3 使用统计信息
9.4 基准测试
9.5 控制资源使用
9.6 性能测试
9.7 使用 EXPLAIN信息
9.8 使用 PROFILE信息
第10章 Impala设计原则与应用案例
10.1 设计原则
10.2 应用案例
前言/序言
探索数据洪流的智慧之选:《云端数据架构与实践》 在这个数据爆炸的时代,企业正面临着前所未有的挑战与机遇。海量、多源、异构的数据如同奔腾不息的河流,如何有效地驾驭这股洪流,从中挖掘出宝贵的洞察,驱动业务决策,已成为企业能否在数字化浪潮中脱颖而出的关键。《云端数据架构与实践》便是一本致力于解答这一时代难题的权威指南,它将带领读者深入理解现代数据架构的核心理念,掌握构建可扩展、高性能、高可靠云端数据平台的关键技术与最佳实践。 本书并非仅仅停留在理论层面,而是以实战为导向,通过系统性的讲解和详尽的案例分析,帮助读者构建起扎实的数据工程知识体系。我们将从零开始,逐步构建起一个完整的云端数据分析系统,涵盖从数据采集、存储、处理、分析到可视化的全生命周期。 一、基石:云原生数据存储与管理 数据的生命始于存储。本书将首先深入探讨云端数据存储的各种选择及其适用场景。我们会详细剖析关系型数据库(如RDS、Aurora)、NoSQL数据库(如DynamoDB、MongoDB)以及对象存储(如S3、OSS)的特性、优势与局限,帮助读者根据业务需求选择最合适的存储方案。 更重要的是,我们将重点介绍云原生数据仓库的概念与构建。读者将学习如何利用云服务商提供的托管数据仓库服务(如Redshift、BigQuery、Snowflake)来构建一个能够处理PB级数据的分析平台。我们将深入探讨数据仓库的设计范式(如星型模型、雪花模型)、数据建模的最佳实践、数据分层策略(如ODS、DWH、DM)、以及如何通过优化表结构、分区、分片等技术来提升查询性能。 此外,对于需要处理半结构化和非结构化数据的场景,本书还将介绍数据湖(Data Lake)的设计理念与实现方法。读者将了解到如何利用对象存储作为数据湖的底层存储,并通过元数据管理、数据目录、数据治理等手段,构建一个统一、可管理的集中式数据存储库,为后续的大规模数据处理与分析奠定基础。 二、驱动:云端数据处理与计算引擎 存储只是起点,数据的价值在于处理和计算。本书将聚焦于云端数据处理的强大引擎,帮助读者掌握处理海量数据的核心技能。 我们会深入讲解批处理(Batch Processing)与流处理(Stream Processing)这两种主流的数据处理范式。对于批处理,我们将详细介绍分布式计算框架(如Spark、Flink)在云环境下的部署与优化。读者将学习如何利用Spark SQL、Spark Streaming、DataFrame API等进行高效的数据ETL(Extract, Transform, Load)操作,如何优化Spark作业的性能,例如Shuffle优化、内存调优、容错机制等。 在流处理方面,本书将重点介绍实时数据管道的构建。我们将探讨Kafka、Kinesis等消息队列在构建高吞吐量、低延迟实时数据流中的作用,并深入讲解使用Spark Streaming或Flink等流处理引擎进行实时数据分析的原理与实践。读者将学习如何实现事件驱动的数据处理、窗口操作、状态管理以及与下游系统的集成。 除了通用的批处理和流处理框架,我们还将介绍一些针对特定场景的云原生数据处理服务。例如,云函数(Serverless Functions)在触发式数据处理中的应用,容器化技术(如Docker、Kubernetes)在部署和管理数据处理作业中的灵活性,以及各种托管的数据集成服务如何简化数据管道的构建。 三、洞察:云端数据分析与挖掘 原始数据经过处理后,便蕴含着商业价值。本书将带领读者进入数据分析与挖掘的精彩世界,发掘数据中的深层洞察。 我们将介绍云端数据分析的常用工具与技术。读者将学习如何使用SQL对存储在数据仓库或数据湖中的数据进行复杂的查询与聚合。对于更高级的分析需求,本书将引入统计分析、机器学习(Machine Learning)与人工智能(AI)在云端平台的应用。 我们会详细讲解如何在云平台上利用成熟的机器学习服务(如SageMaker、Vertex AI、Azure ML)来构建、训练和部署模型。内容将涵盖监督学习、无监督学习、深度学习等常用算法,以及特征工程、模型评估、超参数调优等关键环节。此外,本书还将介绍如何利用自然语言处理(NLP)、计算机视觉(CV)等AI技术来解决复杂的业务问题。 为了让数据分析的成果更直观易懂,本书还将介绍云端数据可视化工具(如QuickSight、Looker、Tableau)的应用。读者将学习如何构建交互式仪表板(Dashboard),将复杂的数据分析结果转化为易于理解的图表与报告,从而支持业务决策。 四、架构:构建弹性、安全、可扩展的云端数据平台 一个优秀的数据平台不仅要有强大的处理能力,更要具备良好的架构设计。本书将从架构层面出发,指导读者如何构建一个健壮、可靠、易于管理的云端数据平台。 我们将深入探讨微服务架构在数据平台中的应用,以及如何利用容器化技术(如Kubernetes)来实现数据的弹性伸缩与高可用部署。读者将学习如何设计数据 API,实现不同服务之间的数据互联互通。 数据安全与合规性是云端数据平台不可忽视的重要一环。本书将详细介绍云平台提供的数据加密、访问控制、审计日志、身份认证等安全机制,以及如何构建符合行业规范的数据治理体系。 此外,本书还将探讨持续集成/持续部署(CI/CD)在数据平台中的应用,如何通过自动化工具来加速数据管道的开发、测试与上线,从而提高团队的效率和交付速度。我们还会关注成本优化策略,讲解如何通过资源规划、弹性伸缩、使用预留实例等方式来有效控制云端数据平台的运行成本。 五、实践:企业级云端数据解决方案案例 理论结合实践是掌握复杂技术的最佳途径。本书将精选多个行业领先的企业级云端数据解决方案案例,涵盖电商、金融、物联网、医疗等多个领域。通过对这些案例的深入剖析,读者将了解到真实世界中的数据架构是如何设计的,面临的挑战是什么,以及如何运用本书所学知识来解决这些挑战。 每个案例都将从业务场景出发,详细介绍其数据架构的演进过程,所采用的关键技术栈,面临的性能瓶颈或安全问题,以及最终的解决方案。这些案例不仅能够加深读者对所学知识的理解,更能激发读者在实际工作中解决问题的灵感。 《云端数据架构与实践》 是一本面向所有希望深入理解和掌握云端数据技术,构建和优化企业级数据平台的工程师、架构师、数据科学家和技术领导者的必备读物。无论您是初学者还是有一定经验的从业者,本书都将为您提供清晰的指引和实用的工具,帮助您驾驭数据洪流,驱动业务创新,在数字化时代赢得先决优势。