大数据Hadoop 3.X分布式处理实战

978-7-115-52466-9
作者: 吴章勇杨强
译者:
编辑: 俞彬

图书目录:

详情

1.版本较新。本书采用Hadoop3,版本较新,目前市场关于Hadoop的图书以Hadoop1或Hadoop2居多。 2.重视实战。本书提供了大量的实战项目,使读者通过实战项目更容易掌握大数据技术。 3.配套视频。本书每章对重要内容配置视频讲解,通过视频学习,更

图书摘要

内容提要

本书以实战开发为原则,以Hadoop 3.X生态系统内的主要大数据工具整合应用及项目开发为主线,通过Hadoop大数据开发中常见的11个典型模块和3个完整项目案例,详细介绍HDFS、MapReduce、HBase、Hive、Sqoop、Spark等主流大数据工具的整合使用。本书附带资源包括本书核心内容的教学视频,本书所涉及的源代码、参考资料等。

全书共14章,分为3篇,涵盖的主要内容有Hadoop及其生态组件伪分布式安装和完全分布式安装、分布式文件系统HDFS、分布式计算框架MapReduce、NoSQL数据库HBase、分布式数据仓库Hive、数据转换工具Sqoop、内存计算框架Spark、海量Web日志分析系统、电商商品推荐系统、分布式垃圾消息识别系统等。

本书内容丰富、案例典型、实用性强,适合各个层次希望学习大数据开发技术的人员阅读,尤其适合有一定Java基础而要进行Hadoop应用开发的人员阅读。

前言

随着云时代的来临,移动互联网、电子商务、物联网以及社交媒体快速发展,全球的数据正在以几何速度呈爆炸性增长,大数据也吸引了越来越多的人关注。大数据的核心技术就是Hadoop。目前市面上关于Hadoop的书有很多,但基本是关于Hadoop 1.X或Hadoop 2.X的,而且偏重理论讲述,缺少实践案例。本书从Hadoop 3.X实例出发,通过“理论+实践+视频”的方式,帮助读者轻松掌握大数据技术。特别值得一提的是,本书讲解了日志分析、推荐系统、垃圾消息识别3个企业级的综合大数据项目案例,读者稍加改造,即可在生产环境中使用,具有重大的实用价值,也可供在校大学生或研究生毕业设计时参考。

本书有何特色

1. 版本较新

技术研究需要具有一定的前瞻性,本书采用Hadoop 3.X,版本较新。目前国内关于Hadoop的图书基本是关于Hadoop 1.X或Hadoop 2.X的。

2. 知识全面

本书包括Hadoop及其生态组件伪分布式安装和完全分布式安装、分布式文件系统HDFS、分布式计算框架MapReduce、NoSQL数据库HBase、分布式数据仓库Hive、数据转换工具Sqoop、内存计算框架Spark等主要大数据技术。

3. 重视实战

针对每一个知识点,在基本理论讲述后都提供了实战项目,真正做到学以致用。读者通过实战项目,可以更容易地掌握大数据技术在具体工作中的应用。

4. 视频讲解

本书作者具有丰富的IT培训和视频录制经验,针对每章内容精心录制了多个讲解视频。全书有32个相关视频,视频总时长超过12小时,特别是环境搭建、项目运行、源码分析等场景,通过视频学习将更加轻松。

5. 图文并茂

一图胜过千言万语,全书共有超过200幅插图,用于展示语言难以描述的内容,同时插图也有助于增加阅读的趣味性。

6. 在线答疑

本书提供答疑QQ群,在线答疑,群号是243363382。也可以通过作者的QQ号进行在线交流,作者的QQ号是107964558。

7. 电子资源

本书在附带的电子资源中,提供了每章的相关视频、源代码及测试数据,用Eclipse工具打开源代码即可运行。通过运行效果来分析源代码,理解会更容易、更深刻。

读者可扫描“职场研究社”二维码,关注后回复“52466”即可获取电子资源下载链接,也可以扫描云课二维码,手机端在线观看视频。

适合阅读本书的读者

(1)渴望转型进入大数据领域的程序员。

(2)希望学习大数据技术的在校大学生或研究生。

(3)希望提升技能的初级大数据领域从业人员。

