摘要
《图灵程序设计丛书:Hadoop基础教程》揭开了Hadoop的神秘面纱,它着重讲解了如何应用Hadoop和相关技术搭建工作系统并完成任务。在读者明白这些内容之后,又介绍了如何使用云服务完成相同任务。本书从Hadoop的基本概念和初始设置入手,讲述了如何开发Hadoop程序,如何在数据规模增长的时候维持系统运行,《图灵程序设计丛书:Hadoop基础教程》涵盖了有效使用Hadoop处理实际问题所需用到的全部知识。
Hadoop基础教程[Hadoop Beginner's Guide] 作者:[英] Garry Turkington
Hadoop基础教程[Hadoop Beginner's Guide] 出版社: 人民邮电出版社
Hadoop基础教程[Hadoop Beginner's Guide] 内容简介
《图灵程序设计丛书:Hadoop基础教程》包括三个主要部分:第1~5章讲述了Hadoop的核心机制及Hadoop的工作模式;第6~7章涵盖了Hadoop更多可操作的内容;第8~11章介绍了Hadoop与其他产品和技术的组合使用。《图灵程序设计丛书:Hadoop基础教程》目的在于帮助读者了解什么是Hadoop,Hadoop是如何工作的,以及如何使用Hadoop从数据中提取有价值的信息,并用它解决大数据问题。
Hadoop基础教程[Hadoop Beginner's Guide] 目录
第1章 绪论
1.1 大数据处理
1.1.1 数据的价值
1.1.2 受众较少
1.1.3 一种不同的方法
1.1.4 Hadoop
1.2 基于Amazon Web Services的云计算
1.2.1 云太多了
1.2.2 第三种方法
1.2.3 不同类型的成本
1.2.4 AWS:Amazon的弹性架构
1.2.5 本书内容
1.3 小结
第2章 安装并运行Hadoop
2.1 基于本地Ubuntu主机的Hadoop系统
2.2 实践环节:检查是否已安装JDK
2.3 实践环节:下载Hadoop
2.4 实践环节:安装SSH
2.5 实践环节:使用Hadoop计算圆周率
2.6 实践环节:配置伪分布式模式
2.7 实践环节:修改HDFS的根目录
2.8 实践环节:格式化NameNode
2.9 实践环节:启动Hadoop
2.10 实践环节:使用HDFS
2.11 实践环节:MapReduce的经典入门程序——字数统计
2.12 使用弹性MapReduce
2.13 实践环节:使用管理控制台在EMR运行WordCount
2.13.1 使用EMR的其他方式
2.13.2 AWS生态系统
2.14 本地Hadoop与EMR Hadoop的对比
2.15 小结
第3章 理解MapReduce
3.1 键值对
3.1.1 具体含义
3.1.2 为什么采用键/值数据
3.1.3 MapReduce作为一系列键/值变换
3.2 MapReduce的Hadoop Java API
3.3 编写MapReduce程序
3.4 实践环节:设置classpath
3.5 实践环节:实现WordCount
3.6 实践环节:构建JAR文件
3.7 实践环节:在本地Hadoop集群运行WordCount
3.8 实践环节:在EMR上运行WordCount
3.8.1 0.20之前版本的Java MapReduce API
3.8.2 Hadoop提供的mapper和reducer实现
3.9 实践环节:WordCount的简易方法
3.10 查看WordCount的运行全貌
3.10.1 启动
3.10.2 将输入分块
3.10.3 任务分配
3.10.4 任务启动
3.10.5 不断监视JobTracker
3.10.6 mapper的输入
3.10.7 mapper的执行
3.10.8 mapper的输出和reducer的输入
3.10.9 分块
3.10.10 可选分块函数
3.10.11 reducer类的输入
3.10.12 reducer类的执行
3.10.13 reducer类的输出
3.10.14 关机
3.10.15 这就是MapReduce的全部
3.10.16 也许缺了combiner
3.11 实践环节:使用combiner编写WordCount
3.12 实践环节:更正使用combiner的WordCount
3.13 Hadoop专有数据类型
3.13.1 Writable和Writable-Comparable接口
3.13.2 wrapper类介绍
3.14 实践环节:使用Writable包装类
3.15 输入/输出
3.15.1 文件、split和记录
3.15.2 InputFormat和RecordReader
3.15.3 Hadoop提供的InputFormat
3.15.4 Hadoop提供的RecordReader
3.15.5 OutputFormat和Record-Writer
3.15.6 Hadoop提供的OutputFormat
3.15.7 别忘了Sequence files
3.16 小结
第4章 开发MapReduce程序
4.1 使用非Java语言操作Hadoop
4.1.1 Hadoop Streaming工作原理
4.1.2 使用Hadoop Streaming的原因
4.2 实践环节:使用Streaming实现Word-Count
4.3 分析大数据集
4.3.1 获取UFO目击事件数据集
4.3.2 了解数据集
4.4 实践环节:统计汇总UFO数据
4.5 实践环节:统计形状数据
4.6 实践环节:找出目击事件的持续时间与UFO形状的关系
4.7 实践环节:在命令行中执行形状/时间分析
4.8 实践环节:使用ChainMapper进行字段验证/分析
4.9 实践环节:使用Distributed Cache改进地点输出
4.10 计数器、状态和其他输出
4.11 实践环节:创建计数器、任务状态和写入日志
4.12 小结
第5章 高级MapReduce技术
5.1 初级、高级还是中级
5.2 多数据源联结
5.2.1 不适合执行联结操作的情况
5.2.2 map端联结与reduce端联结的对比
5.2.3 匹配账户与销售信息
5.3 实践环节:使用MultipleInputs实现reduce端联结
5.3.1 实现map端联结
5.3.2 是否进行联结
5.4 图算法
5.4.1 Graph
5.4.2 图和MapReduce
5.4.3 图的表示方法
5.5 实践环节:图的表示
5.6 实践环节:创建源代码
5.7 实践环节:第一次运行作业
5.8 实践环节:第二次运行作业
5.9 实践环节:第三次运行作业
5.10 实践环节:第四次也是最后一次运行作业
5.10.1 运行多个作业
5.10.2 关于图的终极思考
5.11 使用语言无关的数据结构
5.11.1 候选技术
5.11.2 Avro简介
5.12 实践环节:获取并安装Avro
5.13 实践环节:定义模式
5.14 实践环节:使用Ruby创建Avro源数据
5.15 实践环节:使用Java语言编程操作Avro数据
5.16 实践环节:在MapReduce中统计UFO形状
5.17 实践环节:使用Ruby检查输出数据
5.18 实践环节:使用Java检查输出数据
5.19 小结
第6章 故障处理
6.1 故障
6.1.1 拥抱故障
6.1.2 至少不怕出现故障
6.1.3 严禁模仿
6.1.4 故障类型
6.1.5 Hadoop节点故障
6.2 实践环节:杀死DataNode进程
6.3 实践环节:复制因子的作用
6.4 实践环节:故意造成数据块丢失
6.5 实践环节:杀死TaskTracker进程
6.6 实践环节:杀死JobTracker
6.7 实践环节:杀死NameNode进程
6.8 实践环节:引发任务故障
6.9 数据原因造成的任务故障
6.10 实践环节:使用skip模式处理异常数据
6.11 小结
第7章 系统运行与维护
7.1 关于EMR的说明
7.2 Hadoop配置属性
7.3 实践环节:浏览默认属性
7.3.1 附加的属性元素
7.3.2 默认存储位置
7.3.3 设置Hadoop属性的几种方式
7.4 集群设置
7.4.1 为集群配备多少台主机
7.4.2 特殊节点的需求
7.4.3 不同类型的存储系统
7.4.4 Hadoop的网络配置
7.5 实践环节:查看默认的机柜配置
7.6 实践环节:报告每台主机所在机柜
7.7 集群访问控制
7.8 实践环节:展示Hadoop的默认安全机制
7.9 管理NameNode
7.10 实践环节:为fsimage文件新增一个存储路径
7.11 实践环节:迁移到新的NameNode主机
7.12 管理HDFS
7.12.1 数据写入位置
7.12.2 使用平衡器
7.13 MapReduce管理
7.13.1 通过命令行管理作业
7.13.2 作业优先级和作业调度
7.14 实践环节:修改作业优先级并结束作业运行
7.15 扩展集群规模
7.15.1 提升本地Hadoop集群的计算能力
7.15.2 提升EMR作业流的计算能力
7.16 小结
第8章 Hive:数据的关系视图
8.1 Hive概述
8.1.1 为什么使用Hive
8.1.2 感谢Facebook
8.2 设置Hive
8.2.1 准备工作
8.2.2 下载Hive
8.3 实践环节:安装Hive
8.4 使用Hive
8.5 实践环节:创建UFO数据表
8.6 实践环节:在表中插入数据
8.7 实践环节:验证表
8.8 实践环节:用正确的列分隔符重定义表
8.9 实践环节:基于现有文件创建表
8.10 实践环节:执行联结操作
8.11 实践环节:使用视图
8.12 实践环节:导出查询结果
8.13 实践环节:制作UFO目击事件分区表
8.13.1 分桶、归并和排序
8.13.2 用户自定义函数
8.14 实践环节:新增用户自定义函数
8.14.1 是否进行预处理
8.14.2 Hive和Pig的对比
8.14.3 未提到的内容
8.15 基于Amazon Web Services的Hive
8.16 实践环节:在EMR上分析UFO数据
8.16.1 在开发过程中使用交互式作业流
8.16.2 与其他AWS产品的集成
8.17 小结
第9章 与关系数据库协同工作
9.1 常见数据路径
9.1.1 Hadoop用于存储档案
9.1.2 使用Hadoop进行数据预处理
9.1.3 使用Hadoop作为数据输入工具
9.1.4 数据循环
9.2 配置MySQL
9.3 实践环节:安装并设置MySQL
9.4 实践环节:配置MySQL允许远程连接
9.5 实践环节:建立员工数据库
9.6 把数据导入Hadoop
9.6.1 使用MySQL工具手工导入
9.6.2 在mapper中访问数据库
9.6.3 更好的方法:使用Sqoop
9.7 实践环节:下载并配置Sqoop
9.8 实践环节:把MySQL的数据导入HDFS
9.9 实践环节:把MySQL数据导出到Hive
9.10 实践环节:有选择性的导入数据
9.11 实践环节:使用数据类型映射
9.12 实践环节:通过原始查询导入数据
9.13 从Hadoop导出数据
9.13.1 在reducer中把数据写入关系数据库
9.13.2 利用reducer输出SQL数据文件
9.13.3 仍是最好的方法
9.14 实践环节:把Hadoop数据导入MySQL
9.15 实践环节:把Hive数据导入MySQL
9.16 实践环节:改进mapper并重新运行数据导出命令
9.17 在AWS上使用Sqoop
9.18 小结
第10章 使用Flume收集数据
10.1 关于AWS的说明
10.2 无处不在的数据
10.2.1 数据类别
10.2.2 把网络流量导入Hadoop
10.3 实践环节:把网络服务器数据导入Hadoop
10.3.1 把文件导入Hadoop
10.3.2 潜在的问题
10.4 Apache Flume简介
10.5 实践环节:安装并配置Flume
10.6 实践环节:把网络流量存入日志文件
10.7 实践环节:把日志输出到控制台
10.8 实践环节:把命令的执行结果写入平面文件
10.9 实践环节:把远程文件数据写入本地平面文件
10.9.1 信源、信宿和信道
10.9.2 Flume配置文件
10.9.3 一切都以事件为核心
10.10 实践环节:把网络数据写入HDFS
10.11 实践环节:加入时间戳
10.12 实践环节:多层Flume网络
10.13 实践环节:把事件写入多个信宿
10.13.1 选择器的类型
10.13.2 信宿故障处理
10.13.3 使用简单元件搭建复杂系统
10.14 更高的视角
10.14.1 数据的生命周期
10.14.2 集结数据
10.14.3 调度
10.15 小结
第11章 展望未来
11.1 全书回顾
11.2 即将到来的Hadoop变革
11.3 其他版本的Hadoop软件包
11.4 其他Apache项目
11.4.1 HBase
11.4.2 Oozie
11.4.3 Whir
11.4.4 Mahout
11.4.5 MRUnit
11.5 其他程序设计模式
11.5.1 Pig
11.5.2 Cascading
11.6 AWS资源
11.6.1 在EMR上使用HBase
11.6.2 SimpleDB
11.6.3 DynamoDB
11.7 获取信息的渠道
11.7.1 源代码
11.7.2 邮件列表和论坛
11.7.3 LinkedIn群组
11.7.4 Hadoop用户群
11.7.5 会议
11.8 小结
随堂测验答案
Hadoop基础教程[Hadoop Beginner's Guide] 精彩文摘
本书介绍一种大规模数据处理的开源框架——Hadoop。在深入探讨它的技术细节和应用之前,很有必要花点时间来了解Hadoop及其取得巨大成功的历史背景。
Hadoop并不是凭空想象出来的,它的出现源于人们创建和使用的数据量的爆炸性增长。在此背景下,不仅是庞大的跨国公司面临着海量数据处理的困难,小型创业公司同样如此。与此同时,其他历史变革改变了软件和系统的部署方式,除了传统的基础设施,人们开始使用甚至偏好于云资源。
本章将要探讨Hadoop出现的背景,并详细讲解Hadoop想要解决的问题和决定其最终设计的内在驱动因素。
本章包括以下内容:
●概述大数据革命;
●讲解Hadoop是什么以及如何从数据中获取有价值信息;
●探秘云计算并了解AWS(Amazon Web Services,亚马逊网络服务)的功能;
●了解大数据处理技术与云计算相结合带来的巨大威力;
●概述本书其余章节内容。
现在我们开始吧!
1.1 大数据处理
审视现有技术,不难发现,所有技术都以数据为核心。作为用户,我们对富媒体的欲望与日俱增,比如观看的电影和创建并上传到网络的照片和视频。我们也常常在日常生活中,不经意地在网上留下一串数据。
不仅是数据总量在迅速增加,同时数据生成速率也在不断增加。从电子邮件到Facebook留言,从网上购物记录到网站链接,到处都是不断增长的大数据集。在此背景下,最大的挑战在于,如何从这些数据中提取最有价值的信息。有时是提取特定的数据元素,有时是分析数据间的关系或是判断一种趋势。
微妙的变化悄然发生,数据的使用方式变得越来越有意义。一段时间以来,大型公司已经意识到了数据的价值,并用它来提升服务质量。例如,Google在用户正在访问的网页上显示内容相关的广告,Amazon或Netflix向用户推荐合乎其口味和兴趣的新产品或新电影。
1.1.1 数据的价值
如果不会带来有价值的回报或者明显的竞争优势,这些大型企业是不会投资发展大数据处理技术的。应当从以下几个方面来认识大数据。
●只有在数据集足够大的时候,某些问题才变得有意义。例如,在其他影响因素缺失的情况下,基于一个第三人的喜好推荐电影是不可能非常精准的。然而,当参考样本增加到100时,推荐成功的几率略有上升。而使用1000万人的观看记录,可以大幅提升获得推荐模型的可能性。
●与之前的解决方案相比,大数据处理工具通常能够以较低的成本处理更大规模的数据。因此,能够在可接受的成本范围内执行以往花费极高的数据处理任务。
●大规模数据处理的成本不仅体现在财务费用上,等待时间也是一个重要因素。如果一个系统能够处理所有到达数据,但是其平均处理时间以周为计量单位,那么该系统也是不可用的。大数据处理工具通过将增加的数据量分配到附加的硬件,来保证即使在数据量增加的情况下,处理时间也不会失控。
●为了满足数据库中最大数据的需要,可能需要重新审视之前关于数据库形式或者其中数据结构的假设。
●综合上述几点内容,足够大的数据集以及灵活的工具可以使之前无法想象的问题得到解答。
1.1.2 受众较少
前面讨论的从大数据中提取有价值信息用于改进服务质量的例子,往往属于大型搜索引擎和在线公司的创新模式。这是因为在早期发展过程中,大数据处理不仅成本高而且实现困难,超出了中小企业的能力范围。
同样,比大数据处理技术应用更为广泛的数据挖掘方法已经存在了很长一段时间,但是在大型企业和政府部门之外却从来没有真正得到推广使用。
这种情况的出现可能令人感到遗憾。但在过去,对于大多数小公司来讲却无关紧要,因为它们的数据量很少,并不需要投入大量的资金来处理这些数据。
然而,现如今数据量的增加不再局限于大型组织,许多中小型公司甚至一些个人收集到的数据也越来越多。他们也意识到这些数据中可能包含着正待发掘的价值。
在理解如何实现这一目标之前,很有必要了解奠定Hadoop系统基础的背景情况。
本文来自弑魂战神投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。