hadoop开发
文章平均质量分 62
迷途小码
大数据及后台开发 python|scala|c|java|go
展开
-
关于 HDFS 的 file size 和 block size
一个常被问到的一个问题是: 如果一个HDFS上的文件大小(file size) 小于块大小(block size) ,那么HDFS会实际占用Linux file system的多大空间?答案是实际的文件大小,而非一个块的大小。下面做一个实验:1、往hdfs里面添加新文件前,hadoop在linux上面所占的空间为 464 MB: 2、往hdfs里面添加大小为2673375 b转载 2015-09-21 16:51:31 · 2327 阅读 · 0 评论 -
MapReduce编程实例
MapReduce编程实例(六)前提准备:1.hadoop安装运行正常。Hadoop安装配置请参考:Ubuntu下 Hadoop 1.2.1 配置安装2.集成开发环境正常。集成开发环境配置请参考 :Ubuntu 搭建Hadoop源码阅读环境MapReduce编程实例:MapReduce编程实例(一),详细介绍在集成环境中运行第一个转载 2014-02-24 13:46:21 · 1397 阅读 · 0 评论 -
hadoop简单实现文本数据全局排序
(1)、关于mapreducemapreduce很适合数据之间相关性较低且数据量庞大的情况,map操作将原始数据经过特定操作打散后输出,作为中间结果,hadoop通过shuffle操作对中间结果排序,之后,reduce操作接收中间结果并进行汇总操作,最后将结果输出到文件中,从这里也可以看到在hadoop中,hdfs是mapreduce的基石。可以用下面这幅图描述map和reduce的过程:转载 2014-02-24 14:30:20 · 2341 阅读 · 0 评论 -
[Hadoop源码解读](六)MapReduce篇之MapTask类
MapTask类继承于Task类,它最主要的方法就是run(),用来执行这个Map任务。 run()首先设置一个TaskReporter并启动,然后调用JobConf的getUseNewAPI()判断是否使用New API,使用New API的设置在前面[Hadoop源码解读](三)MapReduce篇之Job类 讲到过,再调用Task继承来的initialize()方法初始化这个task,转载 2014-02-27 11:36:21 · 768 阅读 · 0 评论 -
[Hadoop源码解读](五)MapReduce篇之Writable相关类
前面讲了InputFormat,就顺便讲一下Writable的东西吧,本来应当是放在HDFS中的。 当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。Writable是Hadoop的序列化格式,Hadoop定义了这样一个Writable接口。[html] view plaincopyprint?转载 2014-02-27 11:31:56 · 790 阅读 · 0 评论 -
[Hadoop源码解读](四)MapReduce篇之Counter相关类
当我们定义一个Counter时,我们首先要定义一枚举类型:[html] view plaincopyprint?public static enum MY_COUNTER{ CORRUPTED_DATA_COUNTER, NORMAL_DATA_COUNTER }; 然后,我们就可以在mapper或reducer里面增加它的值:转载 2014-02-27 11:25:10 · 1099 阅读 · 0 评论 -
[Hadoop源码解读](三)MapReduce篇之Job类
下面,我们只涉及MapReduce 1,而不涉及YARN。 当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做。建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置InputFormat和正确转载 2014-02-27 11:24:03 · 713 阅读 · 0 评论 -
[Hadoop源码解读](二)MapReduce篇之Mapper类
前面在讲InputFormat的时候,讲到了Mapper类是如何利用RecordReader来读取InputSplit中的K-V对的。 这一篇里,开始对Mapper.class的子类进行解读。 先回忆一下。Mapper有setup(),map(),cleanup()和run()四个方法。其中setup()一般是用来进行一些map()前的准备工作,map()则一般承担主要的处理工转载 2014-02-27 11:07:46 · 897 阅读 · 0 评论 -
[Hadoop源码解读](一)MapReduce篇之InputFormat
平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class);来保证输入文件按照我们想要的格式被读取。所有的输入格式都继承于InputFormat,这是一个抽象类,其子类有专门用于读取普通文件的FileInputFormat,用来读取数据库的DBInputFormat等等。转载 2014-02-27 10:28:56 · 821 阅读 · 0 评论 -
把Job分割成map和reduce
合理地选择Job中 Tasks数的大小能显著的改善Hadoop执行的性能。增加task的个数会增加系统框架的开销,但同时也会增强负载均衡并降低任务失败的开销。一个极端是1个map、1个reduce的情况,这样没有任务并行。另一个极端是1,000,000个map、1,000,000个reduce的情况,会由于 框架的开销过大而使得系统资源耗尽。Map任务的数量Map的数量经常是由输入数 据中转载 2013-09-10 17:47:06 · 888 阅读 · 0 评论 -
hadoop FileSystem使用示例
from:http://www.cnblogs.com/serendipity/archive/2011/07/28/2119857.htmlFileSystem是一个文件系统的实例,这个文件系统可以是hdfs,也可以是本地的文件系统 。一 获得hdfs的文件系统 String uri = "hdfs://10.0.0.134:9000"; Configurat转载 2014-02-25 09:29:01 · 1086 阅读 · 0 评论 -
如何在Hadoop上编写MapReduce程序
1. 概述1970年,IBM的研究员E.F.Codd博士在刊物《Communicationof the ACM》上发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文,提出了关系模型的概念,标志着关系数据库的诞生,随后几十年,关系数据库及其结构化查询语言SQL成为程序员必须掌握的基本技能之一。2005年4月,J转载 2013-07-18 10:11:48 · 1170 阅读 · 0 评论 -
使用Hadoop har归档历史文件(小文件)
应用场景我们的hdfs中保存大量小文件(当然不产生小文件是最佳实践),这样会把namenode的namespace搞的很大。namespace保存着hdfs文件的inode信息,文件越多需要的namenode内存越大,但内存毕竟是有限的(这个是目前hadoop的硬伤)。下面图片展示了,har文档的结构。har文件是通过mapreduce生成的,job结束后源文件不会删除。转载 2013-09-17 15:12:38 · 3072 阅读 · 0 评论 -
hadoop shuffle机制中针对中间数据的排序过程详解(源代码级)
在所有公开资料中,很少有对Hadoop 中间数据的sort过程进行详细介绍的。如果想要深入了解hadoop对中间数据的排序机制,只有通过阅读源代码才能达到。而hadoop的这段代码本身具有非常大的迷惑性,如果不注意细节,很容易会发生错误的理解。 本篇文章从原理上详细介绍了hadoop针对中间数据的排序机制,并且对一些重要的源代码段进行了介绍。阅读本文对理解该机制或者深入阅读该部分的hadoop源代转载 2014-02-21 17:32:39 · 977 阅读 · 0 评论 -
Hadoop中的各种排序
1:shuffle阶段的排序(部分排序)shuffle阶段的排序可以理解成两部分,一个是对spill进行分区时,由于一个分区包含多个key值,所以要对分区内的按照key进行排序,即key值相同的一串存放在一起,这样一个partition内按照key值整体有序了。第二部分并不是排序,而是进行merge,merge有两次,一次是map端将多个spill 按照分区和分区内的key进行merge,转载 2014-02-19 17:22:13 · 1259 阅读 · 0 评论 -
HDFS hflush hsync和close的区别
HDFS的hflush,hsync和close有啥区别,分别做了什么hflush: 语义是保证flush的数据被新的reader读到,但是不保证数据被datanode持久化.hsync: 与hflush几乎一样,不同的是hsync保证数据被datanode持久化。close: 关闭文件.除了做到以上2点,还保证文件的所有block处于completed状态,并且将文件置为closed转载 2015-09-15 11:25:09 · 1733 阅读 · 1 评论 -
HDFS的JAVA接口API操作实例
HDFS的JAVA接口API操作实例 20:55 2010-6-2运行环境:Hadoop.0.20.2CentOS 5.4 java version "1.6.0_20-ea"配置的是单机Hadoop环境先看下我的运行截图主要参考这篇文章http://myjavan转载 2013-07-03 17:45:33 · 1033 阅读 · 0 评论 -
How to sort an arbitrarily large set of data using Hadoop?
Question:My question is related to this post Sorting large data using MapReduce/Hadoop. My idea of sorting an arbitrarily set is:We have a large file with records, say 10^9 records.The fil转载 2014-02-08 13:34:54 · 814 阅读 · 0 评论 -
mapreduce框架详解
开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密。这个可能是我做技术研究的思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习hdfs时候我就发现,要理解hadoop框架转载 2014-02-13 14:38:25 · 935 阅读 · 0 评论 -
Hadoop Mapreduce multiple Input files
Question:So I need two files as an Input to my mapreduce program: City.dat and Country.datIn my main method im parsing the command line arguments like this:Path cityInputPath = new Path(args转载 2014-02-13 16:54:53 · 1880 阅读 · 3 评论 -
About hadoop hdfs filesystem rename
Question:I am storing lots of data into hdfs. And I need to move the files from one folder to another.May I ask generally how much is the cost of filesystem's rename method?Say I have to move转载 2014-02-13 17:28:59 · 1540 阅读 · 0 评论 -
MultipleOutputs(一) Renaming Part Files in Hadoop Map Reduce
Question:I have tried to use the MultipleOutputs class as per the example in page http://hadoop.apache.org/docs/mapreduce/r0.21.0/api/index.html?org/apache/hadoop/mapreduce/lib/output/MultipleOu转载 2014-02-17 12:07:23 · 1316 阅读 · 0 评论 -
MultipleOutputs(二)
在使用Map-Reduce处理大量数据时,可能有些记录同别的记录不一样,比如这些记录是不符合规范的,可以简单丢弃这些数据。但是如果想保存这些出错的记录以分析错误的原因,这个时候就不太方便了,如果Hadoop提供一个分布式的日志系统就好了,直接使用API将这些错误的记录写入日志中。我先想到一个比较简单的方法,就是实现自己的partitioner,将错误的记录保存到最后一个分区文件中。代码如下所示:转载 2014-02-17 13:18:14 · 973 阅读 · 0 评论 -
MultipleOutputs(三)
一,介绍1,旧API中有 org.apache.hadoop.mapred.lib.MultipleOutputFormat和org.apache.hadoop.mapred.lib.MultipleOutputsMultipleOutputFormat allowing to write the output data to different output files.Multip转载 2014-02-17 13:21:25 · 912 阅读 · 0 评论 -
hadoop-mapreduce-without-reducer
指定MR任务的时候可以不指定reducer,这样的话,所有的mappers将输出写入到job指定的目录的时候,不会执行sorting和partioning。只需要设置reduces的个数为0。job.setNumReduceTasks(0);翻译 2014-02-18 17:29:59 · 971 阅读 · 0 评论 -
TotalOrderPartitioner Cannot Find _partition.lst File
Question:I'm using the Cloudera's VM (cloudera-demo-vm-cdh3u3-vmware) to run theTotalOrderPartitioner class for a specific problem.When I run the code, it cannot find the _partition.lst file.转载 2014-02-19 14:35:47 · 1758 阅读 · 1 评论 -
MapReduce数据流
MapReduce数据流(一)一个基本的MapReduce作业由那些基本组件组成,从高层来看,所有的组件在一起工作时如下图所示:图4.4高层MapReduce工作流水线 MapReduce的输入一般来自HDFS中的文件,这些文件分布存储在集群内的节点上。运行一个MapReduce程序会在集群的许多节点甚至所有节点上运行mapping任务,每一个mapping任务都是平等的:map转载 2014-02-19 15:20:56 · 1086 阅读 · 0 评论 -
Hadoop Map-Reduce 天气示例
我们照着Hadoop教程简单的写了一个例子,它可以用于分析天气数据然后找到某年的最高气温。我们是用hadoop 0.20的新的API写的,具体代码如下:Mapper类:/* */ package com.charles.parseweather; import java.io.IOException; import org.apache.hadoop.io.IntWritabl转载 2013-09-06 10:34:42 · 1493 阅读 · 0 评论 -
Hadoop几个重要的JIRA
【https://issues.apache.org/jira/browse/HADOOP-2857】标题: libhdfs: no way to set JVM args other than classpath作用:告诉我们如何设置libhdfs的jvm option原创 2013-11-11 17:26:17 · 1123 阅读 · 0 评论 -
浅析hadoop写入数据api
对于一般文件,都有满足随机读写的api。而hadoop中的读api很简单用FSDataInputStream类就可以满足一般要求,而hadoop中的写操作却是和普通java操作不一样。hadoop对于写操作提供了一个类:FSDataOutputStream,这个类重载了很多write方法,用于写入很多类型的数据:比如字节数组,long,int,char等等。像FSDataInputSt转载 2013-12-11 15:45:02 · 771 阅读 · 0 评论 -
HDFS的数据通信机制
简单而言,HDFS分为了三个部分:NameNode,处于master的地位,维护了数据在DataNode上的分布情况,并且,还要负责一些调度任务;DataNode,存储真实数据的地方;DFSClient,一个client端,通过它提供的接口访问NameNode和DataNode;三者之间的通信全部是基于TCP/Socket; 如图所示: 图中,连线表示两者之转载 2013-12-11 15:42:11 · 1922 阅读 · 0 评论 -
HDFS通过java api进行访问
方法一:Configuration config = new Configuration(true);config.set("fs.default.name","hdfs://192.168.200.135:9000");可以这样写,但是 Configuration config = new Configuration(false); 不要用false 。使用false就会加载默认配置文件原创 2014-04-08 12:03:22 · 867 阅读 · 0 评论 -
Force flush on a GZIPOutputStream in java
Question:we are working on a program where we need to flush (force compress and send data) a GZIPOutputStream. The problem is, that the flush method of the GZIPOutputStream doesn't work as expec转载 2014-03-10 17:32:05 · 1753 阅读 · 0 评论 -
补:lease add/recovery补充说明
经常会陷入没有交待背景就balabala的境地,因此常常鸡同鸭讲。。 反省反省。一下子冒出个lease recovery,恐怕大家没什么概念。lease recovery 相当于租约的收回。hadoop中租约的收回有3个时机。1. nn 收到dn的 sync block command时。2. DFSClient 主动close一个流的时候.3. LeaseManager中的mon转载 2014-04-04 09:10:44 · 1078 阅读 · 0 评论 -
HDFS append原理与代码分析(Hadoop 2.0)
在append出现之前,一个file被close之后就是immutable的了,close之前是不能被read的。而在append出现之后,一个未close的file的last block对于read来说也是visible的,那么逻辑就复杂多了。Apache社区的jira里有对HDFS append设计的详细文档(https://issues.apache.org/jira/secure/at转载 2014-04-03 15:45:31 · 4548 阅读 · 0 评论 -
磨磋hadoop:Lease recovery策略分析
LeaseManager提供了lease recovery的方法。lease recovery算法如下:1. name node查找到lease的信息2. 对于lease中的每一个文件,获取其最后一个block b进行以下处理 2.1 获取包含block b 的全部data node 2.2 获取一个data node作为其primary data node,转载 2014-04-04 09:08:38 · 1578 阅读 · 0 评论 -
hadoop 2.2.0 fsimage和edit logs的处理逻辑
在类org.apache.hadoop.hdfs.server.namenode.NNStorageRetentionManager的purgeOldStorage()方法中描述了fsimage和edit logs的处理逻辑:一、找到存在于fsimage中的最小txid,删除比最小txid小的fsimage二、最小txid - dfs.namenode.num.extra.edits.re原创 2014-04-16 18:00:21 · 1640 阅读 · 0 评论 -
hadoop源码 - dfsclient写文件过程
HDFS写入文件的重要概念HDFS一个文件由多个block构成。HDFS在进行block读写的时候是以packet(默认每个packet为64K)为单位进行的。每一个packet由若干个chunk(默认512Byte)组成。Chunk是进行数据校验的基本单位,对每一个chunk生成一个校验和(默认4Byte)并将校验和进行存储。在写入一个block的时候,数据传输的基本单位是packet,转载 2013-10-12 17:22:14 · 896 阅读 · 0 评论 -
hadoop源码 - HDFS write流程分析(Hadoop2.0)
Write操作是HDFS最基本的操作之一,一般是先create一个文件然后write内容。这篇文章主要讲用户调用FileSystem APT向HDFS写入数据时,HDFS是怎么工作的。1,client发起create请求。通过DistributedFileSystem.create()方法创建文件,其实就是通过DistributedFileSystem内部wrapper的DFSClient转载 2014-04-30 15:28:43 · 1648 阅读 · 0 评论 -
hadoop源码 - Client代码结构
Client核心代码有DistributedFileSystem和DFSClient。DistributedFileSystem扩展子FileSystem,在为客户端提供一个文件系统接口实现。其内部使用DFSClient完成各类文件操作。DFSClient使用ClientProtocol与NameNode通信,完成文件元信息操作。并通过Socket连接完成与DataNode间的bloc转载 2014-04-30 15:51:41 · 902 阅读 · 0 评论