前言

本书的缘起与成书过程

Hadoop是最早得到广泛使用的大数据计算平台之一,也是目前生态系统最完整、参与开发人员最多的大数据计算平台之一。尽管Hadoop有诸多的竞争者,但其具有的开发配置便利、可扩展性好、生态完整等优点,使其得到了大数据开发人员的普遍认同,成为许多大数据应用系统的基础软件平台。而Hadoop本身也在不断演化中,新近发布的Hadoop 3.1开始支持GPU和FPGA。

鉴于此,笔者认为,尽管大数据计算平台很多,但Hadoop是其中非常重要的一种,也是学习门槛相对比较低的一种,读者学习之后可以快速地掌握大数据处理与系统设计。笔者撰写本书的出发点是提供一本适用于学习Hadoop平台安装、设置与系统开发的教材。

在撰写本书的过程中,有专家提出,本书的内容有些偏重于应用,不适合作为学历教育的教材。因此,笔者进一步增加了分布式系统的介绍、对MapReduce程序设计方法的介绍及对一些改进Hadoop的技术的介绍,期望读者可以以Hadoop为范例,学习分布式系统的相关知识,并且可以通过本书初步学习MapReduce程序设计,以使本书的深度适应学历教育,这就是本书现在的版本。

本书的内容

本书对基于Hadoop大数据处理与开发进行了系统的介绍,同时还对Hadoop系统原理、Hadoop开发环境配置与搭建、Hadoop系统开发相关知识、MapReduce程序设计、HBase和Hive配置与开发等相关知识进行了介绍。考虑到读者的多样性,书中对于不同的内容采取了不同的介绍方式。

在原理部分,主要突出了Hadoop的原理介绍,并且介绍了一些延伸Hadoop技术和网络与分布式系统的背景知识。通过这一部分内容的学习,读者可以较为深入地了解Hadoop及其相关组件(HDFS)的运行原理。从理论学习的角度来说,Hadoop是一个典型的分布式文件管理与计算系统,对其进行深入剖析,读者会加深对分布式系统诸多概念的认知;从实践的角度来说,了解Hadoop的原理,对系统的配置、运维、调优及高效程序的设计,都非常有帮助。

系统开发环境配置与搭建部分则更加面向实战,这一部分通过实例讲解了系统安装、部署、环境搭建、配置、应用程序部署等一系列过程,帮助读者搭建Hadoop开发环境。

由于Hadoop的核心是处理“数据”,因而Hadoop系统开发相关知识部分着重介绍了HDFS和I/O操作,使读者能较为深入地了解这两部分的相关技术。

基于Hadoop的系统开发需要MapReduce程序设计,本书介绍了MapReduce程序设计和算法设计。读者通过学习,可以掌握利用MapReduce编程模式解决计算问题的方法,从而能够根据需求为基于Hadoop的大数据计算系统设计有效的程序。

在Hadoop的大数据系统中,数据管理扮演着重要角色。本书介绍了基于Hadoop的数据管理系统,即HBase和Hive相关知识。读者通过学习,可以掌握HBase和Hive的配置、使用及相关程序的设计方法。

本书试图以Hadoop为主线,兼顾理论与实战,较全面地介绍可操作的大数据平台配置与系统开发的相关知识,和大数据算法、大数据分析、大数据系统等图书具有互补性,可以相互参考。

本书的适用对象

本书适合作为本科生和研究生“Hadoop系统程序设计”“大数据系统开发”等课程的教材,也可以作为“高级语言程序设计”“分布式系统”“数据库系统”等课程的补充教材或课外读物。同时,本书也可供大数据领域从业人员参考。

致使用本书的教师

本书涉及多方面内容,对于教学而言,本书适用于多门课程,除了直接用于“Hadoop系统程序设计”“大数据系统开发”等课程之外,还可以作为“分布式系统”“数据库系统”“高级语言程序设计”等课程的补充教材。教师可以根据这些课程的具体内容补充学习内容。

不同层次的教学可以从本书选择不同的内容。偏重系统原理的教学,可以着重讲授本书的第2章,而偏重应用的教学,则可以略讲这一部分;偏重程序设计的教学,可以着重讲授第6~7章,而偏重系统运维的教学,则可以略讲这一部分;偏重原理和程序设计的教学,可以把第3~4章留给学生自学而不需要详细讲解,而偏重应用的教学,则需要详细讲解这两章。

致使用本书的学生

希望本书为学生提供比较全面的基于Hadoop的大数据处理与系统开发的相关知识,本书不同部分需要的背景知识不尽相同。例如,第2章对Hadoop原理的介绍,需要一部分分布式系统和操作系统的背景知识;第4~7章的学习,需要一些Java语言的相关知识;如果读者学习过数据库系统相关知识,则比较容易学习第8~9章的内容。

为了帮助读者理解本书内容,对一些读者可能不容易理解的概念,本书以“学习提示”的形式进行了介绍;同时也对一些分布式系统的知识进行了简要介绍。

致使用本书的专业技术人员

本书可以作为一本Hadoop大数据处理和系统开发的参考书,供专业技术人员参考。各部分内容针对的人群有所不同,可以单独查阅涉及的主题。对于相关的知识(包括库函数和语法),本书尽量提供比较全面的列表,供专业人员查阅之用。同时对系统的安装和配置,提供了尽可能详细的步骤,供读者在安装和配置系统时参考。

致谢

首先感谢本书的共同作者李春静老师,本书的大部分内容来源于李春静老师多年的教学实践,这使本书更加贴近实战。

感谢哈尔滨工业大学的李建中教授、高宏教授及国际大数据计算研究中心的诸位同事,对本书内容、表述给予的指导和建议,以及在专业上的帮助。

在本书的撰写过程中,哈尔滨工业大学的张梦、孟凡山等同学在资料翻译、搜集、整理、文本校对、作图等多个方面提供了帮助和支持,在此表示感谢。

非常感谢我的爱人黎玲利副教授,感谢她一直以来对我的支持,以及她在大数据相关课程授课的过程中对本书提出的一系列有益的建议。感谢我的母亲和岳母,在本书写作期间,她们料理家务,照顾我的宝宝“壮壮”茁壮成长,使我有时间从事本书的写作。

本书的写作得到了“教育部高等学校计算机类专业教学指导委员会-华为ICT产学合作项目”的资助,感谢华为公司的张志峰、刘洁在本书成书过程中提供的帮助。

还要感谢在哈尔滨工业大学选修我讲授的“大数据管理与分析”课程的同学,他们给我的意见和建议对本书的写作大有裨益。

由于Hadoop一直处于演化之中,本书涉及的内容也比较广泛,限于笔者的水平,本书在内容安排、表述等方面存在着各种不当之处,敬请读者在阅读本书的过程中,不吝提出宝贵建议,以期共同改进本书。读者的任何意见和建议请发邮件至wangzh@hit.edu.cn。此外,读者如果想了解更多关于数据科学与大数据技术方向的科学研究、专业建设、人才培养及教学资源等信息,可关注作者公众号“大数据与数据科学家”。

最后,笔者关于大数据管理和分析方面的研究和本书的写作,还得到了国家自然科学基金项目(编号:U1509216,61472099)、国家重点研发计划项目(编号:2016YFB1000703)、国家科技支撑计划项目(编号:2015BAH10F01)、黑龙江省留学回国人员基金(编号:LC2016026)和微软-教育部语言语音重点实验室的经费资助,在此一并表示感谢。

王宏志

2018年4月于哈尔滨