术语词汇表

亚马逊弹性MapReduce(EMR)

亚马逊的EMR是基于亚马逊EC2(弹性计算云)的托管Hadoop服务。

Avro

Avro是一个新的序列化格式,其用于解决一些其他序列化格式演变过程中发现的常见问题。使用它的一些好处是其具有丰富的数据结构、快速的二进制格式,支持远程过程调用,而且内置模式演化。

Bash

Bash是Linux和Mac OS X系统的默认命令行交互shell。

S3中的数据桶

数据桶是使用S3时用户可以具有和管理的最顶层容器的术语。一个用户可以具有很多的数据桶,其类似于物理硬盘的root根目录。

命令行交互界面(CLI)

命令行交互界面(也就是CLI)是指可以执行Hive语句“脚本”并和用户输入信息进行交互的命令行界面。

数据仓库

数据仓库指用于报告、趋势等分析的一组结构化数据组成的库。数据仓库可以提供数据批处理,是离线的,而不是像电子商务这样提供实时响应能力的系统。

Derby

Derby是一个轻量级的SQL数据库,其可以嵌入到Java应用程序中。其运行在相同的进程中并将数据存储到本地文件中。Hive元数据存储中默认使用Derby作为元数据库。可以访问http://db.apache.org/derby/获得更多信息。

动态分区

动态分区是HiveQL对于SQL一个扩展。使用动态分区可以允许用户将查询结果插入到表分区中,而分区字段是一个或者多个不同的分区列值,具体的分区值将由查询结果动态地生成。使用动态分区可以非常方便地将查询结果写入到新表的大量分区中,而无需为每个分区列值都写一个单独的查询语句。

Ephemeral Storage 临时性存储

对于虚拟亚马逊EC2集群的节点,节点上的硬盘存储空间就被称为临时性存储。这是因为和普通的物理存储集群不同,当这类集群关闭后这些存储数据就会被清除掉。因此,当使用EC2集群,例如亚马逊弹性MapReduce集群时,要注意将重要的数据备份到S3上。

外部表

外部表指使用不在Hive控制范围内的存储路径和内容的表。使用外部表会比较方便将数据和其他工具共享,但是需要其他的处理过程来管理数据的生命周期。也就是说,当创建了一个外部表时,Hive并没有创建这个外部存储路径(对于分区表的话还应包括分区路径文件夹),同样地,当删除外部表后,并不会删除外部路径下的数据。

Hadoop分布式文件系统(HDFS)

Hadoop分布式文件系统(HDFS)是一个用于数据存储的分布式的、弹性的文件系统。HDFS被优化为可以快速扫描硬盘上大的连续的数据块。集群中的分布式提供了数据存储的横向扩展。HDFS文件的数据块在集群内会被复制成多份(默认情况下是3份)来防止当磁盘坏掉或者整个服务器坏掉时的数据丢失。

HBase

HBase是使用HDFS作为持久化存储表数据的NoSQL数据库。HBase是列式的键-值对存储的设计,用于提供传统的快速响应查询和行级别的数据更新和插入。列式存储意味着磁盘上的数据存储是按照多组列够成的,也就是列族,而不是按照行来组织的。这个特性使得可以快速查询列的子集数据。键-值对存储意味着行是按照一个唯一键和整行所对应的值来获取的。HBase并没有提供一种SQL方言,但是可以使用Hive来查询HBase表。

Hive

Hive是一个数据仓库工具。Hive对存储在HDFS、HBase表或者其他存储上的数据进行了抽象,形成了表。Hive查询语言(HQL)是结构化查询语言(SQL)的方言。

Hive查询语言(HQL)

Hive查询语言(HQL)是Hive自己的结构化查询语言(SQL)的一种方言。通常缩写为HiveQL或者HQL。

输入文件格式(Input Format)

输入文件格式决定了输入数据流(通常是来自于文件的)是如何分割成记录的。SerDe用于将记录分割成列。用户自定义的输入文件格式可以在创建表时通过INPUTFORMAT语句来进行指定。默认的输入文件格式也就是默认的STORED AS TEXTFILE语句实际是就是org.apache.hadoop.mapreduce.lib.input.TextInputFormat的简写形式。输出文件格式(Output Format)是类似的。

JDBC