(4)希望研究“推荐系统”等大数据典型应用的大数据开发工程师。

第一篇 Hadoop技术

第1章 大数据与Hadoop概述

大数据是一种数据规模大到在获取、存储、管理、分析等方面大大超出传统关系型数据库软件工具能力范围的数据集合,处理时需要采用新的分布式处理技术,而Hadoop就是大数据技术的标准,能够高效、可靠、低成本地处理海量数据。

本章涉及的主要知识点如下。

(1)大数据概述:大数据的定义、大数据行业发展、大数据的典型应用,让读者对大数据有一个宏观的了解。

(2)Hadoop概述:Hadoop简介、Hadoop生态子项目、Hadoop 3.X的新特性,这一节的内容在后面章节将逐步进行深入讲解。

1.1 大数据概述

大数据技术是目前炙手可热的一门技术,那么,什么是大数据呢?目前大数据行业发展怎样?大数据的典型应用有哪些?

1.1.1 大数据的定义

现代社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。阿里巴巴创办人马云在演讲中曾提到,未来的时代将不是IT时代,而是DT时代。DT就是Data Technology(数据科技)的缩写,这显示出大数据对于阿里巴巴来说举足轻重。

对于“大数据”(Big Data),麦肯锡全球研究所给出的定义是,一种规模大到在获取、存储、管理、分析方面大大超出传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。IBM公司提出大数据具有5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)、Veracity(真实性)。

大数据需要特殊的技术,以有效地处理大量的数据。适用于大数据的技术,主要有大规模并行处理(Massively Parallel Processing, MPP)数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统等。

1.1.2 大数据行业的发展

我国高度重视大数据在经济社会发展中的作用,2015年8月31日,国务院以国发〔2015〕50号印发《国务院关于印发促进大数据发展行动纲要的通知》,全面推进大数据发展,加快建设数据强国。

“十三五”时期是我国新旧产业和发展驱动转换接续的关键时期,全球新一代信息技术产业正处于加速变革期,国内市场应用需求处于爆发期,我国大数据产业发展面临重要的发展机遇。培养出足够、合格的数据人才,对我国在未来掌握大数据的核心价值起着至关重要的作用。

1.1.3 大数据的典型应用

整体来看,目前国内大数据应用尚处于从热点行业领域向传统领域渗透的阶段。权威部门的调查显示,大数据应用水平较高的行业主要分布在互联网、电信、金融、电商、交通行业,一些传统行业的大数据应用发展较为缓慢,批发零售业甚至有超过80%的企业并没有大数据应用计划,远低于整体平均水平。

目前,大数据的典型应用有以下几个方面。

1. 运营商业务

运营商掌握体量巨大的数据资源,单个运营商的用户每天产生的话单记录、上网日志等数据就可达到PB级规模。对于运营商而言,可利用大数据技术提升传统的数据处理能力,聚合更多的数据提升洞察能力,借助大数据提高诊断网络潜在问题的效率,改善服务水平,为客户提供更好的体验,获得更多的客户以及更高的业务增长。

2. 金融业务

金融行业是信息产业之外大数据的又一重要应用领域,大数据在金融的银行、保险和证券三大业务中均具有广阔的应用前景。总体来说,金融行业的主要业务应用包括企业内外部的风险管理、信用评估、借贷、保险、理财、证券分析等,这些都可以通过获取、关联和分析更多维度、更深层次的数据,并通过不断发展的大数据处理技术,得以更好、更快、更准确地实现。大数据分析应用可以为金融机构提供统一的客户视图。

3. 政务业务

大数据政务应用获得世界各国政府日益重视。我国政府也非常重视大数据的应用。《国务院关于印发促进大数据发展行动纲要的通知》(国发〔2015〕50号)提出“大数据成为提升政府治理能力的新途径”,要“打造精准治理、多方协作的社会治理新模式”。大数据应用着眼于提升政府提供公共产品和服务的能力。

4. 交通领域业务

交通数据资源丰富,具有实时性特征。在交通领域,数据主要包括各类交通运行监控、服务和应用数据。大数据应用系统可以基于对大数据的预测性分析,通过梳理影响安全畅通运行的各种原因,发现道路运行管理的内在规律,为交通管理决策、规划、运营、服务以及主动安全防范带来更加有效的支持。

