具体描述
《Flume:构建高可用、可扩展的海量日志采集系统》从Flume 的基本概念和设计原理开始讲解,分别介绍了不同种类的组件、如何配置组件、如何运行Flume Agent 等。同时,分别讨论Source、Channel 和Sink 三种核心组件,不仅仅阐述每个组件的基本概念,而且结合实际的编程案例,深入、全面地介绍每个组件的详细用法,并且这部分内容也是整个Flume 框架的重中之重。之后,讲解拦截器、Channel选择器、Sink 组和Sink 处理器等内容,它们为Flume 提供灵活的扩展支持。最后,介绍了Flume 的高级使用,如何使用Flume 软件开发工具集(SDK)和Embedded Agent API,如何设计、部署和监控Flume 生产集群。
总而言之,《Flume:构建高可用、可扩展的海量日志采集系统》是一本理论结合实战,深度、广度兼备的海量日志采集系统的著作。
作者简介
Hari Shreedharan是Cloudera的一名软件工程师,他工作于Apache Spark、Apache Flume和Apache Sqoop。他也是Flume项目的一个提交者和PMC成员,帮助项目的方向做决定。
目录信息
序 ................................................................................xiii
前言 ............................................................................... x
第1 章 认识Apache Hadoop 和Apache HBase ............ 1
分布式文件系统HDFS ..........................................................................................1
HDFS 的数据格式 ...........................................................................................3
处理HDFS 中的数据 ......................................................................................4
Apache HBase ........................................................................................................4
总结 .......................................................................................................................5
参考文献 ................................................................................................................6
第2 章 用Apache Flume 处理流数据 ............................ 7
我们需要Flume .....................................................................................................7
Flume 是否适合呢? .............................................................................................9
Flume Agent 内部原理 .........................................................................................10
配置Flume Agent .................................................................................................13
Flume Agent 之间的相互通信 ..............................................................................17
复杂的流 ..............................................................................................................17
复制数据到不同目的地 ........................................................................................20
动态路由 ..............................................................................................................21
Flume 的无数据丢失保证,Channel 和事务 ........................................................22
Flume Channel 中的事务 ...............................................................................23
Agent 失败和数据丢失 ........................................................................................25
批量的重要性 ......................................................................................................26
重复怎么样? ......................................................................................................27
运行Flume Agent .................................................................................................27
总结 .....................................................................................................................29
参考文献 ..............................................................................................................30
第3 章 源(Source) .................................................. 31
Source 的生命周期 ...............................................................................................31
Sink-to-Source 通信 .............................................................................................33
Avro Source ...................................................................................................34
Thrift Source .................................................................................................37
RPC Sources 的失败处理 ..............................................................................39
HTTP Source ........................................................................................................40
针对HTTP Source 写处理程序* ..................................................................42
Spooling Directory Source ....................................................................................47
使用Deserializers 读取自定义格式* ............................................................50
Spooling Directory Source 性能.....................................................................55
Syslog Source .......................................................................................................55
Exec Source ..........................................................................................................59
JMS Source ..........................................................................................................61
转换JMS 消息为Flume 事件* .....................................................................63
编写自定义Source* .............................................................................................65
Event-Driven Source 和Pollable Source ........................................................66
总结 .....................................................................................................................73
参考文献 ..............................................................................................................73
第4 章 Channel ......................................................... 75
事务工作流 ..........................................................................................................76
Flume 自带的Channel .........................................................................................78
Memory Channel ...........................................................................................78
File Channel ..................................................................................................80
总结 .....................................................................................................................86
参考文献 ..............................................................................................................86
第5 章 Sink ............................................................... 87
Sink 的生命周期 ..................................................................................................88
优化Sink 的性能 .................................................................................................89
写入到HDFS :HDFS Sink ..................................................................................89
理解Bucket ...................................................................................................90
配置HDFS Sink ............................................................................................93
使用序列化器控制数据格式* ..................................................................... 100
HBase Sink ......................................................................................................... 106
用序列化器将Flume 事件转换成HBase Put 和Increment* ....................... 108
RPC Sink ............................................................................................................ 113
Avro Sink ..................................................................................................... 113
Thrift Sink ................................................................................................... 115
Morphline Solr Sink ........................................................................................... 116
Elastic Search Sink ............................................................................................. 119
自定义数据格式* ....................................................................................... 121
其他Sink :Null Sink、Rolling File Sink 和Logger Sink .................................. 124
编写自定义Sink* .............................................................................................. 125
总结 ................................................................................................................... 129
参考文献 ............................................................................................................ 129
第6 章 拦截器、Channel 选择器、Sink 组和
Sink 处理器 ................................................... 131
拦截器 ................................................................................................................ 131
时间戳拦截器 .............................................................................................. 132
主机拦截器 ................................................................................................. 133
静态拦截器 ................................................................................................. 133
正则过滤拦截器 .......................................................................................... 134
Morphline 拦截器 ........................................................................................ 135
UUID 拦截器 ............................................................................................... 136
编写拦截器* ............................................................................................... 137
Channel 选择器 .................................................................................................. 140
复制Channel 选择器 ................................................................................... 140
多路复用Channel 选择器 ........................................................................... 141
自定义Channel 选择器* ............................................................................ 144
Sink 组和Sink 处理器 ....................................................................................... 146
Load-Balancing Sink 处理器 ....................................................................... 148
Failover Sink 处理器 ................................................................................... 151
总结 ................................................................................................................... 153
参考文献 ............................................................................................................ 154
第7 章 发送数据到Flume* ....................................... 155
构建Flume 事件 ................................................................................................ 155
Flume 客户端SDK ............................................................................................. 156
创建Flume RPC 客户端 .............................................................................. 157
RPC 客户端接口 ......................................................................................... 157
所有RPC 客户端的公共配置参数 .............................................................. 158
默认RPC 客户端......................................................................................... 165
Load-Balancing RPC 客户端 ....................................................................... 168
Failover RPC 客户端 ................................................................................... 171
Thrift RPC 客户端 ....................................................................................... 172
嵌入式Agent ..................................................................................................... 173
配置嵌入式Agent ....................................................................................... 175
log4j Appender ................................................................................................... 180
Load-Balancing log4j Appender ................................................................... 181
总结 ................................................................................................................... 182
参考文献 ............................................................................................................ 183
第8 章 规划、部署和监控Flume ............................... 185
规划一个Flume 部署 ......................................................................................... 185
修复时间 ..................................................................................................... 185
我的Flume Channel 需要多少容量? ......................................................... 186
多少层? ..................................................................................................... 186
通过跨数据中心链接发送数据 .................................................................... 188
层分片 ......................................................................................................... 190
部署Flume ......................................................................................................... 191
部署自定义代码 .......................................................................................... 191
监控Flume ......................................................................................................... 193
从自定义组件报告度量 ............................................................................... 196
总结 ................................................................................................................... 196
参考文献 ............................................................................................................ 196
索引 ........................................................................... 197
· · · · · · (收起)
读后感
用户评价
天哪,我刚刚读完的这本书,简直是沉浸式的体验!它不是那种上来就给你一堆枯燥理论的工具书,而是像一个经验丰富的老朋友,带着你一步步走进一个全新的世界。从头到尾,作者的叙事节奏把握得炉火纯青,完全没有那种为了凑字数而堆砌的冗余信息。更让我惊喜的是,它对一些复杂概念的阐释,竟然能用如此生动形象的比喻来描绘,即便是初次接触这个领域的新手,也能迅速抓住核心要义。我特别喜欢其中关于“数据流动哲学”的那一章,它不仅仅是在讲技术实现,更是在探讨一种看待信息传输的全新视角,让我对日常工作中遇到的数据管道问题都有了更深层次的理解和启发。这本书的排版和插图设计也相当用心,视觉上非常舒服,长时间阅读也不会感到疲劳。我强烈推荐给所有对底层数据处理机制感兴趣,但又希望阅读过程充满乐趣和洞察力的读者。它不仅仅是一本技术指南,更像是一部关于现代信息架构的精彩导览手册,让人读完后迫不及待地想去实践和探索。
我必须得承认,这本书的语言风格非常独特,它有一种近乎诗意的精准性。与那些充斥着生硬术语的教材不同,这本书读起来流畅得惊人,仿佛在欣赏一篇精心打磨的散文,尽管内容是关于技术实现的。作者对于技术细节的描述,带着一种对工程艺术的敬畏感,让你在学习知识的同时,对整个领域产生一种由衷的尊重。例如,它对“容错机制”的阐述,竟然能让人感受到那种系统在风暴中屹立不倒的坚韧美感。这种文学性和技术性的完美融合,在技术书籍中是极为罕见的。我甚至在某些段落停下来,回味作者是如何用如此简洁的句子,概括了数百行代码所要实现的功能。对于那些希望在技术学习中寻找美感和哲思的读者来说,这本书绝对能提供一种精神上的满足感,而不仅仅是技能上的提升。
这本书的结构设计简直是教科书级别的典范。我发现它有一个非常巧妙的递进关系,从最基础的概念开始,稳扎稳打地向上构建复杂系统。最让我称赞的一点是,它没有回避那些业界常见的“坑点”和“陷阱”。作者似乎深谙初学者容易在哪里摔倒,总能在关键时刻插入“避雷指南”或者“常见错误排查清单”,这些实战经验的总结,比任何官方文档都来得实在。我尤其欣赏那种“先说问题,再说解决方案”的叙述方式,使得阅读过程充满了解决谜题的快感。这本书读起来完全没有“灌输感”,更像是跟着一个资深工程师在进行一对一的深度辅导。那些案例分析环节更是精彩,真实世界的复杂性被切割得条理分明,让人能清晰地看到理论是如何在残酷的生产环境中发挥作用的。这绝对是那种需要放在手边,随时翻阅查阅的工具书,但同时又具备足够的深度让你沉浸其中。
说实话,这本书的深度和广度都超出了我的预期。我原本以为它会是市面上那种泛泛而谈的入门读物,但读进去才发现,作者在每一个关键节点的剖析都极其到位,简直是把脉络捋得清清楚楚。我特别欣赏作者在处理那些历史演变和技术取舍上的客观性,没有盲目推崇某一种方案,而是非常详尽地分析了不同设计决策背后的权衡利弊。我花了好大力气才啃完了关于并发控制的那几个章节,里面的细节丰富到让人拍案叫绝,每一个参数、每一个配置项的影响都被描述得淋漓尽致。这本书更像是一本“内功心法秘籍”,它教你的不只是“怎么做”,更是“为什么这么做”,这种底层逻辑的构建,对于想成为架构师级别的人来说,是无价之宝。如果你只是想快速复制粘贴代码,那可能这本书对你来说会有点“重”,但如果你想真正理解数据传输世界的精髓,那么这本书绝对值得你投入时间反复研读。
这本书对“性能优化”部分的论述,简直是为我们这些常年和延迟较劲的工程师们量身定做的圣经。它没有停留在表面上告诉你“要优化”,而是深入挖掘了性能瓶颈产生的底层原因,从操作系统调度到网络协议栈,再到具体的内存访问模式,层层剥茧。我尤其对其中关于“延迟敏感型应用”的章节印象深刻,作者提供了一套非常系统化的诊断流程和工具集,这些都是需要多年经验才能积累下来的宝贵财富。读完这部分,我感觉自己对“快”的理解都被提升到了一个新的维度,不再是模糊的感觉,而是有了可以量化、可以控制的指标。更重要的是,这本书提供的优化思路具有很强的普适性,即使你的具体应用场景有所不同,其背后的优化逻辑和方法论依然可以被灵活采纳和应用。这是一本真正能让你在实际工作中立竿见影提升代码“速度与激情”的宝典,绝对是值得反复阅读的投资。
就这翻译也好意思出书,垃圾
还好吧。
中规中矩,将官方文档做了整理,加上了部分经验之谈。
还好吧。
说真的,我完全看不懂作者在讲什么,嘚啵嘚的好几章,还不如直接在百度上搜一个简单介绍看的明白。