Java数据库连接API(JDBC)提供了使用Java代码访问包括Hive的SQL系统的接口。

Job任务

在Hadoop上下文中,一个Job就是一个提交给MapReduce的独立的工作流。其中包含有需要执行一个完整的计算,从读取输入到生成输出的完整过程。MapReduce 框架中的JobTracker会将其分解成一个或者多个可以在集群中分布式执行的task任务。

JobTracker

JobTracker是使用Hadoop的MapReduce的所有任务(Job)的最顶层控制器。JobTracker接收提交上来的Job,决定执行什么task以及分发到哪里去执行,监控他们的执行过程,并且在需要的时候重跑失败的task,其还提供了一个网页控制台界面用户监控Job和task的执行过程,查看执行日志,等等。

任务流(Job Flow)

任务流是亚马逊弹性MapReduce(EMR)中使用到的一个术语,其表示在一个为特定目的而创建的临时EMR集群上执行的一系列连续的job任务。

JSON

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互,因此常用于网络应用程序。

Map阶段

Map阶段是指MapReduce处理过程中进行Map操作的那个阶段,在这个阶段输入的键-值对集合会转换成一个新的键-值对集。对于每个输入键-值对,可以产生零到多个输出键-值对。输入和输出键以及输入和输出值可能是完全不同的。

MapR

MapR是一个商业版本的Hadoop, MapR文件系统(MapR-FS)代替了HDFS。MapR-FS是一个高性能的分布式文件系统。

MapReduce

MapReduce是Google提出的一个软件架构,用于大规模数据集的并行运算。其将计算过程分为两个过程映射(Map)过程和化简(Reduce)过程,map过程用来把一组键-值对映射成一组新的键-值对,并通过指定并发的Reduce过程,来保证所有映射的键-值对中的每一个共享相同的键组。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性。每个节点会周期性的把完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google档案系统中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的不可分割操作以确保不会发生并行线程间的冲突。当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。

元数据存储(Metastore)

元数据存储是指存储如表结构信息这样的“元数据”信息的服务。Hive需要使用元数据存储服务才能够使用。默认情况下,Hive使用的元数据存储是内置的Derby SQL Server服务,其提供了有限的,单进程的SQL支持。生产环境下需要使用像MySQL这样的提供全功能的关系型数据库作为元数据存储。

NoSQL

NoSQL指的是非关系型数据库,不支持关系型模型的数据管理、结构化查询语言、以及传统的update操作。这些数据存储将这些功能剔除掉了,目的是为大数据处理提供更具成本效益的可伸缩性、高可用性,等等。

ODBC

ODBC全称是开放数据库连接API,其为其他应用程序提供了访问SQL系统的接口,当然包括访问Hive的接口。通过来说Java应用程序是使用JDBC API进行连接的。

输出文件格式(Output Format)

输出文件格式(OutputFormat)决定了记录是如何写入到输出流中的,通常是如何写入到文件中的。一个SerDe处理了如何将每行记录序列化成合适的字节流的问题。可以在创建表语句中通过OUTPUTFORMAT语句执行用户自定义的文件输出格式。默认的输出格式是STORED AS TEXTFILE, 其是org .apache.hadoop.hive.ql.io.HiveIgnoreKeyText

OutputFormat的简化形式。相关的可查看下输入文件格式(InputFormat)。

分区

分区是表数据的一个子集,同一个分区下的分区字段内容是相同的。在Hive中,和大多数支持数据分区的数据库一样,每个分区都对应着不同的物理存储路径(在Hive中就是表路径下的子文件夹)。使用分区有几个好处。分区字段的值在分区数据中其实是没有的,这样就可以节约存储空间,同时对于使用WHERE语句的查询来说通过限制特定的分区字段可以减少输入的数据量而提高执行效率,因为这样可以避免全表扫描。同样可以参考下动态分区。

Reduce

Reduce过程是MapReduce处理过程的一部分,在这个过程里来自map阶段的键-值对会被进行处理。MapReduce的一个重大的特性就是来自所有map task产生的键-值对,具有相同键的值会被分发到同一个reduce task中,因此值的集合可以根据实际情况进行“化简”。例如,一组整数可以进行相加或者求平均计算,而一组字符串可以进行去重处理,等等。