5. 电子商务业务

大数据开启了电子商务行业的时代转型。电子商务和传统商家最大的区别在于:电子商务构建的各类型数据库能够涵盖商家信息、用户信息、行业资讯、产品使用体验、商品浏览记录、商品成交记录、产品价格动态等海量信息。电子商务行业大数据背后隐藏的是电子商务行业的用户需求、竞争情报,蕴藏着巨大的财富价值。借助大数据挖掘与分析技术,电子商务不仅可以提高营销转化为购买行为的成功率,而且能降低营销成本,使产品更契合用户的需求,全面提升企业竞争力。

6. 科学研究业务

科学数据是人类在认识自然、发展科技的活动中产生和积累的数据,是人类长期科学活动的知识积累,是一种重要的基础资源和战略资源。大数据时代,科学模式已经变革为“数据密集型科学”的科研范式阶段,部分学科领域的科研活动已经成为典型的大数据行为,科学技术人员有机会利用海量的科学数据探索世界,开展此前无法进行的研究,解决此前难以解决的科学问题,产生突破性进展。

7. 教育领域业务

教育领域大数据的主要目的是为不同利益相关者提供精准的教育服务,如学生的学习、教师的教学、课程开发者的资源开发、教育管理者的决策等。其核心是精准获取学习者的需求,为学习者提供精准教育服务。其数据主要来源于各类教育系统,包括学习管理系统、内容管理系统、电子档案系统、智能培训系统、社会性学习系统、实时教学系统、学习设计系统和学生信息管理系统等。

8. 健康医疗领域业务

通过对医疗大数据的获取和分析,将数据与各级医疗平台进行实时共享,对分散医疗卫生机构的数据以及公众随身的健康医疗传感器数据进行快速、有效、可靠的采集,实现医疗卫生机构卫生数据的有效接入,这将对公共医疗信息化建设起到至关重要的作用。

1.2 Hadoop概述

一提大数据,必提Hadoop,Hadoop已经成为大数据技术的标准。Hadoop不是一套孤立的系统,具有很多生态子项目的支撑。Hadoop 3.X也相较于之前的Hadoop 1.X和2.X有了较大的技术升级。本节对Hadoop技术进行简单介绍,后面章节将对具体内容进行深入分析。

1.2.1 Hadoop简介

Hadoop是一个由Apache软件基金会开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System,HDFS)。HDFS具有高容错性的特点,并设计它用来部署在价格低廉的硬件上,而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。Hadoop框架的核心设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

1. 项目起源

Hadoop被Apache软件基金会于2005年作为Lucene子项目Nutch的一部分正式引入。它受到谷歌实验室开发的MapReduce和Google File System(GFS)的启发。2006年3月,MapReduce和Nutch Distributed File System(NDFS)分别被纳入称为Hadoop的项目中。

2. 发展历程

Hadoop原本来自于谷歌一款名为MapReduce的编程模型包。谷歌的MapReduce框架可以把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行非常巨大的数据集。使用该框架的一个典型例子就是在网络数据上运行的搜索算法。Hadoop最初只与网页索引有关,但后来迅速发展成为分析大数据的领先平台。

3. 名字起源

Hadoop这个名字不是一个缩写,而是一个虚构的名字。该项目的创建者Doug Cutting这样解释Hadoop的命名:“这个名字是我孩子给一个棕黄色的大象玩具起的名字。我的命名标准就是简短、容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。”

4. 优点

Hadoop是一个能够对大量数据进行分布式处理的软件框架,以一种可靠、高效、可伸缩的方式进行数据处理。Hadoop是一个能够让用户轻松架构和使用的分布式计算平台,用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。

Hadoop主要有以下几个优点。

(1)高可靠性。因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

(2)高扩展性。Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可以方便地扩展到数以千计的节点中。

(3)高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,以并行的方式工作,通过并行处理加快处理速度,因此处理速度非常快。

(4)高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

(5)低成本。与一体机、商用数据仓库等工具相比,Hadoop是开源的,项目的软件成本会大大降低。Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上也是比较低成本的。

1.2.2 Hadoop生态子项目

