首页>参考读物>计算机科学与技术>软件与程序设计

Flume日志收集与MapReduce模式
作者 : [美]史蒂夫·霍夫曼(Steve Hoffman) 斯里纳特·佩雷拉(Srinath Perera)著
译者 : 张龙 译
丛书名 : 大数据技术丛书
出版日期 : 2015-06-15
ISBN : 978-7-111-50207-4
定价 : 39.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 180
开本 : 32
原书名 : Apache Flume: Distributed Log Collection for Hadoop                    Instant MapReduce Patterns-Hadoop Essentials How-to
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

深入探讨Flume重要组件及在日常开发中的使用与最佳实践,涵盖构建高可用、容错、流式数据管道所需的一切知识
以案例驱动方式详细讲解MapReduce模式,深入浅出地介绍Hadoop及MapReduce编程知识

通过阅读本书,你将学到:

理解Flume架构
从Apache下载并安装开源的Flume
探索何时使用内存通道,何时使用基于文件的通道
理解并配置Hadoop文件系统(HDFS)接收器
学习如何使用接收器组来创建冗余的数据流
配置并使用各种源来提取数据
监测数据记录,根据负载内容路由到不同目的地或者多个目的地
即时将数据转换到Hadoop
监控数据流
编写并运行一个简单的MapReduce程序
理解Hadoop的工作原理以及如何编写自定义的格式化器
使用Hadoop实现分析、正交相关以及集合操作
编写简单的Hadoop程序执行搜索
通过编写Hadoop程序实现数据的连接
实现图操作与集群
作者简介
Steve Hoffman 具有30年的软件开发经验,拥有伊利诺伊大学香槟分校计算机工程学士学位以及德保罗大学计算机科学硕士学位。他目前是Orbitz Worldwide的首席工程师。通过http://bit.ly/bacoboy或者Twitter @bacoboy可以了解关于Steve的更多信息。
Srinath Perera WSO2公司的高级软件架构师,他与CTO合作负责WSO2平台的整体架构。此外,他还是Lanka软件基金会的研究科学家,并且担任莫勒图沃大学计算机科学与工程学院的客座讲师。他是Apache Axis2开源项目的联合创始人,从2002年开始就参与Apache Web Service项目,是Apache软件基金会的成员以及Apache Web Service项目的PMC。他也是Apache开源的Axis、Axis2以及Geronimo项目的提交者。

译者简介
张龙 InfoQ中文站编辑,9年技术开发、管理与培训经验,多本技术图书译者。喜好用简单技术解决复杂问题,跑步与足球爱好者,目前从事法律互联网相关工作,希望能用互联网思维与技术改变法律这一传统行业。

内容简介
本书分为上下两篇,对Flume重要组件及其在日常开发中的使用以及MapReduce编程知识进行了全面而深入的探讨,提供大量实践案例,可以帮助读者快速掌握并灵活运用Flume和MapReduce知识解决实际项目中遇到的问题。
上篇介绍Flume的重要组件以及如何用Flume解决HDFS和流式数据/日志的问题,首先简要介绍Flume的架构,包括将数据移动到数据库以及从数据库获取数据、NoSQL数据存储和性能调优,然后深入讲解各个架构组件(源、通道、接收器、通道处理器、接收器组等)的具体实现及配置选项,并且介绍了如何编写自定义的实现,最后介绍Flume监控方面的知识并总结了实时分布式数据收集的现状。
下篇则对Hadoop以及MapReduce编程进行了简明介绍,旨在帮助读者快速起步并对使用Hadoop进行编程有个总体的认识。本篇主要内容包括如何编写一个Hadoop数据格式化器来读取Amazon数据格式,如何通过MapReduce处理Amazon数据、连接两个数据集、实现差集、统计两个条目同时出现的次数、实现图的遍历,以及如何通过反向索引实现简单的搜索,如何通过Kmeans算法建立数据集的集群等。

图书前言

