mapreduce

  • Hadoop学习小结

    还在学校的时候,就知道Hadoop的存在了. 2012年在公司实习的时候,买了<Hadoop权威指南第2版>,大致看了下. 今年,抽空也大致喵了几眼. 最大的感悟就是:光看不做,还是不行. Hadoop最坑最脑残的地方就是,默认不支持在Windows下运行.我的笔记本用的是Windows7系统. 这样,只好安装了VMware,然后安装Ubuntu系统,想通过这种方式来搭建环境. Hadoop这个大数据处理框架包含了好多内容,MapReduce,HDFS等等.我现在只有个模糊的理解,想通过写代码

    hadoop, mapreduce, 大数据, 云计算, 学习感悟May 3

  • 在Tomcat中执行Hadoop的MapReduce程序(五)[未完]

    准备 在linux中准备tomcat服务器,通过,tomcat/bin/startup.sh检查是否能正常跑起来. 本次介绍通过web程序执行mapreduce程序,下章将介绍如何通过web程序监控mapreduce的执行进度.过程和结果,以便可以实现简单的管理功能,达到可以和业务监控模块的集成. 搭建 在IDEA中新建MAVEN工程,配置好pom.xml和web.xml 这里是用Spring和Struts2作为主程序框架.

    hadoop, mapreduce, Web, ideaApril 14

  • Windows下使用 IntelliJ IDEA搭建hadoop开发环境调试MapReduce(二)

    准备 准备前一篇的涉及到的内容 这里额外新增一快,在idea的安装目录下,也就是idea.exe的目录下新建一个idea.bat,使用txt文本文件改下后缀名即可,编辑输入以下信息: runas /user:root /savecred idea.exe 相当于使用前面新建的windows账号为root的用户,使用root身份执行idea.exe程序,此时会提示输入root账号的密码,如果idea在root账号下曾经开发过其他的内容,IDEA会使用root下的配置. 搭建 前面已经新建了Test

    hadoop, mapreduce, ideaApril 14

  • MongoDB GroupBy操作, 结果集大小限制问题.

    出现问题 公司是做互联网广告投放的,需要统计广告展现量在前五百的域名.最简单粗暴的做法就是group by,根据url分组,然后再sort一下就搞定晒!结果问题就出现了. 如下统计的2015-02-28当日22时的日志,文档数量:904405. db['log.2015-02-28_22'].group({ key : {domainUrl:1}, initial : {count:0}, reduce : function Reduce(doc, out) { out.count++; } 报

    mapreduce, GROUP, mongdbMarch 19

  • Hadoop 中的两表join

    作为数据分析中经常进行的join 操作,传统DBMS 数据库已经将各种算法优化到了极致,而对于hadoop 使用的mapreduce 所进行的join 操作,去年开始也是有各种不同的算法论文出现,讨论各种算法的适用场景和取舍条件,本文讨论hive 中出现的几种join 优化,然后讨论其他算法实现,希望能给使用hadoop 做数据分析的开发人员提供一点帮助. Facebook 今年在yahoo 的hadoop summit 大会上做了一个关于最近两个版本的hive 上所做的一些join 的优化,其

    hadoop, mapreduce, JOINFebruary 6

  • 怎样向妻子解释MapReduce

    昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说.演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈).我成功地向技术听众们(主要是Java程序员,一些Flex程序员和少数的测试员)解释了MapReduce的概念,这让我感到兴奋.在所有辛勤的工作之后,我们在Xebia印度办公室享用了丰盛的晚餐,然后我径直回了家. 回家后,我的妻子(Supriya)问道:"你的会开得怎么样?"我说还不错. 接着她又问我会议是的内容是什么(她不是从事软件或编程领

    mapreduceJanuary 16

  • 2014-11-18--Hadoop的基础学习(五)--编写不同MapReudce程序及其特性(下)
    2014-11-18--Hadoop的基础学习(五)--编写不同MapReudce程序及其特性(下)

    5.Combiner编程 Combiner实质上就是不同上下文的Reducer的功能是差不多的.所以说它本质上就是一个Reducer.每一个map可能会产生大量的输出,combiner的作用就是在map端对输出先做一次合并,以减少传输到reducer的数据量.combiner最基本是实现本地key的归并,combiner具有类似本地的reduce功能.如果不用combiner,那么,所有的结果都是reduce完成,效率会相对低下(会消耗较多的网络IO).使用combiner,先完成的map会在本

    mapreduce, 特性January 13

  • 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南

    (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 为了部署HA集群,应该准备以下事情: namenode服务器: 运行namenode的服务器应该有相同的硬件配置. journalnode服务器:运行的journalnode进程非常轻量,可以部署在其他的服务器上.注意:必须允许至少3个节点.当然可以运行更多,但是必须是奇数个,如3,5,7,9个等等.当运行N个节点时,系统可以容忍至少(N-1)/2个节点失败而不影响正常运行. 在HA集群中,standby状态的

    hdfs, mapreduce, 安装, 配置, 分布式, 高可用, hadoop集群January 8

  • 面试那点事之白话叙说mapreduce计算模型和执行原理
    面试那点事之白话叙说mapreduce计算模型和执行原理

    白话叙说mapreduce计算模型和执行原理 MapReduce是一种分布式计算模型.MR由两个阶段组成:Map和Reduce,一说到分阶段就有先有后,先执行map 在执行reduce.,map就是我们整个计算阶段的起始,reduce呢就是我们整个计算阶段的结束.从这个角度讲我们map的输入就是整个系统的输入,reduce的输出就是整个系统的输出 ,map的输出也就是reduce的输入 这个呢,就他的一前一后的顺序 2.这两个函数的形参是key.value对,表示函数的输入信息. 在我们map中

    mapreduce, 执行原理, 计算模型January 1

  • 面试那点事之 白话理解: MapReduce 详细执行步骤

    MapReduce 详细执行步骤一共有八部,我把他简称为:天龙八部 天龙八部 执行步骤: 1. map任务处理 1.1 读取输入文件内容,解析成key.value对.对输入文件的每一行,解析成key.value对.每一个键值对调用一次map函数. 1.2 写自己的逻辑,对输入的key.value处理,转换成新的key.value输出. 1.3 对输出的key.value进行分区. 白话理解分区:看mapreduce的原理图map输出的这3个分支就代表3个分区,map的输出怎么会输出3个分区呢,他

    mapreduce, 天龙八部, 详细执行步骤January 1

  • MapReduce统计词语出现次数
    MapReduce统计词语出现次数

    晨曦同学(Dota界号称利神)前段时间分享了这样一个问题:如何在一个很大的文件中(该文件包含了中英文)找出出现频率比较高的几个词呢?我们来分析一下.找出现频率比较高的词语,首先要有一个支持中文的分词器(IK,庖丁解牛等等),这个问题不大:分词之后呢就要统计词语出现次数,类似于MapReduce程序中WordCount,这可是学习MapReduce的hello world程序呀,当然很容易搞定:最后还要来个排序,统计完了我们期望出现次数高的词语出现在前面,MapReduce默认就支持排序,也没问题

    mapreduce, 排序, 统计词频December 19

  • Hadoop学习笔记--高级编程
    Hadoop学习笔记--高级编程

    从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成<key, value>. 2.映射(map):根据输入的<key, value>进生处理, 3.合并(combiner):合并中间相两同的key值. 4.分区(Partition):将<key, value>分成N分,分别送到下一环节. 5.化简(Reduce):将中间结果合并,得到最终结果 6.输出(outpu

    mapreduce, hadoop编程November 25

  • 2014-11-12--Hadoop的基础学习(三)--Hadoop中MapReduce框架入门
    2014-11-12--Hadoop的基础学习(三)--Hadoop中MapReduce框架入门

    1.MapReduce的简单概念 百度百科:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性.它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上. 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射

    mapreduce, yarn, Hadoop2.XNovember 16

  • MapReduce Design Patterns

    1 (总计)Summarization Patterns 1.1(数字统计)Numerical Summarizations 这个算是Built-in的,因为这就是MapReduce的模式. 相当于SQL语句里边Count/Max,WordCount也是这个的实现. 1.2(反向索引)Inverted Index Summarizations 这个看着名字很玄,其实感觉算不上模式,只能算是一种应用,并没有涉及到MapReduce的设计.其核心实质是对listof(V3)的索引处理,这是V3是一个

    mapreduce, Design, PatternsNovember 11

  • Spark入门

    为公司培训课程准备的资料,拿出来分享了. 完整PPT 点击我 ,动手实验 try. 预览如下:

    scala, hadoop, mapreduce, 大数据, SparkNovember 5

  • Hadoop Outline Part 6 (MapReduce v1 vs v2 (@YARN))
    Hadoop Outline Part 6 (MapReduce v1 vs v2 (@YARN))

    MapReduce v1 MRv1 Question? How to decide how many splits in total? What's the split information format? MapReduce v2 (YARN) MapReduce on YARN The client, which submits the MapReduce job. The YARN resource manager, which coordinates the allocation of

    hadoop, mapreduce, Part, outline, v2(YARN))September 28

  • MapReduce例程-列出工资比上司高的员工姓名及其工资

    数据 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28

    mapreduceAugust 31

  • MapReduce例程-求各个部门的总工资

    数据 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28

    mapreduceAugust 31

  • ZeroCopyLiteralByteString cannot access superclass

    问题描述 在HBase上运行MapReduce作业时,报如下异常:IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString cannot access its superclass com.google.protobuf.LiteralByteString 使用HBase环境如下:CDH5.0.1, HBase版本:0.96.1 问题原因 This isssue occurs because of an optim

    hbase, superclass, mapreduce, HBaseZeroCopyByteString, LiteralByteStringJuly 16

  • MapReduce: 提高MapReduce性能的七点建议

    Cloudera提供给客户的服务内容之一就是调整和优化MapReduce job执行性能.MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用户的代码,这样导致没有一个快速有效的规则来实现优化 代码性能的目的.在我看来,调整cluster或job的运行更像一个医生对待病人一样,找出关键的"症状",对于不同的症状有不同的诊断和处理方式. 在医学领域,没有什么可以代替一位经验丰富的医生:在复杂的分布式系统上,这个道理依然正确-有经验的用户和操作者在面对很多常见问题

    mapreduce, 提高MapReduce性能的七点建议July 11

  • CDH5: 使用parcels配置lzo
    CDH5: 使用parcels配置lzo

    一.Parcel 部署步骤 1 下载: 首先需要下载 Parcel.下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中. 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩. 3 激活: 分配后,激活 Parcel 为群集重启后使用做准备.激活前可能还需要升级. 二.lzo parcels本地化 1.到http://archive-primary.cloudera.com/gplextras/parcels/latest/下载最新lzo pa

    hive, mapreduce, parcels, lzo, 配置, cdh5July 1

  • Hadoop CDH4.5 MapReduce MRv1 HA方案实战
    Hadoop CDH4.5 MapReduce MRv1 HA方案实战

    上篇实战了HDFS的HA方案,这篇来实战一下MRv1的HA方案,还是基于上篇的环境来实战,原有的HDFS HA环境不做拆除.因为Jobtracker的HA和non-HA架构不能同时存在于一个集群中,所以如果要实施Jobtracker HA,则需要卸载non-HA的Jobtracker的配置. CDH4.5 Hadoop集群信息如下 192.168.1.10 U-1 Active-NameNode zkfc JobtrackerHA mapreduce-zkfc 192.168.1.20 U-2

    mapreduce, MRv1, HA方案May 22

  • mongodb的mapreduce使用

    先插入数据,插入的数据如下 > db.books.find() { "_id" : ObjectId("533ee1e8634249165a819cd0"), "name" : "apue", "pagenum" : 1023 } { "_id" : ObjectId("533ee273634249165a819cd1"), "name" :

    mapreduce, MongoDBApril 5

  • HBase常用功能和HBase+MapReduce使用总结

    1.HBase如果加了列限定,如果该列不存在时返回的结果为empty. 看下面的代码: Get get = new Get(Bytes.toBytes("100")); get.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name")); 这里加入了列限定,也就是只返回列族info下面的name字段.但是如果name字段根本不存在,返回的Result在调用result.isEmpty()时则返回

    hbase, hadoop, mapreduceDecember 5

  • mapreduce中counter的使用

    MapReduce Counter为提供我们一个窗口:观察MapReduce job运行期的各种细节数据.MapReduce自带了许多默认Counter. Counter有"组group"的概念,用于表示逻辑上相同范围的所有数值.MapReduce job提供的默认Counter分为三个组 Map-Reduce Frameword Map input records,Map skipped records,Map input bytes,Map output records,Map o

    enum, mapreduce, counter, countersNovember 29

  • 如何在eclipse调试mapreduce程序

    如何在eclipse或myeclipse调试mapreduce程序,这个可能是初学mr程序者碰到的一个难题 在hadoop1.2.1后,在下载的源代码中找不到hadoop-eclipse-plugin相关的jar或源代码. 其实hadoop目前使用maven进行源代码的管理与调试,可以参考文献: http://blog.cloudera.com/blog/2012/08/developing-cdh-applications-with-maven-and-eclipse/ A sample PO

    eclipse, pom, debug, maven, mapreduceNovember 26

  • 视频专辑:炼数成金 hadoop 视频教程

    专辑:炼数成金 hadoop 视频教程 简介:hadoop入门级经典课程,炼数成金-hadoop 1 hadoop01a_Hadoop的源起与体系介绍 2013-10-22 16:36 | 播放(59) | 评论(0) | 时长:32:18 2 hadoop01b_Hadoop的源起与体系介绍 2013-10-22 16:36 | 播放(33) | 评论(0) | 时长:36:27 3 hadoop01c_Hadoop的源起与体系介绍 2013-10-22 16:37 | 播放(9) | 评论(

    hbase, hadoop, hdfs, mapreduce, 大数据November 17

  • Hadoop LZO的安装与配置

    Hadoop支持好几种压缩算法,包括: Bzip2 Gzip DEFLATE Hadoop提供这些算法的Java实现,所以可以很方便的通过FileSystem API来进行文件的压缩和解压缩.这些压缩算法都有一个缺陷,那就是文件不能被分片(splittable).这就意味着采用这些算法进行压缩的文件需要读取整个文件才能将文件解压缩.这对MapReduce会产生致命的影响,因为这意味着一个压缩文件必须由一个map来处理.这也正是LZO优越之处,LZO压缩的文件是可分片的(这要感谢Hadoop社区的

    hadoop, mapreduce, 集群October 17

  • Hadoop DBOutputFormat的使用

    最近在研究数据在HDFS和关系型数据库之间的迁移,主要使用了两种方式:一是,按照数据库要求的文件格式生成文件,然后由数据库提供的导入工具进行导入:二是采用JDBC的方式进行导入.MapReduce默认提供了DBInputFormat和DBOutputFormat,分别用于数据库的读取和数据库的写入.为了使用DBOutputFormat我们需要完成以下工作. 首先,对于每一个数据库表编写对应的bean类,该类需要实现WritableComparable接口和DBWritable接口(如果是DBIn

    hadoop, mapreduce, 集群October 15

  • 利用hadoop mapreduce 做数据排序

    我们的需求是想统计一个文件中用IK分词后每个词出现的次数,然后按照出现的次数降序排列.也就是高频词统计. 由于hadoop在reduce之后就不能对结果做什么了,所以只能分为两个job完成,第一个job统计次数,第二个job对第一个job的结果排序. 第一个job的就是hadoop最简单的例子countwords,我要说的是用hadoop对结果排序. 假设第一个job的结果输出如下: part-r-0000文件内容: a 5 b 4 c 74 d 78 e 1 r 64 f 4 要做的就是按照每

    hadoop, mapreduce, 排序, 自定义分区PartitionerOctober 11

  • MapReduce作业提交源码分析

    MapReduce作业提交源码分析 我们在编写MapReduce程序的时候,首先需要编写Map函数和Reduce函数.完成mapper和reducer的编写后,进行Job的配置:Job配置完成后,调用Job.submit()方法完成作业的提交.那我们思考一下,Job最终如何完成作业(job)的提交呢?粗略想一下,Job必然需要通过某种方式连接到JobTracker,因为只有这样才能将job提交到JobTracker上进行调度执行.还需要考虑一下,我们自己编写的mapper和reducer,即Ja

    hadoop, mapreduce, 集群September 25

  • Hadoop RPC整个使用流程--以DataNode向NameNode注册为例

    Hadoop RPC整个使用流程--以DataNode向NameNode注册为例 在HDFS实现过程中DataNode class中有一个成员变量namenode,其类型是DatanodeProtocol.namenode可以看作是远程NameNode服务器的一个代理,因为NameNode本身也是DatanodeProtocol接口的具体实现:DataNode通过调用namenode对象的方法与远程NameNode进行交互. 下面看一下namenode变量在DataNode当中是如何初始化的:

    hadoop, mapreduce, 集群September 25

  • HDFS源码分析--格式化

    HDFS NameNode保存了两个元数据文件fsimage和edits.如果想要对文件系统进行格式化,应该进行哪些操作呢?按照我们的理解,首先要把已有的fsimage和edits全部删除:其次,重新建立新的fsimage和edits:最后,通知所有的datanode,命令其删除相应的数据.通过阅读HDFS的源程序,我们得知,前两部是HDFS已经实现的:但是,其好像没有通知datanode进行数据删除.为什么会这样,需要进一步阅读程序.下面看一下,HDFS具体是如何进行格式化的. 我们可以看到,

    hadoop, mapreduce, 集群September 25

  • ZooKeeper基本理解
    ZooKeeper基本理解

    ZooKeeper主要是为分布式应用提供协同服务(A Distributed Coordination Service for Deistributed Applications).我们可以考虑一下,如果让我们完成一个协同服务的设计应该如何完成呢?是不是可以有这么一个思路:可以先设定一个协同服务器,被协同的子节点定期的向该服务器汇报该节点的状态:当其他节点想要查询其他节点的状态时可以向协同服务器去查询,或者当某些事情发生时协同服务器主动去通知感兴趣的被协同节点.以我本身的理解,ZooKeeper

    hadoop, mapreduce, 集群September 25

  • Hadoop源码分析HDFS Client向HDFS写入数据的过程解析

    Client以数据块(Block)为单位进行数据存储.按照我们一般的理解,Client向HDFS写入数据,首先需要向NameNode申请Block:申请Block完成后,申请DataNode(包括备份存储的DataNode):二者完成后,Clent进行与DataNode之间的数据存储. 我们知道NameNode之中维护两张非常重要的表,一张是filename→blocks的映射:另外一张是block→machinelist的映射.如果是我进行设计,这两张表都可以在申请的时候完成记录.HDFS在在

    hadoop, mapreduce, 集群September 25

  • Hadoop源码分析HDFS ClientProtocol--getBlockLocations

    Class ClientProtocol是HDFS客户端与NameNode之间的接口.Client通过调用ClientProtocol的方法完成与NameNode之间的交互.本文分析方法getBlockLocations.该方法的方法声明如下: public LocatedBlocks getBlockLocations(String src,long offset, long length)throws IOException 该方法用于获取一个给定文件的偏移和数据长度的所有数据库块(bloc

    hadoop, mapreduce, 集群September 25

  • Hadoop源码分析FSNamesystem几个重要的成员变量

    FSNamesystem中有几个非常重要的变量,对于理解NameNode的实现具有重要意义.下面,我们看一下这几个变量和他的作用. lblocksMap:blocksMap是类BlocksMap的实例,其代表了Block→{INode.datanodes}的映射.具体代表了每一个Block在哪一个DataNode上存储. datanodeMap:datanodeMap是类NavigableMap的实例,代表了datanode→block之间的映射关系.该map的key是StorageID,val

    hadoop, mapreduce, 集群September 25

  • Hadoop源码分析HDFS ClientProtocol--create

    ClientProtocol负责完成HDFS Client与NameNode之间的交互.本文主要分析一下create方法的具体实现.Create方法在namespace中创建一条entry,实际就是在命名空间中创建一个文件.该方法在命名空间中创建的文件是一个空文件,并且,一旦创建完成,该文件对于其他客户端就是可见的和可用的(visible and available). 首先让我们思考一下,根据我们对HDFS和其他文件系统的了解,在HDFS中创建一个文件应该经历怎样的过程呢?下面是我自己的理解:

    hadoop, mapreduce, 集群September 25

  • Hadoop源码分析 HDFS ClientProtocol--addBlock

    addBlock()负责分配一个新的block以及该block备份存储的datanode.addBlock函数声明如下: public LocatedBlock addBlock(String src, String clientName,DatanodeInfo[] excludedNodes) 其中src代表需要写入新block的文件:clientName代表写入该block的client.excludedNodes代表该block不能存储的datanode. 首先让我们思考一下addBlo

    hadoop, mapreduce, 集群September 25

  • Hadoop集群提交作业问题总结

    我们知道可以在本地节点向远程集群提交作业.为了实现远程作业的提交:首先,要确保本地机器的用户名需要跟远程集群的用户名一致(在实验环境中,集群的用户名是hadoop,因此要在本地机器上创建一个hadoop用户). 其次,要确保本地机器上的用户对hadoop执行文件和配置文件具备相应的权限(在实验环境中,hadoop用户需要对hadoop安装文件具有执行权限:需要对hadoop配置文件具备读权限:需要对作业的jar文件具备执行权限等). 再次,本地机器的hadoop配置文件需要与集群的配置文件一致.

    hadoop, mapreduce, 集群September 25

  • HDFS DatanodeProtocol--register

    每当Datanode启动的时候,Datanode需要向Namenode注册自己.对于Datanode来说,注册的目的有两个:1)报告Datanode当前正在提供的存储(storage):2)从Namenode获取registrationID用来标识当前的Datanode.对于Namenode来说:Namenode通过注册来区分Datanode是不是提供一个新的storage(这个新的storage Namenode是不知道的,storage是通过Namenode分配唯一的storageID来进行

    hadoop, mapreduce, 集群September 25

  • HBase基本原理

    HBase以表的形式存储数据.与关系型数据库一样,在HBase中,表由行和列组成.与关系型数据库不同的是,HBase还有"列簇"(column family)的概念.一个表有若干"列簇"组成,每一个"列簇"包含若干列(column).与此同时,表中的每一个cell都是有时间戳的.因此我们可以把其想象成一个三维数据库.除了行和列之外,还有一个时间维度,每一个单元格(cell)的不同版本都被保存. 与关系型数据库类似,在HBase中每一行都有一个主键

    hbase, hadoop, mapreduce, 集群September 25

  • HDFS DatanodeProtocol--sendHeartbeat

    Datanode周期性的向Namenode发送心跳信息,心跳信息的发送通过sendHeartbeat方法来完成.sendHeartbeat向Namenode表明Datanode依然存活并且完好.sendHeartbeat还向Namenode传输一些Datanode的状态信息,包括Datanode的容量.Datanode DFS消耗的容量.Datanode还可以使用的容量等.最后Namenode向Datanode返回一系列的DatanodeCommand以控制Datanode执行一些操作.Data

    hadoop, mapreduce, 集群September 25

  • HBase每一次put内部存储的设计

    在HBase中,每一次put操作都会在HBase内部生成一个Put对象.Put类被用来插入一行.在Put类内部,最终的存储单元是(rowkey,columnFamily,columnQualifier,timestamp,value).在HBase中有一个KeyValue类,KeyValue类代表了(rowkey,columnFamily,columnQualifier,timestamp,value)存储单元.Put类中有一个Map实例familyMap.familyMap的key是Colum

    hbase, hadoop, mapreduce, 集群September 25

  • HDFS Datanode与Client之间的数据传输

    在HDFS之中,Datanode与Namenode之间是通过RPC进行通信的:在Datanode和Client之间的通信通过两种方式来完成,一种是通过RPC(主要有三个方法recoverBlock.getBlockInfo.getBlockLocalPathInfo),另外一种方式是通过普通的socket.Client与Datanode之间的数据传输就是通过普通的socket来进行传输的. 在类Datanode中包含DataXceiverServer的一个实例,该实例实现ServerSocket

    hadoop, mapreduce, 集群September 25

  • HBase Key-Value的组成

    在HBase中,Key-Value是最小的存储单元.在这个存储单元中,每一个Key-Value对应一个列.Value对应于一个列的列值.在HBase中Key-Value都是以Byte数组的形式存储的.下面我们看一下Key-Value的具体存储格式: KeyLength ValueLength RowKeyLength RowKey ColumnFamilyLength ColumnFamily Qualifier TimeStamp Type Value 在HBase中,Key-Value存储是

    hbase, hadoop, mapreduce, 集群September 25

  • HDFS Client如何从Datanode读取block
    HDFS Client如何从Datanode读取block

    Datanode中包含DataXceiverServer.DataXceiverServer是一个socket server,负责接收client发起的socket连接.DataXceiverServer接收到一个socket连接后,启动一个线程DataXceiver,由DataXceiver具体负责该scoket的处理.DataXceiver从client读取client想要进行操作的操作码.如果操作码是OP_READ_BLOCK,则DataXceiver负责读取该block,并将其发送给cl

    hadoop, mapreduce, 集群September 25

  • Hive UDTF and LateralView

    UDTF在使用过程中的一些限制: 1. 在select语句中不能有其他表达式,例如SELECT pageid, explode(adid_list ) AS myCol. . . 这种语句是不支持的 2. UDTF不能嵌套使用,例如:SELECT explode(explode(adid_list )) AS myCol. . . 这种语句也是不支持的 3. GROUP BY .CLUST ER BY.DI ST RI BUT E BY和SORT BY是不支持的,例如:SELECT explod

    hadoop, hive, mapreduce, 集群September 25

  • Hadoop字符转码的实现

    Hadoop默认使用的是UTF-8编码方式.在Hadoop使用过程中,需要将其他的编码方式进行转码以防止乱码的出现. 在Hadoop中出现乱码的情景是TextFileInputFormat,即处理Text的情景.在这种情况下,Value一般是Text.为了实现转码我们看一下Text的实现.在Text中包含了源数据的byte数组以及其中数据的长度,这是原始数据,不经过编码的.在Text类中包含了CharsetEncoder和CharsetDecoder两个变量,这两个变量都是UTF-8编码.当把b

    hadoop, mapreduce, 集群September 25

  • 自定义实现Hadoop Key-Value

    自定义实现Value: 如果需要自定义一个一个Value类型,那么需要实现Hadoop预定义接口org.apache.hadoop.io.Writable.Writable包含两个重要的方法:readFields和write,主要用于数据的序列化和反序列化.对于Writable的子类的成员变量必须是Java的基本类型或者是其他实现了Writable接口的类型.如果是Java的基本类型则可以使用DataInput的相应方法进行成员变量的读写,例如: int responseSize = in.re

    hadoop, mapreduce, 集群September 25