尽管Hadoop因MapReduce及其分布式文件系统HDFS而出名,但Hadoop这个名字也用于泛指一组相关的项目,这些相关项目都使用这个基础平台进行分布式计算和海量数据处理,如表1.1所示。

本书将重点讲解HDFS、MapReduce、HBase、Hive、Sqoop、Spark等项目,并提供相关项目的综合案例。

1.2.3 Hadoop 3.X的新特性

相较于早期的Hadoop 1.X和Hadoop 2.X,Hadoop 3.X具有很多新的特性。本书采用Hadoop 3.X版本。

对于Hadoop 3.X的新特性,读者可先进行简单了解,不用深入研究,后续章节将进一步讲解。

Hadoop 3.X的主要新特性如下。

(1)Java的最低版本要求从Java 7更改成Java 8。

(2)HDFS支持纠删码(Erasure Coding),从而将数据存储空间节省了50%。

(3)引入YARN的时间轴服务v.2(YARN Timeline Service v.2)。

(4)重写了Shell脚本。

(5)隐藏底层jar包。

(6)支持containers和分布式调度。

(7)MapReduce任务级本地优化。

(8)支持多于两个的NameNodes。

(9)改变了多个服务的默认端口(例如HDFS的Web界面,默认端口由50070变成9870)。

(10)用Intra解决DataNode宕机负载不均衡的问题。

(11)重写守护进程以及任务的堆内存管理。

(12)支持Microsoft Azure Data Lake文件系统。

(13)解决了AMAZON S3的数据一致性问题。

1.3 小结

大数据是一种人类社会生产活动信息化的产物,它的内涵不仅仅是海量的数据存储,还包括其相关技术、领域应用、社会学和道德法律等交叉学科的内容,而Hadoop是大数据技术的标准,具有广泛的应用。本章较为概略,但可以为后面各章节Hadoop相关技术的深入学习打下基础。

1.4 配套视频

本章的配套视频为“课程介绍及Hadoop概述”,读者可从配套电子资源中获取。

第2章 Hadoop伪分布式安装

Hadoop安装是学习Hadoop的第一步,本章讲述在CentOS 7上伪分布式安装Hadoop 3.0。不管是CentOS 7配置,还是Hadoop 3.0配置,都与以前的版本有了较大差别。参照本章的图文教程及配套视频,任何人都可以成功安装CentOS 7和Hadoop 3.0。

本章涉及的主要知识点如下。

(1)Hadoop伪分布式安装前的准备:安装VMware、安装CentOS 7、配置CentOS 7,为安装Hadoop做好环境准备。

(2)Hadoop伪分布式安装:安装WinSCP、安装PieTTY、安装JDK、安装Hadoop。

(3)Hadoop验证:在启动Hadoop之前先要格式化,启动后可以通过进程查看、浏览文件以及浏览器访问等方式验证Hadoop是否能正常运行。

2.1 Hadoop伪分布式安装前的准备

Hadoop支持本地模式、伪分布式模式、完全分布式模式3种安装模式。本地模式,在系统中下载Hadoop,默认情况下,它会被配置为一个独立的模式,用于运行Java程序;伪分布式模式,这是在单台机器上的分布式模拟,这种模式对开发非常有用;完全分布式模式,又叫集群安装,Hadoop安装在最少两台计算机的集群中。本地模式没有太多的实用价值,所以不做讲解。本章主要讲解伪分布式模式,完全分布式模式将在第11章与Hadoop其他组件一起讲解。

2.1.1 安装VMware

本书使用Windows 10(简称Win10)的64位系统,采用的是在Win10系统里安装VMware虚拟机软件,然后再利用VMware安装CentOS 7系统,之后再将Hadoop安装在CentOS 7中。

从网上下载VMware 12的安装包VMware-workstation-full-12.0.0-2985596.exe,直接双击安装。在安装过程中一直单击“下一步”按钮即可完成安装,如图2.1所示。

2.1.2 安装CentOS 7

从CentOS官方网站下载CentOS 7安装镜像文件CentOS-7-x86_64-DVD-1611.iso,文件大小超过4GB。