Hadoop是个非常优秀的开源工具,可以将海量的非结构化数据转换为易于管理的内容,从而更好地洞察客户需求。它很便宜(几乎是免费的),只要数据中心有空间和电源,它就能够水平扩展,并且可以处理传统数据仓库难以解决的问题。需要注意的是,你得将数据填入Hadoop集群中,否则你所得到的只不过是昂贵的热量产生器而已。你很快就会发现,一旦对Hadoop的使用经过 “试验性”阶段后,你就需要工具来自动化地将数据填充到集群中。过去,你需要自己找到该问题的解决方案,但现在则不必如此!Flume一开始是Cloudera的项目,当时它们的集成工程师需要一次又一次地为客户编写工具来实现数据的自动化导入。时至今日,Flume已经成为Apache软件基金会的项目,并且处于活跃开发状态中,很多用户已经将其用于产品环境多年。
本书将会通过Flume的架构概览与快速起步指南帮助你迅速掌握Flume。接下来将会深入介绍Flume众多更加有用的组件的细节信息,包括用于即时数据记录持久化的重要的文件通道、用于缓存并将数据写到HDFS中的HDFS接收器,以及Hadoop分布式文件系统。由于Flume内置很多模块,因此上手Flume时你所需要的唯一工具就是一个用于编写配置文件的文本编辑器而已。
通过阅读上篇,你将掌握构建高可用、容错、流式数据管道(用于填充Hadoop集群)所需的一切知识。
虽然网上关于Hadoop的资料已经汗牛充栋,但大多数都止步于表面或是仅针对某个具体问题给出解决方案。下篇则对Hadoop以及MapReduce编程进行了简明介绍,旨在让你快速起步并对Hadoop编程有个总体印象,打好基础才能深入探索每一类MapReduce问题。
本书主要内容
第1章介绍了Flume及其将会解决的问题空间(特别是与Hadoop相关的部分),架构概览介绍了将会在后续章节中讨论的各个组件。
第2章帮助你尽快上手Flume,包括下载Flume、创建“Hello World”配置并运行。
第3章介绍了大多数人都会用到的两个主要通道以及每个通道可用的配置选项。
第4章详细介绍了如何使用HDFS Flume输出,包括压缩选项以及数据格式化选项。此外还介绍了故障恢复选项以创建更为健壮的数据管道。
第5章介绍了几种Flume输入机制及其配置选项。此外,还介绍了如何根据数据内容在不同的通道间切换,这样就可以创建复杂的数据流了。
第6章介绍了如何即时转换数据以及如何从负载中抽取信息来与通道选择器搭配以进行路由判定。还介绍了如何通过Avro序列化对Flume代理进行分层,如何将Flume命令行作为独立的Avro客户端进行测试以及手工导入数据。
第7章介绍了内外部用于监控Flume的各种方式,包括Monit、Nagios、Ganglia以及自定义钩子。
第8章超越了Flume配置与使用本身,对实时分布式数据收集的各个方面进行了讨论。
第9章介绍了如何使用Java(不使用MapReduce)编写一个单词统计应用。我们会将其与MapReduce模型进行比对。
第10章介绍了如何使用MapReduce编写单词统计应用以及如何使用Hadoop本地模式运行。
第11章介绍了如何在分布式环境中安装Hadoop并运行之前的Wordcount job。
第12章介绍了如何编写一个Hadoop数据格式化器来读取Amazon数据格式以作为记录而非逐行读取数据。
第13章介绍了如何通过MapReduce处理Amazon数据,生成直方图数据以及使用gnuplot来绘制结果。
第14章介绍了如何通过MapReduce连接两个数据集。
第15章介绍了如何处理Amazon数据以及通过MapReduce实现差集。此外还介绍了如何通过类似的方法实现其他的集合操作。
第16章介绍了如何通过MapReduce统计两个条目同时出现的次数(交叉相关)。
第17章介绍了如何处理Amazon数据以及通过反向索引实现简单的搜索。
第18章介绍了如何通过MapReduce实现图的遍历。
第19章介绍了如何通过Kmeans算法建立数据集的集群。集群会将数据划分为各个小组,这样每个分组中的条目都是类似的,根据不同的距离度量方法,不同分组中的条目是不同的。
学习本书的前提
你需要一台安装有Java虚拟机的Linux或Mac电脑,并安装有JDK 1.6,因为Flume是用Java编写的。如果电脑上没有安装Java,那么可以从http://java.com/下载。
还需要网络连接,这样才能下载Flume并运行快速入门示例。
上篇主要讲解了Apache Flume 1.3.0,此外还对Cloudera的Flume CDH4进行了介绍。
本书面向的读者
本书面向需要将来自各种系统的数据自动化地移动到Hadoop集群中的人。如果需要定期将数据加载到Hadoop中,那么本书就是为你准备的,它将使你从手工工作中解脱出来,也无需再继续维护一些自己编写的工具。
阅读本书只需要对基本的Hadoop HDFS知识有一定了解。我们提供了一些自定义的实现,如果需要可以使用。对于这种级别的实现,你需要了解如何使用Java进行编程。
最后,你需要使用一款自己喜欢的文本编辑器,因为本书的大部分内容都涉及如何通过代理的文本配置文件来配置各种Flume组件。