关系模型

关系模型是数据库管理系统的最常见的模型,其是基于数据组织和数据操作的逻辑模型。数据结构的声明以及如何操作数据都是由用户定义的,最常见就是使用结构化查询语言(SQL)。而相应的具体实现会将这些声明转换成存储、获取和操作数据等处理过程。

S3

S3上亚马逊网络服务(AWS)的分布式文件系统。在运行MapReduce任务时可以和HDFS结合使用或者替代HDFS进行使用。

SerDe

序列化器/反序列化器或简写为SerDe,用于将记录的字解析成列或字段,也就是反序列化过程。它也用来创建这些记录字节(也就是序列化过程)。相反,输入格式(InputFomat)用于将一个输入流转换为记录而输出格式(OutputFormat)用来将记录写到一个输出流。在创建Hive表时可以指定SerDe。默认的SerDe支持在第3.3节“文本文件数据编码”中所介绍的字段分隔符,讨以及各种优化如简易解析。

结构化查询语言(SQL)

结构化查询语言(SQL)是一种实现了关系模型查询和操纵数据的语言。缩写为SQL。对于SQL虽然有一个经历了很多次修改的ANSI标准,但是所有的SQL方言都可以广泛地添加使用自定义扩展和改变。

Task

在MapReduce上下文中,task是在单个集群节点上工作的最小单元,其作为整个job的一个处理单元。默认情况下,每个task都会启动单独的一个JVM进程。每个map和reduce调用都有其自身的task。

Thrift

Thrift是Facebook发明的RPC系统,其被集成到了Hive中。远程进程可以通过Thrift发送Hive语法到Hive中。

用户自定义聚合函数(UDAF)

用户自定义聚合函数(UDAF)是指输入为多行(或多行的多个字段)而产生唯一个“聚合的”结果数据的用户自定义函数,例如求输入数据的行数,计算一组值的和或平均值,等等。这个术语简称UDAF。请参考第13章“用户自定义函数”和第13.9节“用户自定义聚合函数”。

用户自定义函数(UDF)

用户自定义函数(UDF)是指Hive用户用于扩展其处理操作所实现的函数。有时这个术语也包含Hive内置的函数,其也通常表示那些一条输入行(或一行数据中某个列)并产生一条输出(例如,并不会改变输出记录的行数)的函数。关于UDF的更多信息,请参考第13.9节“用户自定义聚合函数”和第13.10节“用户自定义表生成函数”。

用户自定义表生成函数(UDTF)

用户自定义表生成函数(UDTF)是指可以将每条记录的一个字段的值转换生成多行记录的用户自定义函数。例子如explode函数,这个函数可以将一个数组字段的值转换成多行,而且对于Hive v0.8.0和更高版本,可以将map类型的字段转换成键和值的多行数据。关于UDTF的详细信息,请参考第13章“用户自定义函数”和第13.9节“用户自定义聚合函数”。

书末说明

《Hive编程指南》书封面上的生物是一只黄边胡蜂(胡蜂属的),还有它的蜂巢。黄边胡蜂是南美的唯一的一种胡蜂,其是在欧洲移民时带到美洲的。这种胡蜂可以在整个欧洲以及亚洲大部分地区找到,其可以根据不同气候按照需要通过不同的蜂巢建造技术来进行适应。

胡蜂是一种社会性昆虫,和蜜蜂、蚂蚁是一样的。胡蜂的蜂巢里有一个蜂后,以及少量的雄性胡蜂,而大部分都是雌性的工蜂。雄蜂的使命就是和蜂后进行繁殖,其后不久它们就会死去。而雌性工蜂的作用就是建造蜂巢,搬运食物,以及照顾蜂后的卵。

胡蜂的巢和本书是一致的,因为蜂巢是由木浆形成的多层六角形格子构成的。最终形成的结果就是一个附着在短杆上的梨型巢。在寒冷地区,冬天的时候胡蜂会放弃蜂巢而转移到空的树干里甚至是人类的房屋里,蜂后和蜂卵会一直待到天气变暖为止。蜂卵孵化出新的胡蜂然后形成新的殖民地,而蜂巢会进行再次构造。本书的封面图片来自于Johnson的《博物学》。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1200

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

你可能感兴趣的:(术语词汇表)