(1)在计算机硬盘上找一个剩余空间在50GB以上的磁盘,建立一个空文件夹,并重命名,如F:\CentOS 7,作为CentOS 7的虚拟机文件存放目录。然后打开VMware Workstation Pro。单击“文件”菜单→新建虚拟机,选择“自定义(高级)”,单击“下一步”按钮,如图2.2所示。

(2)保持默认设置,继续单击“下一步”按钮,如图2.3所示。

(3)选择“安装程序光盘映像文件(iso)”,单击“浏览”按钮,找到CentOS 7安装镜像文件CentOS-7-x86_64-DVD-1611.iso,然后单击“打开”按钮,结果如图2.4所示。

(4)单击“下一步”按钮,输入个性化Linux相关信息。为了简化,这里在全名、用户名、密码、确认4个输入框中全输入了一个字母“w”。此处输入的密码在Linux登录时需要使用,不能忘记,如图2.5所示。

(5)单击“下一步”按钮,在“位置”处单击“浏览”按钮,选择刚刚建立的文件夹F:\CentOS 7,单击“确定”按钮,结果如图2.6所示。

(6)单击“下一步”按钮,进入“处理器配置”界面,默认配置为1核。为了加快处理器运行速度,这里将配置改为4核,如图2.7所示。

(7)单击“下一步”按钮,进入“此虚拟机的内存”界面。笔者的物理机是16GB内存,所以选择配置8GB内存给虚拟机使用。如果读者的物理机只有8GB内存,可以配置4GB内存给虚拟机使用,如图2.8所示。

(8)单击“下一步”按钮,进入“网络类型”选择,可以保留“NAT”默认方式,如图2.9所示。

(9)单击“下一步”按钮,“SCSI控制器”选择默认的LSI Logic,再继续单击“下一步”按钮,虚拟磁盘类型也选择默认的SCSI,再继续单击“下一步”按钮,保持默认选项“创建新虚拟机磁盘”,再继续单击“下一步”按钮。“最大磁盘大小”默认只有20GB,因为太小了,所以这里调成200GB。其他保持默认,如图2.10所示。

注意:此处并不需要物理机上有200GB剩余空间。

(10)单击“下一步”按钮,“指定磁盘文件”保持默认,继续单击“下一步”按钮,提示“已准备好创建虚拟机”。单击“完成”按钮,即可自动开启安装此虚拟机,如图2.11所示。

(11)进入漫长的安装过程。这个过程视计算机性能而定,大约30分钟,CentOS 7虚拟机就可以安装完成。

2.1.3 配置CentOS 7:接受协议

单击“LICENSE INFORMATION”按钮,如图2.12所示,进入服务协议。勾选“I accept the license agreement”,再单击“Done”按钮,如图2.13所示。然后再单击“FINISH CONFIGURATION”按钮完成配置。

2.1.4 配置CentOS 7:登录系统

不要使用普通用户w登录,因为普通用户权限太少,还得使用“su root”命令切换成root用户。单击“Not listed?”,如图2.14所示,输入超级用户名“root”,如图2.15所示,再输入密码“w”,如图2.16所示,然后单击“Sign In”按钮登录系统。

注意:此处的密码需与图2.5中设置的密码保持一致。

2.1.5 配置CentOS 7:设置IP

在CentOS 7的桌面上单击鼠标右键,选择“Open Terminal”,打开Shell终端,使用“ip a”命令,查看IP地址。笔者的IP地址是192.168.164.149。但这个自动获取的IP地址可能会随着网络环境的改变而改变,因此需要固定住,如图2.17所示。

单击CentOS 7桌面右上角网络图标→Wired→Wired Settings,如图2.18所示。

单击右下角的“设置”图标,如图2.19所示。

选择“IPv4”,在“Addresses”栏选中“Manual”手工指定IP,在“Address”输入框中输入自动获取的IP地址“192.168.164.149”,Netmask(子网掩码)设为255.255.255.0,Gateway(网关)的前三个数字与IP地址一样,最后一位数字设为2。笔者这里设为“192.168.164.2”,请读者根据自己的IP地址进行调整。然后单击“Apply”按钮应用就完成了IP设置,如图2.20所示。

2.1.6 配置CentOS 7:修改主机名