上架指导

计算机

封底文字

通过阅读本书,你将学到:

 理解Flume架构
 从Apache下载并安装开源的Flume
 探索何时使用内存通道,何时使用基于文件的通道
 理解并配置Hadoop文件系统(HDFS)接收器
 学习如何使用接收器组来创建冗余的数据流
 配置并使用各种源来提取数据
 监测数据记录,根据负载内容路由到不同目的地或者多个目的地
 即时将数据转换到Hadoop
 监控数据流
 编写并运行一个简单的MapReduce程序
 理解Hadoop的工作原理以及如何编写自定义的格式化器
 使用Hadoop实现分析、正交相关以及集合操作
 编写简单的Hadoop程序执行搜索
 通过编写Hadoop程序实现数据的连接
 实现图操作与集群

作者简介

[美]史蒂夫·霍夫曼(Steve Hoffman) 斯里纳特·佩雷拉(Srinath Perera)著:暂无简介

译者简介

张龙 译:暂无简介

译者序

今日之时代是大数据时代,大数据在各行各业中都发挥着巨大的作用。这对于广大开发者们也提出了新的要求,如何追赶技术的脚步、如何在大数据时代走在技术的前列成为摆在每一个技术人员面前的问题。提到大数据就不得不提到Hadoop以及围绕Hadoop形成的大数据生态系统:HBase、Hive、Pig、ZooKeeper、Flume、Storm等。这其中更是以Hadoop为整个生态系统的核心和重中之重。虽然面临着后来者Spark的挑战,但Hadoop凭借成熟的工具库、完善的生态系统、业界的广泛应用依旧深受各大互联网公司的青睐。目前市场上关于Hadoop的技术图书已经汗牛充栋,那么,本书有哪些特点值得各位读者阅读呢?本书共包含两篇内容:上篇是关于Apache Flume的介绍;下篇是关于MapReduce模式的介绍。上篇针对Apache Flume进行了深入讲解。值得一提的是,目前市场上关于Flume的技术图书非常少,本书的出现很好地填补了这一空白。该篇首先从Flume的宏观架构谈起,接下来介绍如何安装与使用Flume,然后对Flume的核心组件通道、接收器、源、拦截器等进行深入讲解,最后介绍Flume监控方面的知识并总结了实时分布式数据收集的现状。相信各位读者可以从中学到有关Apache Flume方方面面的知识并能灵活地运用到项目中。对于MapReduce模式,下篇独辟蹊径,针对一个个问题分别进行介绍,摒弃了传统的流水账讲解方式,这样读者可以带着问题持续阅读,每一个案例最后都会给出相应的解决方案。这些案例都是与Hadoop相关的非常经典的案例,从最简单的使用Java编写一个单词统计应用到复杂的使用MapReduce实现Kmeans,相信各位读者从中可以学到许多关于Hadoop的知识。
总的来说,这本涵盖Flume与Hadoop两个重要主题的图书会给各位读者带来耳目一新之感,同时这两个主题之间也存在着必然的联系,对有志于在大数据领域深耕的广大技术从业人员来说是一本上佳的领域专著。
翻译技术图书是一项艰苦的工作,首先非常感谢机械工业出版社华章分社的编辑们,感谢你们在图书翻译过程中给予我的支持与鼓励;此外,我还要对妻子张明辉说声感谢,你无微不至的关怀让我能够专心于翻译工作,同时也将本书献给我一岁多的孩子张梓轩,希望你在未来能够茁壮成长;最后,我要感谢我的父母,没有你们的养育就不会有今天的我。
尽管在翻译过程中本人已经付出了巨大的努力,但错误与遗漏之处在所难免,恳请广大读者将发现的错误及时告知于我以便在后续版本中能够及时更正。我的邮箱是zhanglong217@163.com,新浪微博是@风中叶的思考,欢迎关注。

张龙
2015年4月

图书目录

