-
结构:nginx-flume->kafka->flume->kafka(因为牵扯到跨机房问题,在两个kafka之间加了个flume,蛋疼。。)现象:在第二层,写入kafka的topic和读取的kafka的topic相同,手动设定的sink topic不生效打开debug日志:source实例化:21 Apr 2015 19:24:03,146&nbs
-
最近一直在跟进storm的问题,从storm集群的稳定性到监控到升级到bolt写redis的问题,因为公司目前没有专业运维redis的,只能我们数据部门自己搞了。。下面记录下遇到的几个问题:总结下目前storm写redis问题:1.redis高峰写入异常,增加redis监控,发现cpu性能瓶颈(redis单线程,最高10w/s的处理量)2.之前redis bolt的并发在200以上,
-
这里以按自定义头部的配置为例(根据某些业务不同写入不同的主目录)配置:source:interceptors = i1
interceptors.i1.type = regex_extractor
interceptors.i1.regex = /apps/logs/(.*?)/
interceptors.i1.
-
org.apache.flume.SinkProcessor 扩展了LifecycleAware, Configurable接口的接口类,操作多个sink的抽象层(类似于proxy),用来分配给SinkRunner对象抽象方法:process 和Sink 的process方法类似(内部实现增加了选择Sink的功能)setSinks 设置sinks具体实现类:org.apache.flume.sin
-
搞了一段时间,hive2solr的job终于可以稳定的跑了,实现使用hive向solr插数据,主要是实现RecordWriter接口,重写write方法和close方法。下面对遇到的问题一一列出:1.数据覆盖问题,使用原子更新参考:http://caiguangguang.blog.51cto.com/1652935/15991372.重复构建solrserver和solrtable
-
在测试hive0.14.0 on tez时遇到的问题比较多:1.在使用cdh5.2.0+hive0.14.0+tez-0.5.0测试时,首先遇到下面的问题java.lang.NoSuchMethodError: org.apache.tez.dag.api.client.Progress.getFailedTaskAttemptCount()I
&nb
-
最近在配合研发做ubd的项目,简单的说就是一张大宽表,有200个字段,而且数据量特别巨大(1亿级别的数据量),传统的数据库是不适合的,因此考虑基于lucene的solr,并且推荐使用solr cloud的功能来做高可用和sharding(后面会更新对solr和lucene的代码学习)。数据从hive计算插入到solr中,根据github上的代码自己做了修改,实现了hive2solr的
-
在hadoop中很多地方都用到了servlet,并且使用jetty作为servlet的容器来提供http的服务,其主要是通过org.apache.hadoop.http.HttpServer类实现的,HttpServer类是对Jetty的简单封装,通过调用HttpServer类的addServlet方法增加可以实现增加servlet到jetty的功能: publ
-
hive创建目录时相关的几个hdfs中的类:org.apache.hadoop.hdfs.DistributedFileSystem,FileSystem 的具体实现类
org.apache.hadoop.hdfs.DFSClient,client操作hdfs文件系统的类
org.apache.hadoop.fs.permission.FsPermission 文件权限相关类,
-
hive权限有两层,hive本身的验证和hadoop的验证。自定义hive的proxy功能时,hive层面的相关验证更改在http://caiguangguang.blog.51cto.com/1652935/1587251 中已经提过,这里说下hive和hadoop以及本地文件系统相关的几个出现用户的地方:1.job的log文件session初始化时会初始化日志文件,主要在Sess
-
最近线上的的nm 有crash的问题,查看错误日志:2014-06-19 00:01:22,308 FATAL
org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService: Error: Shutting&nbs
-
在yarn中对 yarn.nodemanager.local-dirs的状态更新操作,定义在 LocalDirsHandlerService(org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService)相关类中,在nm启动时,会启动一个LocalDirsHandlerService服务,循环检
-
今天在写zabbix storm job监控脚本的时候用到了python的redis模块,之前也有用过,但是没有过多的了解,今天看了下相关的api和源码,看到有ConnectionPool的实现,这里简单说下。在ConnectionPool之前,如果需要连接redis,我都是用StrictRedis这个类,在源码中可以看到这个类的具体解释:redis.StrictRedis 
-
upgrade小结:1.dfsadmin -upgradeProgress status 在cdh5.2.0中没有,在4.6.0有(见源码org.apache.hadoop.hdfs.tools.DFSAdmin)升级的时候不能通过这个看到升级状态rollingUpgrade这个参数在4.6.0中不存在,在5.2.0中有,可以用于滚动升级2.在cdh5.2.0中执行upgrade,nn中调用的命令
-
Driver类是对org.apache.hadoop.hive.ql.processors.CommandProcessor.java接口的实现,重写了run方法,定义了常见sql的执行方式.public class Driver implements CommandProcessor具体的方法调用顺序:run--->runInterna
-
线上使用zabbix的host update来监测监控值是否完整(关于host update的实现请参考:http://caiguangguang.blog.51cto.com/1652935/1345789)一直发现有机器过一段时间update值就会莫名其妙变低,之前一直没有找到rc,只是简单通过重启agent来进行修复,最近同事细心地发现可能是和sudo的bug有关系。回过头再来
-
在hive的源码中经常可以看到shims相关的类,shims相关类是用来兼容不同的hadoop和hive版本的,以HadoopShims为例org.apache.hadoop.hive.shims.HadoopShims是一个接口,具体的实现类为org.apache.hadoop.hive.shims.Hadoop20Shims
org.apache.hadoop.hive.shim
-
最近在debug hive的一个bug,之前都是使用打印日志来跟踪源码,这种方式效率比较低(每次更改了源码都要重新编译并替换线上的jar包),java的应用可以支持remote debug的,hive也不例外,主要是通过hive --debug来实现.在运行hive --debug时遇到如下问题:ERROR: Cannot load this
-
一个小例子来看下怎么debug puppet运行慢的问题。一个小例子来看下怎么debug puppet运行慢的问题。发现一台机器的agent运行比较缓慢,首先看下puppet server的整体性能:puppet server使用了passenger+nginx的结构,性能比较稳定,接入1200台机器左右,passenger类似于php-fpm,可以设定启动的处理进程数等参数,用来调整server
-
今天有个storm的topology被人kill掉了,但是找不到是谁做的,storm的ui有kill topology的功能,但是没有权限验证,这样就导致知道ui地址的任何人都可以kill掉topology,比较危险,考虑把这个action disable掉。有两种方法:1.前端增加nginx,做location分析ui页面,对应kill的button,html中的action为:&
-
在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen。默认情况下subprocess.call的方法结果是返回值,即1或0,而os.popen则是命令运行的结果,可以用readlines(读取所有行,返回数组)或者read(读读取所有行,返回str)来读取。subprocess类总主要的方法有:su
-
线上遇到的一个case,应用结构是nginx----->resin---java,其中nginx做lb,resin做为java的容器。在nginx层面做http code的监控,发现有4xx比例高的的报警:分析nginx日志,发现是由于499比例高导致xxx xxxxx - [29/Oct/2012:04:10:03 +0800]&nbs
-
今天有个etl开发在drop partition的时候遇到了问题,因为是使用了自己的账号,而hdfs中对应partition的文件属主是hdfs的,在删除时会因为权限问题报错,切换用户为hdfs,做drop partition的错误,还是报错,看来没这么简单。查看表的hdfs属性,目录的属主不是hdfs且目录对 hdfs没有写权限:[hdfs@nfzm ~]$&n
-
在debug hive的问题时,我们经常需要在源码里面增加必要的日志信息,来跟踪变量的变化或者是方法执行的情况,性能等。。hive里面有下面几个日志的实现方式。1种是常用的通过org.apache.commons.logging.Log和org.apache.commons.logging.LogFactory类实现的。比如要打印类的info信息时,只需要下面这样就可以。static f
-
最近有个业务建表使用了 RegexSerDe,之前虽然也它来解析nginx日志,但是没有做深入的了解。这次看了下其实现方式。建表语句:CREATE external TABLE ods_cart_log
(
time_local STRING,
request_json STRING,
trace_id_num
-
升级hive0.13之后发现job运行完成后Rows loaded的信息没有了。rows loaded的信息在hive0.11中由HiveHistory类的printRowCount输出。HiveHistory类的主要用途是记录job运行的信息,包括task的counter等。默认的目录在/tmp/$user中。 hive0.11在SessionState 的start方法中会
-
最近线上的hive升级到了0.13,遇到不少问题。权限上面,设置了hive.security.authorization.createtable.owner.grants 在hive0.13中,用户自己创建的表也没有权限。通过对源码的分析和debug找到了rc并fix,下面记录下。1.首先在hive0.11中和hive0.13中分别做建表测试,通过查看数据库中的元数据,发现在hive0.11中如果
-
今天收到线上的resource manager报警:报错信息如下:2014-07-08 13:22:54,118 INFO org.apache.hadoop.yarn.util.AbstractLivelinessMonitor: Expired:xxxx:53356 Timed out after 600 
-
线上业务准备使用solr做数据存放和索引的功能,其中有的字段要求会存入多个字,solr的field的multivalue可以实现这个功能。<dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="tr
-
最近有个项目要用solr,solr是基于lucene的,今天在测试indexwriter时遇到了lock的问题:测试代码:import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.a
菜菜光
分享到朋友圈
- 关注技术:Mysql 大数据 系统集成
- 入住博客:2010-05-28 10.8年