要永久修改主机名,可以使用如下Shell命令,修改主机名为hadoop0。

  [root@hadoop0 ~]# hostnamectl  set-hostname  hadoop0

如图2.21所示。

2.1.7 配置CentOS 7:配置hosts文件

使用vi编辑/etc/hosts文件。

  [root@hadoop0 ~]#vi /etc/hosts

在文件末尾添加一行。

  192.168.164.149 hadoop0

然后保存并退出vi,如图2.22所示。

注意:如果IP地址有改变,/etc/hosts中的IP必须也手动同步更改。

2.1.8 配置CentOS 7:关闭防火墙

在CentOS 7中,可以使用如下命令操作防火墙。

  [root@hadoop0 ~]# systemctl  start  firewalld.service      #开启防火墙
  [root@hadoop0 ~]# systemctl  restart  firewalld.service    #重启防火墙
  [root@hadoop0 ~]# systemctl  stop  firewalld.service       #关闭防火墙
  [root@hadoop0 ~]# systemctl  status  firewalld.service     #查看防火墙状态

为了防止防火墙干扰,可以选择如下命令关闭防火墙。

  [root@hadoop0 ~]# systemctl  stop  firewalld.service      #关闭防火墙
  [root@hadoop0 ~]# systemctl  disable  firewalld.service   #开机禁用防火墙

如图2.23所示。

注意:在生产环境中,服务器防火墙是不能关闭的,否则有重大安全风险。只能配置防火墙规划,打开特定端口。

2.1.9 配置CentOS 7:禁用selinux

如果要永久关闭selinux安全策略,可以修改/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled。

  [root@hadoop0 ~]#vi /etc/selinux/config

如图2.24所示。

2.1.10 配置CentOS 7:设置SSH免密码登录

Hadoop各组件之间使用SSH登录,为了免输密码,可以设计SSH免密码登录。步骤如下。

  [root@hadoop0 /]# cd /root/.ssh             #进入密钥存放目录
  [root@hadoop0 .ssh]# rm  -rf *              #删除旧密钥

然后使用ssh-keygen -t dsa命令生成密码,在这个过程中需要多次按回车键选取默认配置。

  [root@hadoop0 ~]# ssh-keygen  -t  dsa

如图2.25所示。

将生成的密钥文件id_dsa.pub复制到SSH指定的密钥文件authorized_keys中。

  [root@hadoop0 .ssh]# cat id_dsa.pub >>authorized_keys

如图2.26所示。

注意:authorized_keys文件名不能写错,前后都不能有空格。

测试SSH免密码登录是否成功。

  [root@hadoop0 .ssh]# ssh  hadoop0

输入yes继续连接,如果没有提示输入密码,则证明免密码登录成功,如图2.27所示。

2.1.11 配置CentOS 7:重启

要使修改主机名等配置生效,必须重启主机。

  [root@hadoop0 ~]# reboot

2.2 Hadoop伪分布式安装

Hadoop伪分布式安装主要包括安装JDK和安装Hadoop两步,但为了使Windows系统能与虚拟机CentOS进行通信,还需安装WinSCP和PieTTY两个工具软件。

2.2.1 安装WinSCP

WinSCP工具可以实现Windows系统和Linux系统之间共享文件。WinSCP工具安装非常简单,从网上下载winscp516setup.exe,一直单击“下一步”按钮即可完成安装。安装完成后打开WinSCP,输入CentOS 7的主机名、用户名、密码,先单击“保存”按钮,再单击“登录”按钮,即可登录到CentOS 7,如图2.28所示。

在弹出的警告中单击“是”按钮,如图2.29所示。

在Windows和Linux的文件浏览窗口之间拖曳文件即可实现上传或下载,如图2.30所示。

2.2.2 安装PieTTY

PieTTY工具是在Windows系统下使用Shell命令远程登录Linux的工具。PieTTY工具是一个绿色软件,无需安装。从网上下载PieTTY 0.3.26.exe后,直接双击PieTTY 0.3.26.exe文件即可运行。

输入CentOS 7的IP地址,单击“Open”按钮,即可打开登录窗口,如图2.31所示。

在弹出的登录窗口中输入CentOS 7的用户名root和密码即可实现登录,如图2.32所示。