译者序
前 言
上篇 Flume日志收集
第1章 概览与架构 2
1.1 Flume 0.9 3
1.2 Flume 1.X(Flume-NG) 4
1.3 HDFS与流式数据/日志的问题 5
1.4 源、通道与接收器 6
1.5 Flume事件 7
1.5.1 拦截器、通道选择器与选择处理器 8
1.5.2 分层数据收集(多数据流与代理) 9
1.6 小结 10
第2章 Flume快速起步 11
2.1 下载Flume 11
2.2 Flume配置文件概览 13
2.3 从“Hello World”开始 15
2.4 小结 20
第3章 通道 22
3.1 内存通道 23
3.2 文件通道 25
3.3 小结 29
第4章 接收器与接收处理器 31
4.1 HDFS接收器 31
4.1.1 路径与文件名 34
4.1.2 文件转储 37
4.2 压缩编解码器 38
4.3 事件序列化器 38
4.3.1 文本输出 39
4.3.2 带有头信息的文本 39
4.3.3 Apache Avro 39
4.3.4 文件类型 41
4.3.5 超时设置与线程池 43
4.4 接收器组 44
4.4.1 负载均衡 45
4.4.2 故障恢复 45
4.5 小结 46
第5章 源与通道选择器 48
5.1 使用tail的问题 48
5.2 exec源 50
5.3 假脱机目录源 53
5.4 syslog源 55
5.4.1 syslog UDP源 56
5.4.2 syslog TCP源 58
5.4.3 多端口syslog TCP源 59
5.5 通道选择器 61
5.5.1 复制 62
5.5.2 多路复用 62
5.6 小结 63
第6章 拦截器、ETL与路由 65
6.1 拦截器 65
6.1.1 Timestamp 66
6.1.2 Host 67
6.1.3 Static 68
6.1.4 正则表达式过滤 69
6.1.5 正则表达式抽取 70
6.1.6 自定义拦截器 74
6.2 数据流分层 75
6.2.1 Avro源/接收器 76
6.2.2 命令行Avro 78
6.2.3 Log4J追加器 79
6.2.4 负载均衡Log4J追加器 81
6.3 路由 82
6.4 小结 83
第7章 监控Flume 85
7.1 监控代理进程 86
7.1.1 Monit 86
7.1.2 Nagios 86
7.2 监控性能度量情况 87
7.2.1 Ganglia 87
7.2.2 内部HTTP服务器 89
7.2.3 自定义监控钩子 91
7.3 小结 92
第8章 万法皆空——实时分布式数据收集的现状 93
8.1 传输时间与日志事件 94
8.2 万恶的时区 94
8.3 容量规划 95
8.4 多数据中心的注意事项 96
8.5 合规性与数据失效 97
8.6 小结 98
下篇 MapReduce模式
第9章 使用Java编写一个单词统计应用(初级) 102
9.1 准备工作 102
9.2 操作步骤 103
9.3 示例说明 103
第10章 使用MapReduce编写一个单词统计应用并运行(初级) 105
10.1 准备工作 105
10.2 操作步骤 106
10.3 示例说明 106
10.4 补充说明 109
第11章 在分布式环境中安装Hadoop并运行单词统计应用(初级) 110
11.1 准备工作 111
11.2 操作步骤 112
11.3 示例说明 116
第12章 编写格式化器(中级) 117
12.1 准备工作 118
12.2 操作步骤 118
12.3 示例说明 119
12.4 补充说明 121
第13章 分析——使用MapReduce绘制频度分布(中级) 122
13.1 准备工作 123
13.2 操作步骤 123
13.3 示例说明 125
13.4 补充说明 128
第14章 关系操作——使用MapReduce连接两个数据集(高级) 129
14.1 准备工作 130
14.2 操作步骤 130
14.3 示例说明 131
14.4 补充说明 134
第15章 使用MapReduce实现集合操作(中级) 135
15.1 准备工作 135
15.2 操作步骤 136
15.3 示例说明 137
15.4 补充说明 140
第16章 使用MapReduce实现交叉相关(中级) 141
16.1 准备工作 141
16.2 操作步骤 142
16.3 示例说明 142
16.4 补充说明 145
第17章 使用MapReduce实现简单搜索(中级) 146
17.1 准备工作 147
17.2 操作步骤 147
17.3 示例说明 148
17.4 补充说明 150
第18章 使用MapReduce实现简单的图操作(高级) 151
18.1 准备工作 152
18.2 操作步骤 152
18.3 示例说明 153
18.4 补充说明 157
第19章 使用MapReduce实现Kmeans(高级) 158
19.1 准备工作 159
19.2 操作步骤 159
19.3 示例说明 160
19.4 补充说明 164

教学资源推荐
作者: [美]埃里克 S. 罗伯茨(Eric S. Roberts) 著
作者: 马玉春 李壮 张鲲 黄应红 编著
作者: 骆吉洲
参考读物推荐
作者: (美)John Robert Gardner,Zarella L.Rendon
作者: [美]穆拉特·埃尔德(Murat Erder),[美]皮埃尔·普约尔(Pierre Pureur),[美]伊恩·伍兹(Eoin Woods) 著
作者: 柴相花