
hadoop&&storm
clamaa
这个作者很懒,什么都没留下…
展开
-
Hadoop单机环境搭建整体流程
1. Ubuntu环境安装和基本配置 本例程中在MAC上安装使用的虚拟机Ubuntu系统(64位,desktop); 基本配置考虑到以后涉及到hadoop的应用便于权限的管理,特别地创建一个hadoop用户,user和group名称均为hadoop。首先创建hadoop用户组: sudo addgroup hadoop 在刚才创建的分组中创建h...原创 2014-07-01 13:39:28 · 103 阅读 · 0 评论 -
hadoop中的一次集群任务执行超时问题查找过程
问题背景 本次进行一个项目的重构,在某些活动数据量比较大的情况下,会偶尔出现1200s超时的情况,如下: AttemptID:attempt_1410771599055_11709_m_000033_0 Timed out after 1200 secs 而hadoop会不断启动备份任务进行重试,重试也许成功,但失败的概率还是比较大: ...原创 2014-09-28 11:47:05 · 389 阅读 · 0 评论 -
Storm集成Kafka的Trident实现
原本打算将storm直接与flume直连,发现相应组件支持比较弱,topology任务对应的supervisor也不一定在哪个节点上,只能采用统一的分布式消息服务Kafka。 原本打算将结构设置为: 最后结构更改为: 集成Kafka storm中已经写好了KafkaSpout用来接收Kafka中间件上的消息,并发射到Bolt中,只需要依赖 st...2016-07-08 08:48:09 · 182 阅读 · 0 评论 -
Storm存储结果至Redis
原有的事务支持使用MemcachedState来进行,现在需要将其迁移至Redis,并且需要记录所有key值列表,因为在redis中虽然可以使用keys *操作,但不是被推荐的方式,所以把所有结果存在Redis中的一个HASH格式字段中。 关于Redis与Storm集成的相关文档,可以参考: http://storm.apache.org/releases/2.0.0-S...2016-07-14 08:41:43 · 301 阅读 · 0 评论 -
理解Storm Metrics
在hadoop中,存在对应的counter计数器用于记录hadoop map/reduce job任务执行过程中自定义的一些计数器,其中hadoop任务中已经内置了一些计数器,例如CPU时间,GC时间等。 Storm中也存在类似counter的功能,metrics,详细介绍可以参考下面的文档: http://storm.apache.org/releases/1.0.1/Met...2016-07-15 15:15:03 · 168 阅读 · 0 评论 -
Storm环境搭建和基本入门
要学习storm,我们可以先从并发编程网(ifeve.com)的storm入门开始:http://ifeve.com/getting-started-with-stom-index/ Storm集群安装部署 http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-instal...原创 2016-09-24 13:27:35 · 281 阅读 · 0 评论 -
hadoop Shuffle Error OOM错误分析和解决
在执行Reduce Shuffle的过程中,偶尔会遇到Shuffle Error,但是重启任务之后,Shuffle Error会消失,当然这只是在某些特定情况下才会报出来的错误。虽然在每次执行很短的时间报出这个错误,但是如果单个Reducer的错误数量超出maxAttempt,就会导致整个任务失败。 Error: org.apache.hadoop.mapreduce...原创 2014-10-29 11:26:56 · 455 阅读 · 0 评论 -
hadoop map端的超时参数
目前集群上某台机器卡住导致出现大量的Map端任务FAIL,当定位到具体的机器上时,无法ssh或进去后terminal中无响应,退出的相关信息如下:[hadoop@xxx ~]$ Received disconnect from xxx: Timeout, your session not responding. 任务执行失败的错误日志:AttemptID:a...原创 2014-11-15 22:21:47 · 207 阅读 · 0 评论 -
hadoop中使用hprof工具进行性能分析
在编写完成MapReduce程序之后,调优就成为了一个大问题。如何使用现有工具快速地分析出任务的性能? 对于本地的java应用程序,进行分析可能稍微简单,但是hadoop是一个分布式框架,MapReduce任务可能在集群中的任意机器上被调度运行。而且本地Job运行器是一个与集群差异非常大的环境,数据流的形式也不同,应该在实际集群上对比新的执行时间和旧的执行时间。 hadoop的...2014-11-19 17:06:11 · 170 阅读 · 0 评论 -
hadoop从调整GC到关键Counter计算原理分析
hadoop集群中发现使用Parallel Scavenge+Parallel Old收集器组合进行垃圾收集(这也是server端jvm默认的GC方式)时CPU占用可能会非常高,偶尔会出现爆满的状态,考虑可能是由于当时程序在执行GC导致的,而且很可能是由于并行GC导致的,我们根据服务器启动的Java进程查看一下当前使用的是哪种GC方式: $ jinfo -flag "GC方式" ...原创 2014-11-22 14:50:16 · 135 阅读 · 0 评论 -
hadoop map任务Combiner被调用的源码逻辑简要分析
从MapTask类中分析下去,看一下map任务是如何被调用并执行的。 入口方法是MapTask的run方法,看一下run方法的相关介绍: org.apache.hadoop.mapred.Taskpublic abstract void run(JobConf job, TaskUmbilicalProtocol ...2014-11-29 17:09:20 · 152 阅读 · 0 评论 -
Hadoop Map/Reduce的工作流
问题描述我们的数据分析平台是单一的Map/Reduce过程,由于半年来不断地增加需求,导致了问题已经不是那么地简单,特别是在Reduce阶段,一些大对象会常驻内存。因此越来越顶不住压力了,当前内存问题已经是最大的问题,每个Map占用5G,每个Reduce占用9G!直接导致当数据分析平台运行时,集群处于资源匮乏状态。 因此,在不改变业务数据计算的条件下,将单一的Map/Reduce过...原创 2014-09-18 22:07:35 · 154 阅读 · 0 评论 -
Java程序中不通过hadoop jar的方式访问hdfs
一般情况下,我们使用Java访问hadoop distributed file system(hdfs)使用hadoop的相应api,添加以下的pom.xml依赖(这里以hadoop2.2.0版本为例): <dependency> <groupId>org.apache.hadoop</groupId> <art...原创 2015-05-05 21:32:07 · 164 阅读 · 0 评论 -
oozie工作流相关入门整理
Oozie支持工作流,其定义通过将多个Hadoop Job的定义按照一定的顺序组织起来,然后作为一个整体按照既定的路径运行。一个工作流已经定义了,通过启动该工作流Job,就会执行该工作流中包含的多个Hadoop Job,直到完成,这就是工作流Job的生命周期。 通过最简单的一个例子来了解oozie是如何运行的,运行oozie的服务器必须能够访问HDFS,可以提交hadoop ...2015-04-16 11:11:09 · 182 阅读 · 0 评论 -
hadoop集群调优-OS和文件系统部分
OS and File System根据Dell(因为我们的硬件采用dell的方案)关于hadoop调优的相关说明,改变几个Linux的默认设置,Hadoop的性能能够增长大概15%。 open file descriptors and files文件描述符是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返...原创 2014-07-19 15:23:53 · 156 阅读 · 0 评论 -
hive默认分隔符引起的日志分割问题
Hive中的外部表对于Hive中的外部表来说,因为表是外部的,Hive认为其并不拥有这份数据,删除该表并不会真正删除其中的数据,其中的表描述元信息会被删除掉。 对数据进行分区后,对于管理表,可以将其显示在hdfs目录中,但是外部表目录中不会真正存在数据,只能通过show partitions命令来显示外部表的分区信息。 我们的外部表是通过dateid进行的partition...原创 2015-01-10 21:09:02 · 323 阅读 · 0 评论 -
MapReduce启动的Map/Reduce子任务简要分析
对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程。 首先,对于Map/Reduce端启动的任务,都是通过一些参数来控制java opts的,mapreduce.map.java.opts,mapreduce.reduce.java.opts...原创 2015-01-10 21:19:58 · 209 阅读 · 0 评论 -
Hadoop MapReduce 初步学习总结
在Hadoop中一个作业被提交后,其后具体的执行流程要经历Map任务的提交中间结果处理,Reduce任务的分配和执行直至完成这些过程,下面就是MapReduce中作业详细的执行流程图(摘自《Hadoop实战》)。 在整个过程中,客户端中,编写MapReduce代码,配置并提交作业;JobTracker中负责初始化作业,分配作业,与TaskTracker进行通信,协调整...原创 2014-07-21 14:14:16 · 194 阅读 · 0 评论 -
Hive使用入门
Hive简介hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。建立Hive表hive中创建表时,默认情况下h...原创 2014-07-30 22:26:29 · 100 阅读 · 0 评论 -
Hive语句执行优化-简化UDF执行过程
Hive会将执行的SQL语句翻译成对应MapReduce任务,当SQL语句比较简单时,性能还是可能处于可接受的范围。但是如果涉及到非常复杂的业务逻辑,特别是通过程序的方式(一些模版语言生成)生成大量判断语句时,出现的问题就会比较多。 精简Hive使用的SQL 当前项目中如果打包的数量过多,是当前性能的最大瓶颈,在做SQL优化时,至少会存在一个这样的SQL,当打包...2015-01-30 21:28:20 · 208 阅读 · 0 评论 -
hadoop集群调优-hadoop settings and MapReduce
Hadoop Settings由于Hadoop节点的系统配置,一些hadoop的设置可以减少运行系统中的瓶颈。首先,提高Java运行时的堆内存容量,也要和系统中的整体内存容量相关;其次,保持hadoop中派生的task数量与处理器数量相关。 一个比较好的规则是一个Reducer或两个Mapper分配一个处理器;如果系统拥有足够多的内存容量,设置Java堆的最大大小为1GB或更大。此...原创 2014-08-11 09:08:33 · 111 阅读 · 0 评论 -
Hive中的用户自定义函数UDF
Hive中的自定义函数允许用户扩展HiveQL,是一个非常强大的功能。Hive中具有多种类型的用户自定义函数。show functions命令可以列举出当前Hive会话中的所加载进来的函数,包括内置的以及用户加载的函数。 函数都有自身的使用文档,使用describe function命令就可以展示对应函数基本介绍。 标准函数UDF用户自定义函数指的是一行数据中的一...原创 2014-08-17 16:03:31 · 172 阅读 · 0 评论 -
记一次数据处理效率优化过程
我们最原始的产品使用hive来进行数据分析和处理,由于我们的业务模型所限制,往往需要经过多轮的MR来完成任务,经过多轮的优化,虽然取得了一定的成果,但是执行速度还是不能满足产品的要求。 其实,当时考虑使用hive,是由于其基于SQL良好的扩展性为前提的,也就是说,以后我们在增加功能的时候,修改的部分很少,只需增加一些where,group by条件,就可以达成目的,hive也确实能...2015-03-25 14:19:12 · 116 阅读 · 0 评论 -
Hadoop MapReduce任务的启动分析
正常情况下,我们都是启动Hadoop任务的方式大概就是通过hadoop jar命令(或者写在shell中),事实上运行的hadoop就是一个包装的.sh,下面就是其中的最后一行,表示在其中执行一个java命令,调用hadoop的一些主类,同时配置一些hadoop的相关CLASSPATH,OPTS等选项: exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_...2015-04-15 22:53:41 · 126 阅读 · 0 评论 -
locale错误导致Java中文乱码错误的总结
线上执行MapReduce任务计算时,经过排查发现了某些服务器计算的数据出现中文乱码问题,但是服务器的配置是完全一致的。由于我们使用的key可能包含中文,中文乱码问题体现在每次合并map记录的时候计算数据的随机性,每次执行的结果都不一样(由于Map任务执分配的随机性)。(注:此文章大部分都参考了同事查找到的问题解决方法。) 在执行Java进程的过程中,通过命令:jinfo+Java...2014-12-02 20:57:31 · 347 阅读 · 0 评论