随笔分类 - Hadoop
-
MapReduce扩展:应用程序如何运行于Hadoop Yarn之上
摘要:1. 背景 “应用程序运行于Hadoop Yarn之上”的需求来源于微博运维数据平台中的调度系统,即调度系统中的任务需要运行于Hadoop Yarn之上。这里的应用程序可以简单理解为一个普通的进程(这里特指Java进程),调度系统中的任务执行实际也是一个进程的运行过程,这里我们不讨论为什么调度系统中 阅读全文
-
HDFS Block Replica Placement实现原理
摘要:1. 背景 Block Replica Placement——数据块复本存储策略,HDFS Namenode以此为依据选取数据块复本应存储至哪些HDFS Datanodes,策略的设计需要权衡以下三个因素: 可靠性 写带宽 读带宽 注:本文均以数据块复本因子为3来讨论。 我们以两个比较极端的例子来说 阅读全文
-
实时计算平台中的弹性集群资源管理
摘要:本文系微博运维数据平台(DIP)在实时计算平台的研发过程中集群资源管理方面的一些经验总结和运用,主要关注以下几个问题: 异构资源如何整合? 实时计算应用之间的物理资源如何隔离? 集群资源利用率如何提高? 集群运维成本如何降低? 1. 背景 这是我们初期的一个实时计算架构,大致划分为三个部分: (1) 阅读全文
-
Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案
摘要:<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> 阅读全文
-
Camus导入中文乱码问题(源码修改、编译、部署、任务启动)
摘要:Camus使用过程中业务方反映从Kafka导入至HDFS中的数据有中文乱码问题,且业务方确认写入的数据编码为UTF-8,开始跟进。问题重现:(1)编写代码将带有中文的字符串以编码UTF-8写入Kafka的某个Topic;(2)将该Topic的数据通过Camus导入HDFS;(3)查看HDFS中导入的... 阅读全文
-
DIP开放计算平台介绍
摘要:随着平台业务的发展,依赖于Portal(Web)构建的服务架构已逐渐不能满足现有的一些复杂需求(如:使用Hive SQL无法完成计算逻辑),而且对于一些具备编程能力的程序员或数据分析师而言,能够自主控制任务的诉求越来越多,这就要求我们必须把平台的计算能力开放出去,主要涉及以下三个问题:(1)用户可以... 阅读全文
-
Spark RCFile的那些“坑”
摘要:RCFile在平台的应用场景中多数用于存储需要“长期留存”的数据文件,在我们的实践过程中,RCFile的数据压缩比通常可以达到8 : 1或者10 : 1,特别适用于存储用户通过Hive(MapReduce)分析的结果。目前平台的计算引擎正逐步由Hadoop MapReduce迁移至Spark,存储方... 阅读全文
-
Hadoop RCFile存储格式详解(源码分析、代码示例)
摘要:RCFileRCFile全称Record Columnar File,列式记录文件,是一种类似于SequenceFile的键值对(Key/Value Pairs)数据文件。关键词:Record、Columnar、Key、Value。RCFile的优势在哪里?适用于什么场景?为了让大家有一个感性的认识... 阅读全文
-
由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考
摘要:背景我们使用的HiveServer2的版本为0.13.1-cdh5.3.2,目前的任务使用Hive SQL构建,分为两种类型:手动任务(临时分析需求)、调度任务(常规分析需求),两者均通过我们的Web系统进行提交。以前两种类型的任务都被提交至Yarn中一个名称为“hive”的队列,为了避免两种类型的... 阅读全文
-
Hadoop MapReduce中压缩技术的使用
摘要:CompressionandInputSplits当我们使用压缩数据作为MapReduce的输入时,需要确认数据的压缩格式是否支持切片?假设HDFS中有一个未经压缩的大小为1GB的文本文件,如果HDFS Block大小为128MB,那么这个文件会被HDFS存储为8个Block。当MapReduce ... 阅读全文
-
Hadoop Compression
摘要:文件压缩主要有两方面的好处:一方面节省文件存储空间;另一方面加速网络数据传输或磁盘读写。当处理大规模的数据时这些效果提升更加明显,因此我们需要仔细斟酌压缩在Hadoop环境下的使用。目前已经存在很多压缩格式、工具和算法,各有特点,如下图:说明:a. DEFLATE是一种压缩算法,标准实现是zlib,... 阅读全文
-
Hadoop FileInputFormat实现原理及源码分析
摘要:FileInputFormat(org.apache.hadoop.mapreduce.lib.input.FileInputFormat)是专门针对文件类型的数据源而设计的,也是一个抽象类,它提供两方面的作用:(1)定义Job输入文件的静态方法;(2)为输入文件形成切片的通用实现;至于如何将切片中... 阅读全文
-
Hadoop InputFormat
摘要:Hadoop可以处理不同数据格式(数据源)的数据,从文本文件到(非)关系型数据库,这很大程度上得益于Hadoop InputFormat的可扩展性设计,InputFormat层次结构图如下:InputFormat(org.apache.hadoop.mapreduce.InputFormat)被设计... 阅读全文
-
Yarn应用程序运行流程剖析
摘要:Yarn(Yet Another Resource Negotiator)是一个Hadoop集群资源管理系统,Hadoop2时被引入,旨在提高MapReduce的性能,但YARN已足够通用,使得它可以支持其它的分布式应用。Yarn本身提供了一系列API用于用户应用程序与集群资源进行交互,这些API复... 阅读全文
-
Hadoop CombineFileInputFormat实现原理及源码分析
摘要:Hadoop适用于少量的大文件场景,而不是大量的小文件场景(这里的小文件通常指文件大小显著小于HDFS Block Size的文件),其主要原因是因为FileInputFormat在为这些小文件生成切片的时候,会为每一个小文件生成一个切片,如果小文件数目众多,会导致大量的Map Task,每个Map... 阅读全文
-
MapReduce Shuffle And Sort
摘要:引言MapReduce作出保证:进入每个Reducer的数据行都是有序的(根据数据行的键值进行排序)。MapReduce将Mapper的输出进行排序并传递给Reducer作为输入的过程称为Shuffle。在很多场景下,Shuffle是整个MapReduce过程的核心,也是“奇迹”发生的地方,如下图所... 阅读全文
-
Hadoop MapReduce InputFormat/OutputFormat
摘要:介绍MapReduce InputFormat、OutputFormat以及相关的抽象类,源码的注释已经很详尽,因此不作任何额外说明。 阅读全文
-
MapReduce执行过程源码分析(一)——Job任务的提交
摘要:本文Job任务的提交指的是MapReduce编程时通过Job waitForCompletion执行任务的流程,没有涉及到Job任务的具体调度,同时文中也详细描述了Job任务实际提交之前InputSplit的形成过程。 阅读全文