
mastiff/hive
文章平均质量分 75
LifeFighter
上海市闵行区上海交通大学闵行校区
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hive 和数据库的异同
http://www.alidata.org/archives/551 转载至阿里数据团队Hive 随谈(三)– Hive 和数据库的异同摘要:由于 Hive 采用了 SQL 的查询语言 HQL,因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以转载 2013-08-03 15:30:46 · 883 阅读 · 0 评论 -
Map执行时的RecordWriter实现之NewOutputCollector
在前面的一系列文章中我不断的提到了记录写入器RecordWriter,它是一个抽象类,在map任务执行中的根本作用就是向某个文件系统的文件中写入map任务的输出结果——key-value集。所以,本文将主要讨论MapTask对记录写入器RecordWriter的一个具体实现类——NewOutputCollector,来好好的看看这个NewOutputCollector对map任务的输出key-va转载 2013-09-06 22:37:14 · 902 阅读 · 0 评论 -
Hadoop中的排序器/组合器/合并器
目前,海量数据处理主要存在二个问题:大规模计算(cpu+mem)、海量数据存储(disk),而Hadoop被专门设计用来针对海量数据的处理,它通过分布式文件系统解决海量数据的存储问题,组织成千上万个计算节点来共同完成一个任务解决了大规模计算问题。Hadoop的核心是MapReduce,而不是分布式文件系统HDFS,这是因为MapRduce所依赖的存储系统并不依赖于任何一个文件系统,甚至是分布式文件转载 2013-09-06 22:36:54 · 982 阅读 · 0 评论 -
Hadoop中Reduce任务的执行框架
在前面的一系列文章中我主要围绕Hadoop对Map任务执行框架的设计与实现展开了详细的讨论,记得在博文Hadoop中Map任务的执行框架中说过还要为大家详细地描述Hadoop对Reduce任务执行框架的设计,那么在本文,我将兑现这个承诺。 其实,Hadoop中Reduce任务执行框架跟它的Map任务执行框架大致是很相似的,唯一的不同之处就是他们的数据输入来源、数据输出目的地不一样而转载 2013-09-06 22:38:14 · 792 阅读 · 0 评论 -
Hadoop中的RPC实现——客户端通信组件
在Hadoop中为了方便集群中各个组件之间的通信,它采用了RPC,当然为了提高组件之间的通信效率以及考虑到组件自身的负载等情况,Hadoop在其内部实现了一个基于IPC模型的RPC。关于这个RPC组件的整体情况我已绍经在前面的博文中介绍过了。而在本文,我将结合源代码详细地介绍它在客户端的实现。 先来看看与RPC客户端相关联的一些类吧!1.Client类转载 2013-09-06 22:38:49 · 782 阅读 · 0 评论 -
Job的数据输入格式化器—InputFormat
Hadoop被设计用来处理海量数据,这种数据可以是结构化的,半结构化的,甚至是一些无结构化的文本数据(这些数据可能存储在HDFS文件中,也可能存放在DB中)。它处理数据的核心就是map-reduce模型,但是,无论是map还是reduce,它们的输入输出数据都是key-value对的形式,这种key-value对的形式我们可以看做是结构化的数据。同时,对于reduce的输入,当然就是map的输出,转载 2013-09-06 22:41:37 · 1122 阅读 · 0 评论 -
Job的处理结果输出格式化器——OutputFormat
在前面的博文中,我已经详细的讲述了MapReduce是如何格式化一个作业的输入数据的,也就是用户应该如何来定义作业的输入数据的key-value类型,即如何读取输入数据,并把它们包装成一个个key-value对,最后来交给map函数来处理。那么对应的,本文将主要重点介绍如何格式化保存作业的最后输出结果,很明显,作业的最后输出结果实际上就是reduce函数的输出:key-value。因此,这个问题的转载 2013-09-06 22:42:13 · 981 阅读 · 0 评论 -
map任务执行中的Spill/Meger/Combiner
记得在以前的博文中已经比较详细地讲述了map在TaskTracker上的执行过程,但那只是我为了简化这种处理流程而假设map任务在理想情况下执行的,这种理想的假设条件是:TaskTracker是内存足够大,而能完全存储该map的任务的输出。很显然,这种情况在理想情况下是不太有可能的,但话又说回来,如果我们在TaskTracker上为Map Slot配置足够的内存,在某些作业的执行过程中上述的理想情转载 2013-09-06 22:42:46 · 902 阅读 · 0 评论 -
作业在map-reduce过程中的文件编码/解码
Hadoop为HDFS和Map-Reduce提供了一整套的数据编码/解码系统,同时还为用户开放了公共的自定义接口,这样用户就可以根据不同的数据类型自定义或者设置不同的数据压缩算法。在Hadoop中对数据进行压缩处理会对系统的整体性能有一定的提高,至于具体提高多少,由于条件所限,笔者在这里并没有进行详细地测试。为什么会这么说呢?很明显,对数据进行压缩,就会减少数据的存储容量,这样的话网络I/O也会随转载 2013-09-06 22:43:26 · 982 阅读 · 0 评论 -
由浅入深理解索引的实现(1)
本文转自:http://www.mysqlops.com/2011/11/24/understanding_index.html00 – 背景知识- B-Tree & B+Tree http://en.wikipedia.org/wiki/B%2B_tree http://en.wikipedia.org/wiki/B-tree- 折半查找(Bina转载 2013-09-06 22:44:41 · 819 阅读 · 0 评论 -
JobTracker任务调度器之JobQueueTaskScheduler
在客户端把作业提交给JobTracker节点之后,JobTracker节点就可以使用任务调度器TaskScheduler将这个Job的任务分配给那些合适的TaskTracker节点来执行。当然在JobTracker调度该Job之前,必须要确保该Job的JobInProgress被初始化了,即将Job划分为若干个map任务和reduce任务。在JobTracker中有一个基于优先级的FIFO任务调度转载 2013-09-06 22:46:04 · 1329 阅读 · 0 评论 -
Job的提交—客户端
转载 2013-09-06 22:47:47 · 856 阅读 · 0 评论 -
Hadoop公平调度器算法解析
1. 目的本文描述了hadoop中的公平调度的实现算法,公平调度器是由facebook贡献的,适合于多用户共享集群的环境的调度器,其吞吐率高于FIFO,论文参见参考资料[1]。本文分析的Hadoop版本是0.20.2,在新版本(0.21.0)中,公平调度算法已经有了改进与增强。本文组织结构如下:1)目的 2)公平调度介绍 3)公平调度算法分析 4)新版hadoop中公平调度器的新特转载 2013-09-06 22:48:21 · 1078 阅读 · 0 评论 -
Hadoop中Map任务的执行框架
在前面的一片博文中,我重点讲述了Task被TaskTracker调度执行的原理及过程,但是在详细的介绍执行Task的过程细节之前,我想先来认真的讨论一下Map Task和Reduce Task的执行框架。当然本文主要集中在Map Task上,至于Reduce Task的相关内容,我会在下一篇博文中谈到。在这篇文章中,我将尽量给出一个最抽象的Map模型 在Hadoop的MapRduc转载 2013-09-06 22:50:04 · 936 阅读 · 0 评论 -
Job的任务分解
在前面的博文JobTracker任务调度器之JobQueueTaskScheduler中,我讲述Job任务调度的时候简单地讲述了一下Job任务的分解,也就是将一个作业Job切分为一个个相对独立的map任务,以及后面的reduce任务。那么,Hadoop的Mapreduce,确切的说是JobTracker是如何来分解作业Job的呢?当然,在JobTracker中并不把这个动作叫做作业分解,而是叫做“转载 2013-09-06 22:50:35 · 1431 阅读 · 0 评论 -
Job的map任务分配
在前面的博文中,我介绍了Job的调度以及Job的任务分解,但对于Job的调度我只是从宏观的角度作了详细的说明,而关于JobInProgress具体是如何给TaskTracker分配本地Map Task和非本地MapTask的,将是本文将要讲解的重点。 先来看看JobInProgress是如何定义本地Map Task的。在前面的博文:Job的任务分解中,我自己给出了一个关于“预分配转载 2013-09-06 22:51:05 · 1121 阅读 · 0 评论 -
Map-Reduce的过程解析
文转载自“觉先”的博客《Hadoop学习总结之四:Map-Reduce的过程解析》一、客户端Map-Reduce的过程首先是由客户端提交一个任务开始的。提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的:public static RunningJob runJob(JobConf job)转载 2013-09-08 21:58:59 · 1002 阅读 · 0 评论 -
HDFS中的SecondaryNameNode节点解析
大家都知道,在HDFS的集群中有三类节点:NameNode、SecondaryNameNode和DataNode,同时在集群中只有一个NameNode节点,一个SecondaryNameNode节点,剩余的就都是DataNode节点(当然,集群中也可以同时存在多个SecondaryNameNode节点,但这没多大必要,反而会增加NameNode节点的压力,使其忙于元数据的传输与接收、日志的传输与切转载 2013-09-08 21:58:46 · 1550 阅读 · 0 评论 -
MapFile和BloomMapFile文件
MapFile和BloomMapFile文件分类: H-MapReduce源码解析2012-07-24 11:04 433人阅读 评论(0) 收藏 举报存储目录(?)[+]一. MapFile文件 前面说过,SequenceFile文件是用来存储key-value数据的,但它并不保证这些存储的key-value是有序的,而MapF转载 2013-09-06 22:26:30 · 1000 阅读 · 0 评论 -
SequenceFile文件
SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。目前,也有不少人在该文件的基础之上提出了一些HDFS中小文件存储的解决方案,他们的基本思路就是将小文件进行合并成一个大文件,同时对这些小文件的位置信息构建索引。不过,这类解决方案还涉及到Hadoop的另一种文件格式——MapFile文件。SequenceFile文件并不保证转载 2013-09-06 22:22:45 · 879 阅读 · 0 评论 -
Hive 随谈(五)– Hive 优化
Hive 随谈(五)– Hive 优化Hive 针对不同的查询进行了优化,优化可以通过配置进行控制,本文将介绍部分优化的策略以及优化控制选项。列裁剪(Column Pruning)在读数据的时候,只读取查询中需要用到的列,而忽略其他列。例如,对于查询: SELECT a,b FROM T WHERE e 其中,T 包含 5 个列 (a,b,c,d,e),列转载 2013-08-03 17:51:17 · 799 阅读 · 0 评论 -
hive UDF UDAF
Hive进行UDF开发十分简单,此处所说UDF为Temporary的function,所以需要hive版本在0.4.0以上才可以。一、背景:Hive是基于Hadoop中的MapReduce,提供HQL查询的数据仓库。Hive是一个很开放的系统,很多内容都支持用户定制,包括:a)文件格式:Text File,Sequence Fileb)内存中的数据格式: Java Integer/St转载 2013-08-03 17:22:33 · 1212 阅读 · 0 评论 -
如何获取hive建表语句
如何获取hive建表语句在使用hive进行开发时,我们往往需要获得一个已存在hive表的建表语句(DDL),然而hive本身并没有提供这样一个工具。要想还原建表DDL就必须从元数据入手,我们知道,hive的元数据并不存放在hdfs上,而是存放在传统的RDBMS中,典型的如mysql,derby等,这里我们以mysql为元数据库,结合0.4.2版本的hive为例进行研究。转载 2013-08-03 17:48:28 · 1515 阅读 · 0 评论 -
写好Hive 程序的五个提示
写好Hive 程序的五个提示使用Hive可以高效而又快速地编写复杂的MapReduce查询逻辑。但是某些情况下,因为不熟悉数据特性,或没有遵循Hive的优化约定,Hive计算任务会变得非常低效,甚至无法得到结果。一个”好”的Hive程序仍然需要对Hive运行机制有深入的了解。有一些大家比较熟悉的优化约定包括:Join中需要将大表写在靠右的位置;尽量使用UDF而不是transfr转载 2013-08-03 17:49:45 · 762 阅读 · 0 评论 -
Hive 随谈(六)– Hive 的扩展特性
Hive 随谈(六)– Hive 的扩展特性Hive 是一个很开放的系统,很多内容都支持用户定制,包括:文件格式:Text File,Sequence File内存中的数据格式: Java Integer/String, Hadoop IntWritable/Text用户提供的 map/reduce 脚本:不管什么语言,利用 stdin/stdout 传输数据用转载 2013-08-03 17:50:40 · 977 阅读 · 0 评论 -
结构化数据加载性能
影响结构化数据加载的性能,主要包括三个方面: 其一,数据结构化的开销; 其二,额外操作(日志、索引等)引入的开销; 其三,磁盘I/O 的数据量。 首先,数据结构化对于数据加载性能的影响,主要是体现在写模式(Write Schema)和读模式(Read Schema)方式的差异。写模式是传统数据库所采用的方式,在数据加载阶段将文本方式存储的数原创 2013-08-03 16:25:27 · 976 阅读 · 0 评论 -
hive hiveql
Hive 随谈(四)– Hive QLHive 的官方文档中对查询语言有了很详细的描述,请参考:http://wiki.apache.org/hadoop/Hive/LanguageManual ,本文的内容大部分翻译自该页面,期间加入了一些在使用过程中需要注意到的事项。Create TableCREATE [EXTERNAL] TABLE [IF NOT EXISTS]转载 2013-08-03 17:15:29 · 902 阅读 · 0 评论 -
SQL是OO的吗?
SQL是OO的吗?最近写多了HiveSQL,今天偶尔改了一个很老的java程序,突然想到SQL到底是不是一种OO的语言?按照历史来说,SQL应该和OO几乎是出生于同一个年代,我无法得知发明SQL的人是否借鉴了OO,或者想出OO的人是否吸纳了SQL的精髓,但是某一些容易被人忽略的东西还是可以印证这两个东西的相似性!OO的三个基本特点:封装性/继承性/多态性对于SQL来说几转载 2013-08-03 17:53:06 · 929 阅读 · 0 评论 -
hive的UDF 函数
hive的UDF 函数Hive内部自定义函数UDFHIVE UDF整理(一)关系运算等值比较: =语法:A = B 操作类型: 所有基本类型描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE举例:hive> select 1 from dual where 1=1;1不等值比较: 语法: A 操作类型: 所有基转载 2013-08-10 14:08:03 · 1029 阅读 · 0 评论 -
Facebook数据仓库揭秘:RCFile高效存储结构
本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在MapReduce环境下的大规模数据分析中扮演重要角色。 Facebook曾在2010 ICDE(IEEE International Conference on Data Engineering)会议上介绍了数据仓库Hive。Hive存储海量数据在Hadoop系统中,提转载 2013-08-10 15:24:17 · 956 阅读 · 0 评论 -
Twitter首席工程师:如何“打败”CAP定理
英文原文:How to beat the CAP theoremCAP 定理是数据系统设计的基本理论,目前几乎所有的数据系统的设计都遵循了这个定理。但 CAP 定理给目前的数据系统带来了许多复杂的、不可控的问题,使得数据系统的设计越来越复杂。Twitter 首席工程师、Storm 的作者 Nathan Marz 在本文中通过避开 CAP 定理带来的诸多复杂问题,展示了一个不同于以往转载 2013-08-10 21:14:16 · 782 阅读 · 0 评论 -
Hive源码解析—之—Hive的入口:
Hive源码解析—之—Hive的入口:Hive源码解析—之—hive的入口:初衷:hi,大家好,我叫红门,在hive方面是个菜鸟,现在读hive源码希望能够更了解底层,尤其是hive与Hadoop切换这块。但在读hive源码时发现比Hadoop源码难读一些,虽然Hadoop源码量比较大,但是整体很规范,命名规范,关键地方注释的比较明确。去年在读和修改Hadoop源码时都感觉转载 2013-08-03 17:52:31 · 1561 阅读 · 0 评论 -
hadoop基准性能测试
1、1TB(或1分钟)排序的冠军 作为分布式数据处理的框架,集群的数据处理能力究竟有多快?或许1TB排序可以作为衡量的标准之一。 1TB排序,就是对1TB(1024GB,大约100亿行数据)的数据进行排序。2008年,Hadoop赢得1TB排序基准评估第一名,排序1TB数据耗时209秒。后来,1TB排序被1分钟排序所取代,1分钟排序指的是在一分钟内尽可能多的排序。2009年,在一个14转载 2013-08-12 22:02:20 · 1522 阅读 · 0 评论 -
log4j 日志文件配置
Log4j说明1 log4j.rootCategory=INFO, stdout , R此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFF、 FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR转载 2013-08-15 11:25:33 · 1107 阅读 · 1 评论 -
Hadoop下join操作的几点优化意见
1. 概述 在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。 2. 常见的join方法介绍 假设要进行jo转载 2013-09-06 22:23:30 · 730 阅读 · 0 评论 -
Reduce任务的Map输出复制器—ReduceCopier
在前面介绍Hadoop的Reduce任务执行框架的时候说过,作业的每一个Map任务被执行完之后,它们的输出结果均保存在各自执行节点的本地磁盘上,当reduce任务执行的时候,它需要自己去到所有的Map节点上取回属于自己的map输出,直到属于自己的所有map输出copy到本地,reduce任务才开始接下来的工作。那么,Reduce是如何从Map节点取回自己的输入数据呢?这就是本文即将要详细讲述的内容转载 2013-09-06 22:38:39 · 1588 阅读 · 0 评论 -
Job的提交——JobTracker
在上一篇博文中,我着重谈到了客户端的JobClient对一个作业的提交所做的工作,那么在本文,我就要好好的谈一谈JobTracker为作业的提交到底干了那些个事情——一.为作业生成一个Job;二.接受该作业。 通过上一篇博文,我们都知道,客户端的JobClient把作业的所有相关信息都保存到了JobTracker的系统目录下(当然是HDFS了),这样做的一个最大的好处就是客户端干转载 2013-09-06 22:48:02 · 1061 阅读 · 0 评论 -
MapReduce源码分析总结
参考: 1 caibinbupt的源代码分析http://caibinbupt.javaeye.com2 coderplay的avaeye http://coderplay.javaeye.com/blog/295097http://coderplay.javaeye.com/blog/318602 3 Javen-Studio 咖啡小屋http://www.cppblog转载 2013-09-09 20:25:17 · 929 阅读 · 0 评论