
Hadoop源码解读与原理剖析
文章平均质量分 82
通过对Hadoop进行测试和实验,然后结合对相关代码的分析和总结,最后得出Hadoop各个配置参数发挥作用的实现及其深层次原理。本专栏目前基于Hadoop2.6.0版本展开。
泰山不老生
耿嘉安,15年IT经验。《深入理解Spark》与《Spark内核设计的艺术》两书的作者。Apache Spark Contributor和MongoDB Contributor。曾就职于阿里巴巴,基于ODPS构建大数据商业解决方案——御膳房。曾负责艺龙大数据平台的架构工作。现在负责360对于Spark的运维、调优、扩展、开发等工作。在大量的工作实践中,对J2EE、JVM、Tomcat、Spring、Hadoop、Spark、MySQL、Redis、Zookeeper都有深入研究。早期从事J2EE企业级应用开发,对Java相关技术有独到见解。业余喜欢研究中国古代历史,古诗词,旅游,足球等。
展开
-
记Hadoop2.5.0线上mapreduce任务执行map任务划分的一次问题解决
近日在线上发现有些mapreduce作业的执行时间很长,我们需要解决这个问题。输入文件的大小是5G,采用了lzo压缩,整个集群的默认block大小是128M。本文将详细描述这次线上问题的排查过程。原创 2016-07-14 13:31:59 · 14111 阅读 · 2 评论 -
Hadoop2.6.0运行mapreduce之推断(speculative)执行(下)
前言在《Hadoop2.6.0运行mapreduce之推断(speculative)执行(上)》一文中对推断执行技术的背景进行了介绍,并且在Hadoop集群上做了一些测试以验证mapreduce框架的推断执行。最后还从源码分析的角度解读了DefaultSpeculator的初始化和启动过程,其中涉及DefaultSpeculator的实例化、LegacyTaskRuntimeEstimator的实原创 2016-05-19 10:00:07 · 11398 阅读 · 0 评论 -
Hadoop2.6.0运行mapreduce之推断(speculative)执行(上)
前言当一个应用向YARN集群提交作业后,此作业的多个任务由于负载不均衡、资源分布不均等原因都会导致各个任务运行完成的时间不一致,甚至会出现一个任务明显慢于同一作业的其它任务的情况。如果对这种情况不加优化,最慢的任务最终会拖慢整个作业的整体执行进度。好在mapreduce框架提供了任务推断执行机制,当有必要时就启动一个备份任务。最终会采用备份任务和原任务中率先执行完的结果作为最终结果。由于具体分析推原创 2016-05-12 14:39:44 · 23976 阅读 · 0 评论 -
Hadoop2.6.0运行mapreduce之Uber模式验证
在有些情况下,运行于Hadoop集群上的一些mapreduce作业本身的数据量并不是很大,如果此时的任务分片很多,那么为每个map任务或者reduce任务频繁创建Container,势必会增加Hadoop集群的资源消耗,并且因为创建分配Container本身的开销,还会增加这些任务的运行时延。如果能将这些小任务都放入少量的Container中执行,将会解决这些问题。原创 2016-05-05 14:55:38 · 25680 阅读 · 2 评论 -
Hadoop2.6.0中YARN底层状态机实现分析
Hadoop2.x.x版本的底层实现中作了很多优化:用状态机对各种对象生命周期和状态转移进行管理;采用事件机制避免线程同步与阻塞;采用Protocol Buffers优化RPC性能;采用Apache Avro优化日志等。本文主要针对YARN中状态机的实现进行分析,在这个过程中,会捎带一些事件的内容。原创 2016-04-29 08:30:19 · 25008 阅读 · 2 评论 -
Hadoop2.6.0的事件分类与实现
说实在的,在阅读Hadoop YARN的源码之前,我对于java枚举的使用相形见绌。YARN中实现的事件在可读性、可维护性、可扩展性方面的工作都值得借鉴。原创 2016-04-26 10:45:05 · 13280 阅读 · 2 评论 -
Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)
前言首先确保已经搭建好Hadoop集群环境,可以参考《Linux下Hadoop集群环境的搭建》一文的内容。我在测试mapreduce任务时,发现相比于使用Job.setNumReduceTasks(int)控制reduce任务数量而言,控制map任务数量一直是一个困扰我的问题。好在经过很多摸索与实验,终于梳理出来,希望对在工作中进行Hadoop进行性能调优的新人们有个借鉴。本文只针对FileI...原创 2016-04-12 13:42:17 · 18674 阅读 · 0 评论 -
Hadoop2.6.0配置参数查看小工具
使用Hadoop进行离线分析或者数据挖掘的工程师,经常会需要对Hadoop集群或者mapreduce作业进行性能调优。性能调优的前提是需要能准确知道目前针对Hadoop集群或者mapreduce作业配置的参数。本文将针对这一需求,基于Hadoop开发一个简单实用的工具查询查看各种参数。原创 2016-04-21 15:31:50 · 17682 阅读 · 0 评论 -
Hadoop2.6.0子项目hadoop-mapreduce-examples的简单介绍
学习Hadoop的同学们,一定知道如果运行Hadoop自带的各种例子。hadoop-mapreduce-examples项目中还提供了这些例子,本文就其中例子的执行方式进行分析。看看它能否让我们学习mapreduce编程变得更加容易。原创 2016-04-18 11:41:44 · 19225 阅读 · 0 评论 -
Linux下Hadoop2.6.0集群环境的搭建
本文旨在提供最基本的,可以用于在生产环境进行Hadoop、HDFS、Hbase分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用。原创 2016-04-11 11:50:43 · 20948 阅读 · 18 评论