hadoop
clamaa
这个作者很懒,什么都没留下…
展开
-
Hadoop单机环境搭建整体流程
1. Ubuntu环境安装和基本配置 本例程中在MAC上安装使用的虚拟机Ubuntu系统(64位,desktop); 基本配置考虑到以后涉及到hadoop的应用便于权限的管理,特别地创建一个hadoop用户,user和group名称均为hadoop。首先创建hadoop用户组: sudo addgroup hadoop 在刚才创建的分组中创建hadoop用原创 2017-04-11 09:51:17 · 548 阅读 · 0 评论 -
项目中Map端内存占用的分析
最近在项目中开展重构活动,对Map端内存尽量要省一些,当前的系统中Map端内存最高占用大概3G左右(设置成2G时会导致Java Heap OOM)。虽然个人觉得占用不算多,但是显然这样的结果想要试图去说服一些对内存占用非常挑剔的C++程序员们理由还是不够,于是便通过一定的方式对内存的占用进行了分析,刨根问底。 关于运行时内存占用可以参考文章:http://brandnewuser.itey原创 2017-04-11 09:55:01 · 2758 阅读 · 0 评论 -
一次hadoop集群机器加内存的运维过程
由于前期的集群规划问题,导致当前Hadoop集群中的硬件并没有完全利用起来。当前机器的内存CPU比例为2G:1core,但一般的MapReduce任务(数据量处理比较大,逻辑较复杂)的MR两端都需要将近4G的内存,于是原有的瓶颈就在于内存不够大,周末就和运维部门一起执行当前集群的机器加内存操作(我在这边主要是打酱油+学习,运维方面经验欠缺)。 此次加内存是针对当前所有的DataNode节点原创 2017-04-11 09:55:13 · 2126 阅读 · 0 评论 -
hadoop map端的超时参数
目前集群上某台机器卡住导致出现大量的Map端任务FAIL,当定位到具体的机器上时,无法ssh或进去后terminal中无响应,退出的相关信息如下:[hadoop@xxx ~]$ Received disconnect from xxx: Timeout, your session not responding. 任务执行失败的错误日志:AttemptID:attempt原创 2017-04-11 09:55:24 · 2873 阅读 · 0 评论 -
hadoop中使用hprof工具进行性能分析
在编写完成MapReduce程序之后,调优就成为了一个大问题。如何使用现有工具快速地分析出任务的性能? 对于本地的java应用程序,进行分析可能稍微简单,但是hadoop是一个分布式框架,MapReduce任务可能在集群中的任意机器上被调度运行。而且本地Job运行器是一个与集群差异非常大的环境,数据流的形式也不同,应该在实际集群上对比新的执行时间和旧的执行时间。 hadoop的任务原创 2017-04-11 09:55:32 · 1534 阅读 · 0 评论 -
hadoop从调整GC到关键Counter计算原理分析
hadoop集群中发现使用Parallel Scavenge+Parallel Old收集器组合进行垃圾收集(这也是server端jvm默认的GC方式)时CPU占用可能会非常高,偶尔会出现爆满的状态,考虑可能是由于当时程序在执行GC导致的,而且很可能是由于并行GC导致的,我们根据服务器启动的Java进程查看一下当前使用的是哪种GC方式: $ jinfo -flag "GC方式" jvm原创 2017-04-11 09:55:40 · 1097 阅读 · 0 评论 -
hadoop map任务Combiner被调用的源码逻辑简要分析
从MapTask类中分析下去,看一下map任务是如何被调用并执行的。 入口方法是MapTask的run方法,看一下run方法的相关介绍: org.apache.hadoop.mapred.Taskpublic abstract void run(JobConf job, TaskUmbilicalProtocol umbi原创 2017-04-11 09:55:51 · 486 阅读 · 0 评论 -
MapReduce启动的Map/Reduce子任务简要分析
对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程。 首先,对于Map/Reduce端启动的任务,都是通过一些参数来控制java opts的,mapreduce.map.java.opts,mapreduce.reduce.java.opts,这些参数原创 2017-04-11 09:56:54 · 993 阅读 · 0 评论 -
Hadoop MapReduce任务的启动分析
正常情况下,我们都是启动Hadoop任务的方式大概就是通过hadoop jar命令(或者写在shell中),事实上运行的hadoop就是一个包装的.sh,下面就是其中的最后一行,表示在其中执行一个java命令,调用hadoop的一些主类,同时配置一些hadoop的相关CLASSPATH,OPTS等选项: exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS原创 2017-04-11 09:57:47 · 417 阅读 · 0 评论 -
hadoop Shuffle Error OOM错误分析和解决
在执行Reduce Shuffle的过程中,偶尔会遇到Shuffle Error,但是重启任务之后,Shuffle Error会消失,当然这只是在某些特定情况下才会报出来的错误。虽然在每次执行很短的时间报出这个错误,但是如果单个Reducer的错误数量超出maxAttempt,就会导致整个任务失败。 Error: org.apache.hadoop.mapreduce.task原创 2017-04-11 09:54:54 · 887 阅读 · 0 评论 -
项目中Map端数据处理不均匀性分析
Map任务的不均匀性 最近发现Map端数据越来越不均匀,而处理输入的数据,写到本地磁盘的数据量都差不多,我们随便拿出来两个attempt任务(当前map数量为64个),33和45,33的counter: 下面是000045的Counter数据 可以看出Counter中的数据也是差不多,但是CPU时间以及GC时间相差比较大(实际上以ms为单位,也就相差不太大),CPU时原创 2017-04-11 09:54:39 · 696 阅读 · 0 评论 -
hadoop集群调优-OS和文件系统部分
OS and File System根据Dell(因为我们的硬件采用dell的方案)关于hadoop调优的相关说明,改变几个Linux的默认设置,Hadoop的性能能够增长大概15%。 open file descriptors and files文件描述符是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一原创 2017-04-11 09:51:44 · 266 阅读 · 0 评论 -
Hadoop MapReduce 初步学习总结
在Hadoop中一个作业被提交后,其后具体的执行流程要经历Map任务的提交中间结果处理,Reduce任务的分配和执行直至完成这些过程,下面就是MapReduce中作业详细的执行流程图(摘自《Hadoop实战》)。 在整个过程中,客户端中,编写MapReduce代码,配置并提交作业;JobTracker中负责初始化作业,分配作业,与TaskTracker进行通信,协调整个作业的运原创 2017-04-11 09:51:51 · 394 阅读 · 0 评论 -
hadoop集群调优-hadoop settings and MapReduce
Hadoop Settings由于Hadoop节点的系统配置,一些hadoop的设置可以减少运行系统中的瓶颈。首先,提高Java运行时的堆内存容量,也要和系统中的整体内存容量相关;其次,保持hadoop中派生的task数量与处理器数量相关。 一个比较好的规则是一个Reducer或两个Mapper分配一个处理器;如果系统拥有足够多的内存容量,设置Java堆的最大大小为1GB或更大。此外,原创 2017-04-11 09:52:37 · 406 阅读 · 0 评论 -
Hadoop Map/Reduce的工作流
问题描述我们的数据分析平台是单一的Map/Reduce过程,由于半年来不断地增加需求,导致了问题已经不是那么地简单,特别是在Reduce阶段,一些大对象会常驻内存。因此越来越顶不住压力了,当前内存问题已经是最大的问题,每个Map占用5G,每个Reduce占用9G!直接导致当数据分析平台运行时,集群处于资源匮乏状态。 因此,在不改变业务数据计算的条件下,将单一的Map/Reduce过程分原创 2017-04-11 09:53:28 · 294 阅读 · 0 评论 -
hadoop中的一次集群任务执行超时问题查找过程
问题背景 本次进行一个项目的重构,在某些活动数据量比较大的情况下,会偶尔出现1200s超时的情况,如下: AttemptID:attempt_1410771599055_11709_m_000033_0 Timed out after 1200 secs 而hadoop会不断启动备份任务进行重试,重试也许成功,但失败的概率还是比较大: 经过分析,had原创 2017-04-11 09:53:54 · 2283 阅读 · 0 评论 -
MapReduce编程模型简介和总结
本文是董西成《Hadoop技术内幕》一书的读书总结。 MapReduce应用广泛的原因之一就是其易用性,提供了一个高度抽象化而变得非常简单的编程模型,它是在总结大量应用的共同特点的基础上抽象出来的分布式计算框架,在其编程模型中,任务可以被分解成相互独立的子问题。MapReduce编程模型给出了分布式编程方法的5个步骤:迭代,遍历输入数据,将其解析成key/value对;原创 2017-04-11 09:54:02 · 1800 阅读 · 0 评论 -
MapReduce项目中的一个JVM错误问题分析和解决
最近一周都在查项目的各种问题,由于对原有的一个MapReduce分析数据的项目进行重构,减少了运行时的使用资源,但是重构完成后,在Reduce端总是不定时地抛出JVM的相关错误,非常随机,没有发现有什么特殊的规律性。问题在Reduce的控制台显示信息: Exception from container-launch: org.apache.hadoop.util.Shell$ExitC原创 2017-04-11 09:54:20 · 469 阅读 · 0 评论 -
《Hadoop技术内幕》读书笔记——Task运行过程分析
本文是董西成的Hadoop技术内幕一书的读书章节总结。 第八章 Task运行过程分析 所有Task需要周期性地向TaskTracker汇报最新进度和计数器值,而这正是由Reporter组件实现的,其中Reporter汇报的信息中包含两个部分:任务执行进度以及任务计数器值。任务执行进度hadoop采用简单的线性模型计算每个阶段的进度值,对于Map Task而言,作为一个大阶段不再分解原创 2017-04-11 09:54:31 · 391 阅读 · 0 评论 -
Java程序中不通过hadoop jar的方式访问hdfs
一般情况下,我们使用Java访问hadoop distributed file system(hdfs)使用hadoop的相应api,添加以下的pom.xml依赖(这里以hadoop2.2.0版本为例): org.apache.hadoop hadoop-common 2.2.0 org.apache.hadoop hadoop-原创 2017-04-11 09:58:06 · 1488 阅读 · 0 评论