2.2.3 安装JDK

从网上下载jdk-8u152-linux-x64.tar.gz,使用WinSCP将其上传到CentOS 7的/usr/local目录下,准备安装。

1. 解压

首先使用cd命令切换到/usr/local目录,然后使用tar -xvf jdk-8u152-linux-x64.tar.gz解压文件。

  [root@hadoop0 local]#  tar –xvf  jdk-8u152-linux-x64.tar.gz

如图2.33所示。

2. 配置环境变量

使用mv命令重命名解压后的文件夹jdk1.8.0_152为jdk。

  [root@hadoop0 local]# mv jdk1.8.0_152/  jdk

如图2.34所示。

然后将JDK的安装目录/usr/local/jdk配置到/etc/profile的PATH环境变量中,如图2.35所示。

3. 使环境变量立即生效

/etc/profile文件修改后要重新用source命令执行一次才能使设置生效。

  [root@hadoop0 local]# source /etc/profile

如图2.36所示。

4. 测试JDK

使用java –version命令查看JDK的版本号。

  [root@hadoop0 local]# java -version

如图2.37所示。

2.2.4 安装Hadoop

从网上下载hadoop-3.0.0.tar.gz,使用WinSCP将其上传到CentOS 7的/usr/local目录下,准备安装。

1. 解压

首先使用cd命令切换到/usr/local目录,然后使用tar -xvf hadoop-3.0.0.tar.gz解压文件。

  [root@hadoop0 local]#  tar –xvf  hadoop-3.0.0.tar.gz

如图2.38所示。

2. 配置环境变量

