我的友情链接

51CTO博客开发MIKE老毕的WIKI吴光科-专注自动化运维唐光辉老男孩linux运维angerdevil峰云,就她了。

原创 点赞0 阅读1383 收藏0 评论0 2017-11-22

flume写kafka topic覆盖问题fix

结构:nginx-flume->kafka->flume->kafka(因为牵扯到跨机房问题,在两个kafka之间加了个flume,蛋疼。。)现象:在第二层,写入kafka的topic和读取的kafka的topic相同,手动设定的sink topic不生效打开debug日志:source实例化:21 Apr 2015 19:24:03,146&nbs

原创 推荐 点赞0 阅读5705 收藏1 评论0 2015-04-25

flume package遇到的问题

flume打包遇到的一些问题1.ipc兼容性问题,线上使用2.3.0的hdfs,但是打包时默认为1.2.1的08 Apr 2015 19:38:25,122 WARN  [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.hdfs.HDFS

原创 点赞0 阅读2235 收藏0 评论0 2015-04-19

flume按照日志时间写hdfs实现

flume写hdfs的操作在HDFSEventSink.process方法中,路径创建由BucketPath完成分析其源码(参考:http://caiguangguang.blog.51cto.com/1652935/1619539)可以使用%{}变量替换的形式实现,只需要获取event中时间字段(nginx日志的local time)传入hdfs.path即可具体实现如下:1.在KafkaSou

原创 点赞0 阅读6572 收藏0 评论0 2015-04-19

storm写redis问题小结

  最近一直在跟进storm的问题,从storm集群的稳定性到监控到升级到bolt写redis的问题,因为公司目前没有专业运维redis的,只能我们数据部门自己搞了。。下面记录下遇到的几个问题:总结下目前storm写redis问题:1.redis高峰写入异常,增加redis监控,发现cpu性能瓶颈(redis单线程,最高10w/s的处理量)2.之前redis bolt的并发在200以上,

原创 推荐 点赞0 阅读9832 收藏0 评论0 2015-04-19

关于jedis的使用小结

1.pom.xml中依赖如下:    <dependency>       <groupId>redis.clients</groupId>       <artifactId>jedis&l

原创 点赞0 阅读9399 收藏0 评论0 2015-04-19

flume源码学习10-HDFSEventSink目录设置功能实现

  这里以按自定义头部的配置为例(根据某些业务不同写入不同的主目录)配置:source:interceptors = i1 interceptors.i1.type = regex_extractor  interceptors.i1.regex = /apps/logs/(.*?)/ interceptors.i1.

原创 推荐 点赞1 阅读2437 收藏0 评论0 2015-03-11

flume源码学习5-RegexExtractorInterceptor实现

RegexExtractorInterceptor作为一个Interceptor实现类可以根据一个正则表达式匹配event body来提取字符串,并使用serializers把字符串作为header的值实例:以如下的命令使用execsource收集日志的时候,可以根据文件的名称设置不同的header,进行不同的操作#!/bin/sh filename=$1 hostname=`hostname&n

原创 点赞0 阅读5137 收藏0 评论0 2015-03-11

flume源码分析1-启动过程

 1.启动命令nohup bin/flume-ng agent -n agent-server  -f  agent-server1.conf &flume-ng是一个shell脚本:  agent      &

原创 点赞0 阅读1417 收藏0 评论0 2015-03-11

flume源码学习2-服务管理实现

  flume可以监控并管理组件的运行状态,在组件关闭的时候可以自动拉起来,原理是通过启动一个计划任务线程池(monitorService ,线程的最大数量为30),运行监控线程(MonitorRunnable线程),每隔3s判断组件(包括Channel,SinkRunner)的状态是否符合要求(可用的状态由两种START和STOP),根据不同的要求调用对应组件不同的方法,START会调

原创 点赞0 阅读2011 收藏0 评论0 2015-03-11

flume源码学习3-自动reload配置功能

  在1.5.0的flume版本中开始提供这个功能,判断配置文件的更新时间戳来reload服务原理:1)在启动中使用EventBus.register注册Application对象,同时Application有一个Subscribe的方法handleConfigurationEvent(参数是MaterializedConfiguration对象)2)定义了一个计划任务线程池,检测到文件

