Apache Hive
在标题为“Information Platforms and the Rise of the Data Scientist”的文章一文中,Jeff Hammerbacher把“信息平台”描述为“企业摄取(ingest)、处理(process)、生成(generate)信息的行为”与“帮助加速从经验数据中学习”的“中心”。
在Facebook,Jeff团队所构建的信息平台中,最庞大的组成部分是Apache Hive(https://hive.apache.org/)。Hive是一个构建在Hadoop上的数据仓库框架,是应Facebook每天产生的海量新兴社会网络数据进行管理和(机器)学习的需求而产生和发展的。在尝试了不同系统之后,Jeff团队选择Hadoop来存储和处理数据,因为Hadoop的性价比高,同时还能够满足他们的可伸缩性要求。
Hive的设计目的是让精通SQL技能但Java编程技能相对较弱的分析师能够对Facebook存放在HDFS中的大规模数据集执行查询。今天,Hive已经是一个成功的Apache项目,很多组织把它用作一个通用的、可伸缩的数据处理平台。
当然,SQL并不是所有大数据问题的理想工具。例如,它并不适合用来开发复杂的机器学习算法。但它对很多分析任务非常有用,而且它的另一个优势是业内人士都非常熟悉它。此外,SQL是商业智能工具的“通用语言”(可以通过ODBC这一桥梁来用),Hive有条件和这些产品进行集成。
最早提出“数据科学家”这个头衔的人,也是Facebook数据科学团队的负责人,Cloudera的联合创始人。这位出生于1983年的数学天才有一句名言:“我们这一代最杰出的头脑都在拼命思考如何吸引人们点击更多的广告,这个感觉糟透了。”他后来加入纽约著名的西奈山医院,成为一位医学研究者,运用自己的数据分析才能去攻克癌症、老年痴呆症、糖尿病及其他慢性疾病。
本章介绍如何使用Hive。我们假设你用过SQL和常见的数据库体系结构。在介绍Hive特性的同时,我们会经常将这些特性与其传统RDBMS对应部分进行比较。
Apache Hive™数据仓库软件有助于读取,编写和管理驻留在分布式存储中的大型数据集,并使用 SQL 语法进行查询。
构建于Apache Hadoop™之上,Hive 提供以下特性:
- 通过 SQL 轻松访问数据的工具,从而实现数据仓库任务,如 extract/transform/load(ETL),报告和数据分析。
- 一种在各种数据格式上强加结构的机制
- 访问 files 直接存储在Apache HDFS™或其他数据存储系统中,例如Apache HBase™
- 通过Apache Tez ™,Apache Spark™或MapReduce执行查询
- 程序语言 HPL-SQL
- Sub-second 通过Hive LLAP,Apache YARN和Apache Slider进行查询检索。
Hive 提供标准的 SQL 功能,包括许多后来的SQL:2003,SQL:2011和SQL:2016 features 用于分析。
Hive 的 SQL 也可以通过用户定义函数(UDF),用户定义聚合(UDAF)和用户定义的 table 函数(UDTF)与用户 code 一起扩展。
没有一个“Hive 格式”必须存储数据。 Hive 附带内置连接器,用于逗号和 tab-separated 值(CSV/TSV)文本文件,Apache 实木复合地板 ™,Apache ORC™和其他格式。用户可以使用其他格式的连接器扩展 Hive。有关详细信息,请参阅开发者指南中的文件格式和Hive SerDe。
Hive 不是为在线 transaction 处理(OLTP)工作负载而设计的。它最适用于传统的数据仓库任务。
Hive 旨在通过其输入格式最大化可扩展性(使用动态添加到 Hadoop cluster 的更多机器扩展),performance,extensibility,fault-tolerance 和 loose-coupling。
Hive 的组件包括 HCatalog 和 WebHCat。
- HCatalog是 Hadoop 的 table 和存储管理层,使用户可以使用不同的数据处理工具(包括 Pig 和 MapReduce)更轻松地在网格上读写数据。
- WebHCat提供的服务可用于运行 Hadoop MapReduce(或 YARN),Pig,Hive 作业。您还可以使用 HTTP(REST 样式)接口执行 Hive 元数据操作。
Hive 文档
以下链接提供对 Apache Hive wiki 文档的访问。此列表不完整,但您可以浏览这些 Wiki 页面以查找其他文档。有关更多信息,请参阅官方Hive 网站。
关于 Hive 的一般信息
- 入门
- 关于 Hive 的书籍
- 关于 Hive 的演讲和论文
- 网站和 Applications 由 Hive 提供支持
- 相关项目
- 常问问题
- Hive 用户邮件列表
- Hive IRC Channel:#hive on irc.freenode.net
- 关于本维基
用户文档
- Hive 教程
- Hive SQL 语言手册:命令,CLI,数据 Types,
DDL(create/drop/alter/truncate/show/describe),统计(分析),索引,存档,
DML(load/insert/update/delete/merge,import/export,解释计划),
查询(select),Operators 和 UDF,锁,授权 - 文件格式和压缩: RCFile, Avro 公司, ORC, 实木复合地板; 压缩, LZO
- 程序语言:Hive HPL/SQL
- Hive Configuration Properties
- Hive Clients
- Hive Client (JDBC, ODBC, 节约)
- HiveServer2:概观,HiveServer2 Client 和 Beeline,Hive Metrics
- Hive Web 界面
- Hive SerDes: Avro SerDe, 镶木地板 SerDe, CSV SerDe, JSON SerDe
- Hive Accumulo Integration
- Hive HBase Integration
- 德鲁伊 Integration
- Hive Transactions,流数据摄取和流式变异 API
- Hive Counters
管理员文档
- 安装 Hive
- 配置 Hive
- 设置 Metastore
- Hive Schema 工具
- 设置 Hive Web 界面
- 设置 Hive 服务器 (JDBC, ODBC, 节约, HiveServer2)
- Hive 复制
- Hive 在亚马逊 Web Services 上
- Hive on Amazon Elastic MapReduce
- Hive on Spark:入门
HCatalog 和 WebHCat 文档
- HCatalog
- WebHCat(坦普尔顿)
贡献者资源
- 如何贡献
- Hive 贡献者会议
- Hive Developer Docs
- Hive 开发人员指南 (code 组织, 编译和 run Hive, 单元测试, 调试, 可插拔接口)
- Hive Developer FAQ (移动 files, build Hive, 测试 Hive, MiniDriver 和 Beeline 测试)
- 插件开发人员套件
- 编写 UDTF
- Hive API 概述
- Hive 测试 Docs
- FAQ:测试
- 开发人员指南:单元测试
- 单元测试 Hive SQL
- 单元测试并行执行
- 添加新测试的提示
- Hive PTest2 基础设施
- Hive PreCommit 补丁测试
- MiniDriver 测试
- Running Yetus
- MetaStore API 测试
- Hive Performance
- Hive Architecture 概述
- Hive Design Docs: 已完成; 进行中; 建议; 不完整,被遗弃,其他
- Roadmap/Call 添加更多 Features
- Full-Text 搜索所有 Hive 资源
- 如何编辑网站
- 成为一名承诺者
- 如何提交
- 如何发布
- 项目章程
Hive 版本和分支
最新版本的 Hive 可在 Hive 网站的下载页面上找到。对于每个 version,页面提供 release date 和指向 change log 的链接。如果要为早期的 version(或开发分支)更改 log,请使用配置发行说明页面。
Apache Hive JIRA跟踪 Hive code,文档,基础结构等的更改。每个已解决的 JIRA 问题的 version number 或分支显示在问题页面顶部的“详细信息”部分的“修复 Version/s”字段中。对于 example,HIVE-5107具有 0.13.0 的修复 version。
有时 version number 会在发布之前发生变化。当发生这种情况时,可能仍会在 JIRA,wiki 和邮件列表讨论中找到原始数字。例如:
有关 Hive 分支的更多信息,请参见如何提供:了解 Hive 分支。
Apache Hive,Apache Hadoop,Apache HBase,Apache HDFS,Apache,Apache feather 徽标和 Apache Hive 项目徽标是 Apache Software Foundation 的商标。