为方便记忆,使用mv命令重命名解压后的文件夹hadoop-3.0.0为hadoop。

  [[root@hadoop0 local]# mv hadoop-3.0.0  hadoop

如图2.39所示。

然后将Hadoop的安装目录/usr/local/hadoop配置到/etc/profile的PATH环境变量中。同时,将Hadoop各进程的用户设为root,并配置到/etc/profile。

  export  HDFS_NAMENODE_USER=root 
  export  HDFS_DATANODE_USER=root
  export  HDFS_SECONDARYNAMENODE_USER=root
  export  YARN_RESOURCEMANAGER_USER=root
  export  YARN_NODEMANAGER_USER=root

如图2.40所示。

注意:$HADOOP_HOME/bin和$HADOOP_HOME/sbin都必须加入到PATH环境变量中。Hadoop的早期版本不需要将Hadoop各进程的用户设为root。

3. 使环境变量立即生效

/etc/profile文件修改后要重新用source命令执行一次才能使设置生效。

  [root@hadoop0 local]# source /etc/profile

如图2.41所示。

4. 配置hadoop-env.sh

切换到Hadoop配置文件所在目录/usr/local/hadoop/etc/hadoop,修改其中的hadoopenv.sh,将第37行内容解除注释,并将“# JAVA_HOME=/usr/Java/testing hdfs dfs –ls”修改为“JAVA_HOME=/usr/local/jdk”。

如图2.42所示。

5. 配置core-site.xml

切换到Hadoop配置文件所在目录/usr/local/hadoop/etc/hadoop,修改其中的core-site.xml,在<configuration>和</configuration>标记之间添加如下内容,配置HDFS的访问URL和端口。

  <property>
  <name>fs.defaultFS</name>
   <value>hdfs://hadoop0:9000/</value>
   <description>NameNode URI</description> 
  </property>

如图2.43所示。

6. 配置hdfs-site.xml

切换到Hadoop配置文件所在目录/usr/local/hadoop/etc/hadoop,修改其中的hdfs-site. xml,在<configuration>和</configuration>标记之间添加如下内容,配置访问NameNode和DataNode的元数据存储路径,以及Namenode和SecnodNamenode的访问端口。

  <property>
  <name>dfs.datanode.data.dir</name> <value>file:///usr/local/hadoop/data/
datanode</value>   
  </property>
  <property>
   <name>dfs.namenode.name.dir</name> <value>file:///usr/local/hadoop/data/
namenode</value>   
  </property> 
  <property>
  <name>dfs.namenode.http-address</name>
  <value>hadoop0:50070</value>
  </property> 
  <property> 
   <name>dfs.namenode.secondary.http-address</name> <value>hadoop0: 
50090</value>
  </property>

如图2.44所示。

7. 配置yarn-site.xml

切换到Hadoop配置文件所在目录/usr/local/hadoop/etc/hadoop,修改其中的yarn-site.xml,在<configuration>和</configuration>标记之间添加如下内容,配置nodemanager和resourcemanager的访问端口等信息。

  <property>
  <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</
value>
  </property>
  <property>
  <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> 
  <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property> 
  <property> 
   <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>hadoop0:8025</value></property>
  <property> 
   <name>yarn.resourcemanager.scheduler.address</name> <value>hadoop0: 
8030</value>
  </property>
  <property>
  <name>yarn.resourcemanager.address</name> <value>hadoop0:8050</value> 
  </property>

如图2.45所示。

2.3 Hadoop验证

在启动Hadoop之前先要格式化,启动后可以通过进程查看、浏览文件以及浏览器访问等方式验证Hadoop是否正常运行。

2.3.1 格式化

Hadoop使用之前必须先进行格式化,可以使用如下命令进行格式化。

  [root@hadoop0 hadoop]# hadoop  namenode   -format

如果没有报错,表示成功格式化,如图2.46所示。

注意:如果在使用Hadoop的过程中出错,或者Hadoop启动不了,可能需要重新格式化。重新格式化可以参照停止Hadoop、删除Hadoop下的data和logs文件夹及进行格式化的步骤进行。

  [root@hadoop0 hadoop]# stop-all.sh                 #停止Hadoop
  [root@hadoop0 hadoop]# cd /usr/local/hadoop/       #进入Hadoop安装目录
  [root@hadoop0 hadoop]# rm -rf  data/  logs/        #删除data和logs文件夹
  [root@hadoop0 hadoop]# hadoop namenode  -format    #格式化

2.3.2 启动Hadoop

可以使用start-all.sh命令启动Hadoop的所有进程。

  [root@hadoop0 hadoop]# start-all.sh

如果需要停止Hadoop的所有进程,则使用stop-all.sh。

  [root@hadoop0 hadoop]# stop-all.sh

如果启动过程中没有报错,则说明启动成功,如图2.47所示。

2.3.3 查看Hadoop相关进程

可以使用jps命令查看Hadoop的相关进程。

  [root@hadoop0 hadoop]# jps

如果显示出Hadoop的全部5个进程,则证明启动成功,如图2.48所示。

2.3.4 浏览文件

可以使用Hadoop命令查看HDFS上的文件。

  [root@hadoop0 hadoop]# hadoop fs –ls  /

HDFS上面还没有任何文件,以后可以像使用网盘那样对HDFS上的文件进行上传和下载,如图2.49所示。

2.3.5 浏览器访问

在CentOS上打开浏览器,输入网址http://192.168.164.149:50070或http://hadoop0:50070(浏览器地址栏会默认扩充),即可查看Hadoop运行相关信息,如图2.50所示。

2.4 小结

本章先在Windows系统上安装了VMware虚拟机软件,再利用VMware虚拟机工具安装了CentOS 7,并配置CentOS 7,为安装Hadoop做好了准备。然后再安装了文件传输工具WinSCP和远程连接工具PieTTY,将JDK和Hadoop上传到CentOS 7进行安装。最后格式化并启动Hadoop,通过进程查看、文件浏览、浏览器访问等多种方式验证Hadoop已运行正常。

2.5 配套视频

本章的配套视频有2个:

(1)CentOS 7的安装与配置;

(2)Hadoop 3的安装与验证。

读者可从配套电子资源中获取。

相关图书

SPSS医学数据统计与分析
SPSS医学数据统计与分析
首席数据官知识体系指南
首席数据官知识体系指南
大数据实时流处理技术实战——基于Flink+Kafka技术
大数据实时流处理技术实战——基于Flink+Kafka技术
大数据安全治理与防范——流量反欺诈实战
大数据安全治理与防范——流量反欺诈实战
搜索引擎与程序化广告:原理、设计与实战
搜索引擎与程序化广告:原理、设计与实战
医疗大数据挖掘与可视化
医疗大数据挖掘与可视化

相关文章

相关课程