原创 点赞0 阅读3925 收藏0 评论0 2015-03-11

flume源码学习6-ChannelProcessor的实现

    org.apache.flume.channel.ChannelProcessor 用于实际的Event到Channel的操作(在Source中用到),可以把它想象成channel的proxy,用于控制把Event put到哪些Channel中,以及怎么put(bacth或者单个),同时在put之前会使用 Interceptor对Event进行处理。把Even

原创 点赞0 阅读2859 收藏0 评论0 2015-03-08

flume源码学习4-SourceRunner与ExecSource实现

  在agent启动时,会启动Channel,SourceRunner,SinkRunner,比如在org.apache.flume.agent.embedded.EmbeddedAgent类的doStart方法中:  private void doStart() {     boolean&nbs

原创 点赞0 阅读1676 收藏0 评论0 2015-03-08

flume源码学习8-hdfs sink的具体写入流程

  上一篇说了HDFSEventSink的实现,这里根据hdfs sink的配置和调用分析来看下sink中整个hdfs数据写入的过程:线上hdfs sink的几个重要设置hdfs.path = hdfs://xxxxx/%{logtypename}/%Y%m%d/%H: hdfs.rollInterval = 60 hdfs.rollSize&nb

原创 点赞0 阅读3804 收藏0 评论0 2015-03-07

flume源码学习9-HDFSEventSink实现

   HDFSEventSink用于把数据从channel中拿出来(主动pull的形式)然后放到hdfs中,HDFSEventSink在启动时会启动两个线程池callTimeoutPool 和timedRollerPool ,callTimeoutPool 用于运行append/flush等操作hdfs的task(通过callWithTimeout方法调用,并实现timeout

原创 点赞0 阅读2010 收藏0 评论0 2015-03-05

flume的各个组件及整体工作流程

flume的主要组件包括:Source,SourceRunner,Interceptor,Channel,ChannelSelector,ChannelProcessor,Sink,SinkRunner,SinkProcessor,SinkSelector等工作流程包含两个部分:source->channel,数据由source写入channel,主动模式,主要步骤如下:一个SourceRu

原创 点赞0 阅读2771 收藏0 评论0 2015-03-05

flume源码学习7-SinkProcessor相关类

org.apache.flume.SinkProcessor 扩展了LifecycleAware, Configurable接口的接口类,操作多个sink的抽象层(类似于proxy),用来分配给SinkRunner对象抽象方法:process 和Sink 的process方法类似(内部实现增加了选择Sink的功能)setSinks 设置sinks具体实现类:org.apache.flume.sin

原创 推荐 点赞0 阅读3699 收藏0 评论0 2015-03-03

flume channel monitor实现源码分析

   对于flume的监控,只需要监控channel的性能数据即可,source和sink的性能一部分可以从channel中表现出来。以MemoryChannel为例,在MemoryTransaction的构造函数中会实例化一个org.apache.flume.instrumentation.ChannelCounter对象    pub

原创 点赞0 阅读2158 收藏0 评论0 2015-03-03

flume transaction实现

  flume作为日志收集端,其本质上也是一个生产者消费者结构,source作为消息的producer,sink作为消息的consumer,中间的channel作消息的存储为了保证消息消费的正确性,flume使用了事务的机制,主要涉及的类:1)org.apache.flume.Transaction 接口类,为访问channel提供事务的功能(可以是put,也可以是take)首先定义了一

原创 点赞0 阅读3224 收藏0 评论0 2015-03-03

hive0.13 mapjoin hashtable找不到的bug

线上job报错:Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.io.FileNotFoundException: /home/vipshop/hard_disk/1/yarn/local/usercache/hdfs/appc

原创 点赞0 阅读2145 收藏1 评论0 2015-02-07

hive2solr问题小结

  搞了一段时间,hive2solr的job终于可以稳定的跑了,实现使用hive向solr插数据,主要是实现RecordWriter接口,重写write方法和close方法。下面对遇到的问题一一列出:1.数据覆盖问题,使用原子更新参考:http://caiguangguang.blog.51cto.com/1652935/15991372.重复构建solrserver和solrtable

原创 推荐 点赞1 阅读10000+ 收藏0 评论2 2015-02-07

hive on tez踩坑记2-hive0.14 on tez

在测试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

原创 推荐 点赞0 阅读10000+ 收藏0 评论0 2015-01-14

hive on tez踩坑记1-hive0.13 on tez

  最近集群准备升级到cdh5.2.0,并使用tez,在测试集群cdh5.2.0已经稳定运行了很长时间,因此开始折腾hive on tez了,期间遇到不少问题,这里记录下。hive on tez的部署比较简单,可以参考wiki.主要注意几个地方1.编译的时候mvn clean package -Dtar -DskipTests=true 

原创 点赞0 阅读10000+ 收藏0 评论0 2015-01-14

yarn空队列crash bug

最近线上的rm crash了一次,查看日志,发现有如下报错:2015-01-05 18:00:11,523 ERROR org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Request for appInfo of u

原创 点赞0 阅读10000+ 收藏0 评论0 2015-01-11

hive0.11 hiveserver custom认证bug

 最近在测试hive0.11 hiveserver时遇到的一个关于认证的bug,具体表现:在配置中指定了custom的认证方式时,通过beeline连接hiveserver2,发现连接hang住。hive配置:<property> <name>hive.server2.authentication</name>a <value>CUSTOM

原创 点赞0 阅读3239 收藏0 评论0 2015-01-11

solr原子更新

  最近在配合研发做ubd的项目,简单的说就是一张大宽表,有200个字段,而且数据量特别巨大(1亿级别的数据量),传统的数据库是不适合的,因此考虑基于lucene的solr,并且推荐使用solr cloud的功能来做高可用和sharding(后面会更新对solr和lucene的代码学习)。数据从hive计算插入到solr中,根据github上的代码自己做了修改,实现了hive2solr的

原创 推荐 点赞0 阅读6078 收藏0 评论0 2015-01-04

hive0.13.1 orc兼容性问题fix

线上使用cdh4.6.0和hive0.13.1,在hive0.11之后开始支持orcfile,hive0.13.1使用的是pb2.5.0,cdh4.6.0是用的2.4.0a,线上测试orcfile,建表正常,但是插入数据时报错报错:java.lang.VerifyError: class org.apache.hadoop.hive.ql.io.orc.OrcProto$Row

原创 点赞0 阅读2271 收藏0 评论0 2015-01-04

protobuf 2.5.0问题

   线上一个项目需要操作hdfs和hive,在使用时报如下错误:java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses.     &nb

原创 点赞1 阅读10000+ 收藏0 评论0 2014-12-22

hadoop jetty的应用

  在hadoop中很多地方都用到了servlet,并且使用jetty作为servlet的容器来提供http的服务,其主要是通过org.apache.hadoop.http.HttpServer类实现的,HttpServer类是对Jetty的简单封装,通过调用HttpServer类的addServlet方法增加可以实现增加servlet到jetty的功能:  publ

原创 推荐 点赞0 阅读3305 收藏0 评论0 2014-12-22

hadoop daemonlog实现

  在debug hadoop的问题的时候,经常需要临时打开hadoop的debug日志,可以通过更改环境变量:export HADOOP_ROOT_LOGGER=DEBUG,console来开启debug log,这几天在看hadoop shell的时候发现有daemonlog这个参数,可以临时获取或更改当前日志基本,是通过org.apache.hadoop.log.LogL

原创 点赞1 阅读1846 收藏0 评论1 2014-12-22
  • 1
  • 2
  • 3
  • 4
  • 5
写文章