-
51CTO博客开发MIKE老毕的WIKI吴光科-专注自动化运维唐光辉老男孩linux运维angerdevil峰云,就她了。
-
结构:nginx-flume->kafka->flume->kafka(因为牵扯到跨机房问题,在两个kafka之间加了个flume,蛋疼。。)现象:在第二层,写入kafka的topic和读取的kafka的topic相同,手动设定的sink topic不生效打开debug日志:source实例化:21 Apr 2015 19:24:03,146&nbs
-
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
-
flume写hdfs的操作在HDFSEventSink.process方法中,路径创建由BucketPath完成分析其源码(参考:http://caiguangguang.blog.51cto.com/1652935/1619539)可以使用%{}变量替换的形式实现,只需要获取event中时间字段(nginx日志的local time)传入hdfs.path即可具体实现如下:1.在KafkaSou
-
最近一直在跟进storm的问题,从storm集群的稳定性到监控到升级到bolt写redis的问题,因为公司目前没有专业运维redis的,只能我们数据部门自己搞了。。下面记录下遇到的几个问题:总结下目前storm写redis问题:1.redis高峰写入异常,增加redis监控,发现cpu性能瓶颈(redis单线程,最高10w/s的处理量)2.之前redis bolt的并发在200以上,
-
1.pom.xml中依赖如下: <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis&l
-
这里以按自定义头部的配置为例(根据某些业务不同写入不同的主目录)配置:source:interceptors = i1
interceptors.i1.type = regex_extractor
interceptors.i1.regex = /apps/logs/(.*?)/
interceptors.i1.
-
RegexExtractorInterceptor作为一个Interceptor实现类可以根据一个正则表达式匹配event body来提取字符串,并使用serializers把字符串作为header的值实例:以如下的命令使用execsource收集日志的时候,可以根据文件的名称设置不同的header,进行不同的操作#!/bin/sh
filename=$1
hostname=`hostname&n
-
1.启动命令nohup bin/flume-ng agent -n agent-server -f agent-server1.conf &flume-ng是一个shell脚本: agent &
-
flume可以监控并管理组件的运行状态,在组件关闭的时候可以自动拉起来,原理是通过启动一个计划任务线程池(monitorService ,线程的最大数量为30),运行监控线程(MonitorRunnable线程),每隔3s判断组件(包括Channel,SinkRunner)的状态是否符合要求(可用的状态由两种START和STOP),根据不同的要求调用对应组件不同的方法,START会调
-
在1.5.0的flume版本中开始提供这个功能,判断配置文件的更新时间戳来reload服务原理:1)在启动中使用EventBus.register注册Application对象,同时Application有一个Subscribe的方法handleConfigurationEvent(参数是MaterializedConfiguration对象)2)定义了一个计划任务线程池,检测到文件
-
org.apache.flume.channel.ChannelProcessor 用于实际的Event到Channel的操作(在Source中用到),可以把它想象成channel的proxy,用于控制把Event put到哪些Channel中,以及怎么put(bacth或者单个),同时在put之前会使用 Interceptor对Event进行处理。把Even
-
在agent启动时,会启动Channel,SourceRunner,SinkRunner,比如在org.apache.flume.agent.embedded.EmbeddedAgent类的doStart方法中: private void doStart() {
boolean&nbs
-
上一篇说了HDFSEventSink的实现,这里根据hdfs sink的配置和调用分析来看下sink中整个hdfs数据写入的过程:线上hdfs sink的几个重要设置hdfs.path = hdfs://xxxxx/%{logtypename}/%Y%m%d/%H:
hdfs.rollInterval = 60
hdfs.rollSize&nb
-
HDFSEventSink用于把数据从channel中拿出来(主动pull的形式)然后放到hdfs中,HDFSEventSink在启动时会启动两个线程池callTimeoutPool 和timedRollerPool ,callTimeoutPool 用于运行append/flush等操作hdfs的task(通过callWithTimeout方法调用,并实现timeout
-
flume的主要组件包括:Source,SourceRunner,Interceptor,Channel,ChannelSelector,ChannelProcessor,Sink,SinkRunner,SinkProcessor,SinkSelector等工作流程包含两个部分:source->channel,数据由source写入channel,主动模式,主要步骤如下:一个SourceRu
-
org.apache.flume.SinkProcessor 扩展了LifecycleAware, Configurable接口的接口类,操作多个sink的抽象层(类似于proxy),用来分配给SinkRunner对象抽象方法:process 和Sink 的process方法类似(内部实现增加了选择Sink的功能)setSinks 设置sinks具体实现类:org.apache.flume.sin
-
对于flume的监控,只需要监控channel的性能数据即可,source和sink的性能一部分可以从channel中表现出来。以MemoryChannel为例,在MemoryTransaction的构造函数中会实例化一个org.apache.flume.instrumentation.ChannelCounter对象 pub
-
flume作为日志收集端,其本质上也是一个生产者消费者结构,source作为消息的producer,sink作为消息的consumer,中间的channel作消息的存储为了保证消息消费的正确性,flume使用了事务的机制,主要涉及的类:1)org.apache.flume.Transaction 接口类,为访问channel提供事务的功能(可以是put,也可以是take)首先定义了一
-
线上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
-
搞了一段时间,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
-
最近集群准备升级到cdh5.2.0,并使用tez,在测试集群cdh5.2.0已经稳定运行了很长时间,因此开始折腾hive on tez了,期间遇到不少问题,这里记录下。hive on tez的部署比较简单,可以参考wiki.主要注意几个地方1.编译的时候mvn clean package -Dtar -DskipTests=true
-
最近线上的rm crash了一次,查看日志,发现有如下报错:2015-01-05 18:00:11,523 ERROR org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Request for appInfo of u
-
最近在测试hive0.11 hiveserver时遇到的一个关于认证的bug,具体表现:在配置中指定了custom的认证方式时,通过beeline连接hiveserver2,发现连接hang住。hive配置:<property>
<name>hive.server2.authentication</name>a
<value>CUSTOM
-
最近在配合研发做ubd的项目,简单的说就是一张大宽表,有200个字段,而且数据量特别巨大(1亿级别的数据量),传统的数据库是不适合的,因此考虑基于lucene的solr,并且推荐使用solr cloud的功能来做高可用和sharding(后面会更新对solr和lucene的代码学习)。数据从hive计算插入到solr中,根据github上的代码自己做了修改,实现了hive2solr的
-
线上使用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
-
线上一个项目需要操作hdfs和hive,在使用时报如下错误:java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses.
&nb
-
在hadoop中很多地方都用到了servlet,并且使用jetty作为servlet的容器来提供http的服务,其主要是通过org.apache.hadoop.http.HttpServer类实现的,HttpServer类是对Jetty的简单封装,通过调用HttpServer类的addServlet方法增加可以实现增加servlet到jetty的功能: publ
-
在debug hadoop的问题的时候,经常需要临时打开hadoop的debug日志,可以通过更改环境变量:export HADOOP_ROOT_LOGGER=DEBUG,console来开启debug log,这几天在看hadoop shell的时候发现有daemonlog这个参数,可以临时获取或更改当前日志基本,是通过org.apache.hadoop.log.LogL
菜菜光
分享到朋友圈
- 关注技术:Mysql 大数据 系统集成
- 入住博客:2010-05-28 10.9年