Hadoop基础教程[Hadoop Beginner’s Guide] 作者:[英] Garry Turkington

Hadoop基础教程[Hadoop Beginner’s Guide] 作者:[英] Garry Turkington

Hadoop基础教程[Hadoop Beginner’s Guide] 出版社: 人民邮电出版社

Hadoop基础教程[Hadoop Beginner’s Guide] 内容简介

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从数据中提取有价值的信息,并用它解决大数据问题。第1章 绪论1.1 大数据处理1.1.1 数据的价值1.1.2 受众较少1.1.3 一种不同的方法1.1.4 Hadoop1.2 基于Amazon Web Services的云计算1.2.1 云太多了1.2.2 第三种方法1.2.3 不同类型的成本1.2.4 AWS:Amazon的弹性架构1.2.5 本书内容1.3 小结第2章 安装并运行Hadoop2.1 基于本地Ubuntu主机的Hadoop系统2.2 实践环节:检查是否已安装JDK2.3 实践环节:下载Hadoop2.4 实践环节:安装SSH2.5 实践环节:使用Hadoop计算圆周率2.6 实践环节:配置伪分布式模式2.7 实践环节:修改HDFS的根目录2.8 实践环节:格式化NameNode2.9 实践环节:启动Hadoop2.10 实践环节:使用HDFS2.11 实践环节:MapReduce的经典入门程序——字数统计2.12 使用弹性MapReduce2.13 实践环节:使用管理控制台在EMR运行WordCount2.13.1 使用EMR的其他方式2.13.2 AWS生态系统2.14 本地Hadoop与EMR Hadoop的对比2.15 小结第3章 理解MapReduce3.1 键值对3.1.1 具体含义3.1.2 为什么采用键/值数据3.1.3 MapReduce作为一系列键/值变换3.2 MapReduce的Hadoop Java API3.3 编写MapReduce程序3.4 实践环节:设置classpath3.5 实践环节:实现WordCount3.6 实践环节:构建JAR文件3.7 实践环节:在本地Hadoop集群运行WordCount3.8 实践环节:在EMR上运行WordCount3.8.1 0.20之前版本的Java MapReduce API3.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 不断监视JobTracker3.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 也许缺了combiner3.11 实践环节:使用combiner编写WordCount3.12 实践环节:更正使用combiner的WordCount3.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和RecordReader3.15.3 Hadoop提供的InputFormat3.15.4 Hadoop提供的RecordReader3.15.5 OutputFormat和Record-Writer3.15.6 Hadoop提供的OutputFormat3.15.7 别忘了Sequence files3.16 小结第4章 开发MapReduce程序4.1 使用非Java语言操作Hadoop4.1.1 Hadoop Streaming工作原理4.1.2 使用Hadoop Streaming的原因4.2 实践环节:使用Streaming实现Word-Count4.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 Graph5.4.2 图和MapReduce5.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 实践环节:获取并安装Avro5.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 实践环节:杀死JobTracker6.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 管理NameNode7.10 实践环节:为fsimage文件新增一个存储路径7.11 实践环节:迁移到新的NameNode主机7.12 管理HDFS7.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 为什么使用Hive8.1.2 感谢Facebook8.2 设置Hive8.2.1 准备工作8.2.2 下载Hive8.3 实践环节:安装Hive8.4 使用Hive8.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的Hive8.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 配置MySQL9.3 实践环节:安装并设置MySQL9.4 实践环节:配置MySQL允许远程连接9.5 实践环节:建立员工数据库9.6 把数据导入Hadoop9.6.1 使用MySQL工具手工导入9.6.2 在mapper中访问数据库9.6.3 更好的方法:使用Sqoop9.7 实践环节:下载并配置Sqoop9.8 实践环节:把MySQL的数据导入HDFS9.9 实践环节:把MySQL数据导出到Hive9.10 实践环节:有选择性的导入数据9.11 实践环节:使用数据类型映射9.12 实践环节:通过原始查询导入数据9.13 从Hadoop导出数据9.13.1 在reducer中把数据写入关系数据库9.13.2 利用reducer输出SQL数据文件9.13.3 仍是最好的方法9.14 实践环节:把Hadoop数据导入MySQL9.15 实践环节:把Hive数据导入MySQL9.16 实践环节:改进mapper并重新运行数据导出命令9.17 在AWS上使用Sqoop9.18 小结第10章 使用Flume收集数据10.1 关于AWS的说明10.2 无处不在的数据10.2.1 数据类别10.2.2 把网络流量导入Hadoop10.3 实践环节:把网络服务器数据导入Hadoop10.3.1 把文件导入Hadoop10.3.2 潜在的问题10.4 Apache Flume简介10.5 实践环节:安装并配置Flume10.6 实践环节:把网络流量存入日志文件10.7 实践环节:把日志输出到控制台10.8 实践环节:把命令的执行结果写入平面文件10.9 实践环节:把远程文件数据写入本地平面文件10.9.1 信源、信宿和信道10.9.2 Flume配置文件10.9.3 一切都以事件为核心10.10 实践环节:把网络数据写入HDFS10.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 HBase11.4.2 Oozie11.4.3 Whir11.4.4 Mahout11.4.5 MRUnit11.5 其他程序设计模式11.5.1 Pig11.5.2 Cascading11.6 AWS资源11.6.1 在EMR上使用HBase11.6.2 SimpleDB11.6.3 DynamoDB11.7 获取信息的渠道11.7.1 源代码11.7.2 邮件列表和论坛11.7.3 LinkedIn群组11.7.4 Hadoop用户群11.7.5 会议11.8 小结随堂测验答案本书介绍一种大规模数据处理的开源框架——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系统基础的背景情况。

类似文章

发表评论

您的电子邮箱地址不会被公开。