Flume 1.7 源码分析(一)源码编译
Flume 1.7 源码分析(一)源码编译
Flume 1.7 源码分析(二)整体架构
Flume 1.7 源码分析(三)程序入口
1 说明
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,目前已经是Apache的一个子项目。Flume是一个专用工具被设计为旨在往HDFS、HBase发送数据。它对HDFS有特殊的优化,并且集成了Hadoop的安全特性。本文将详细分析Flume核心模块的源码实现。
2 下载、编译
2.1 源码检出
Flume源码的git地址是:https://git-wip-us.apache.org/repos/asf/flume.git。本文采用的分支是flume-1.7。
2.2 源码编译
Flume采用Maven进行构建。本文采用IDEA作为编译、调试工具。
2.2.1 Maven依赖下载
配置阿里云的Maven服务器,速度较快,并可完成绝大多数包的下载。
<mirror> <id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
使用阿里云Maven服务器,仍然有一些包无法解决,例如FlumeAuth模块的hadoop-minikdc和SolrSink的kite-morphlines-all等。由于这部分缺失的包,基本都是属于flume的插件模块之中,可直接关闭这些插件模块,不会影响主程序的执行和源码阅读。同时,还可移除其他的你不需要使用的source和sink和channel插件模块,可加快编译速度。
导入好的项目如下图所示:
其中比较重要的就是上图圈起来的模块了,其中flume-ng-core存放了最核心部分的代码,包含基础的Source、Channel、Sink等;flume-ng-node则是存放了程序启动的代码(入口函数)。
其他可能会用到的模块就是flume-ng-sources、flume-ng-channels、flume-ng-sinks,这3个模块存放了非必须的flume组件(flume-ng-core中未包含的),里面有些组件也是很常用的。
2.2.2 编译打包
使用mvn clean install -Dmaven.test.skip=true进行打包,看到BUILD SUCCESS则代表编译成功,可进行下一步。
本步骤一定要有,不然debug的时候会报某些类找不到,这些类大多数是由avro定义的文件编译后才会生成的class文件。
2.2.3 简单测试
在TestMemoryChannel类右键选择Run ‘TestMemoryChannel’运行JUnit单元测试。检查是否有报错。
Flume 1.7 源码分析(一)源码编译相关推荐
- 【Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )★
文章目录 一.JobServiceContext 引入 二.JobServiceContext 源码分析 三.用户在应用层如何使用 JobScheduler 四.用户提交任务 五.广播接收者监听广播触 ...
- Android源码分析--MediaServer源码分析(二)
在上一篇博客中Android源码分析–MediaServer源码分析(一),我们知道了ProcessState和defaultServiceManager,在分析源码的过程中,我们被Android的B ...
- Linux内核 eBPF基础:kprobe原理源码分析:源码分析
Linux内核 eBPF基础 kprobe原理源码分析:源码分析 荣涛 2021年5月11日 在 <Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用>中已经介绍了kp ...
- k8s源码分析--kube-scheduler源码(一)
版本:v1.13.0 启动分析 kubernetes基础组件的入口均在cmd目录下,kube-schduler入口在scheduler.go下. kubernetes所有的组件启动采用的均是comma ...
- k8s client-go源码分析 informer源码分析(3)-Reflector源码分析
k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...
- xf86-video-intel源码分析1 —— 源码目录结构概览
在<Spectacle/Flameshot/X11 Xlib截屏问题现象及解决方法>一文(链接如下)中提到, Spectacle/Flameshot/X11 Xlib截屏问题现象及解决方法 ...
- Journey源码分析三:模板编译
2019独角兽企业重金招聘Python工程师标准>>> 在Journey源码分析二:整体启动流程中提到了模板编译,这里详细说下启动流程 看下templates.Generate()源 ...
- 【Android 热修复】热修复原理 ( 类加载分析 | 分析 PathClassLoader 源码 | 分析 BaseDexClassLoader 源码 | 分析 PathDexList 源码 )
文章目录 一.分析 PathClassLoader 源码 二.分析 BaseDexClassLoader 源码 三.分析 PathDexList 源码 四. 源码资源 一.分析 PathClassLo ...
- 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | 任务检查 | 任务执行 )
文章目录 一.回调 StateChangedListener 接口 二.JobHandler 处理 ( 任务检查 ) 三.maybeRunPendingJobsH 方法 四.assignJobsToC ...
- 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | Android 源码在线网址推荐 )
文章目录 一.JobScheduler 提交任务 schedule 方法源码分析 二.schedule(JobInfo job, int uId) 方法 三.scheduleAsPackage 方法 ...
最新文章
- mysql 完整的增删改查 和单表查询
- Hive分区、分桶操作及其比较(转自:http://blog.csdn.net/epitomizelu/article/details/41911657)
- 平顶山学院java实验室_重点学科(实验室)建设规划
- KingPaper初探ThinkPHP3.1.2之目录部署(二)
- python 类初始化参数校验_如何规避python参数的初始化次数?
- MC.9 与 LIS
- pandoc讲html转换为pdf,将HTML表格转换为PDF的Pandoc会导致非包装表格
- FineBI 项目资源迁移
- 微信小程序MINA框架学习(零)
- 三维浮雕软件 linux,立体浮雕工具下载 Type3(立体浮雕软件) v4.6.0.0 免费安装版 下载-脚本之家...
- matlab停止运行命令_matlab终止运行命令
- python查看微信撤回消息怎么弄_Python | 查看微信撤回的消息(完整代码)
- 奥维互动地图加载地球引擎Google Earth Engine(GEE)1984-2022 地球卫星资源 亲测有效,路亚 钓鱼 露营 水下结构 水文 温湿度 地貌变化 大数据AI分析 神器
- Spring 事务源码(2)—<tx:annotation-driven/>事务标签源码解析
- 主机/虚拟机/开发板三者互通
- 使用Java集合实现麻将(准备牌、洗牌、发牌、看牌)
- 如何用java画坐标轴_在java中绘制极坐标图
- pioneer软件VoLTE测试步骤,世纪鼎利pioneer连接移动平台进行volte测试操作说明
- Gradle下载超时
- [bzoj4919] 大根堆
热门文章
- 在VC中如何找到崩溃的源头
- 终极会话劫持工具SSClone
- Trie(字典树) : 如何实现搜索引擎的关键词提示功能?
- 解决Git中的fatal: refusing to merge unrelated histories
- Java 8 Lambda 表达式被编译成了什么?
- Go pprof 快速分析 CPU 高负载问题
- 优化传输文件的性能- -零拷贝
- 【城市沙龙】LiveVideoStack Meet|南京:互联网沙漠的音视频发展
- LiveVideoStackCon 2021上海站 售票通道关闭倒计时24h
- 机器学习帮助WebRTC视频质量评价