第3章Hadoop分布式系统 3.1Hadoop概述 众所周知,Hadoop是一个由Apache基金会开发的分布式系统基础架构,可安装在一个商用机器集群中,使机器可彼此通信并协同工作,以高度分布式的方式共同存储和处理大量数据。简单地说,Hadoop是一个海量数据分布式处理的开源软件框架,被部署到一个集群上。 3.1.1Hadoop简介 Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。 Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,所以它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。它主要有以下几个优点。 (1) 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。 (2) 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。 (3) 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。 (4) 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。 3.1.2Hadoop的发展历程 2003年,Google发表了第一篇关于其云计算核心技术GFS的论文。该论文呈现出Doug Cutting等在研发Apache开源项目Nutch搜索引擎时,正面临着如何将其架构扩展到可以处理数10亿规模网页的难题。继而,他们于2004年编写了一个开放源代码的类似系统——Nutch分布式文件系统(Nutch Distributed File System,NDFS)。同年,Google在著名的OSDI国际会议上发表了一篇题为MapReduce: Simplified Data Processing on Large Clusters的论文,简要介绍MapReduce的基本设计思想。该论文发表后,MapReduce编程模型在解决大型分布式并行计算问题上具有极大的可操作性。紧接着,Nutch团队尝试依据Google MapReduce的设计思想,模仿Google MapReduce框架的设计思路,用Java设计实现出了一套新的MapReduce并行处理软件系统,并将其与Nutch分布式文件系统NDFS结合,用以支持Nutch搜索引擎的数据处理。2006年,他们把NDFS和MapReduce从Nutch项目中分离出来,成为一套独立的大规模数据处理软件系统。有意思的是这个系统的命名是使用Doug Cutting小儿子当时牙牙学语称呼自己的玩具小象的名字“Hadoop”。Hadoop能支持PB级海量数据,可扩展性强。可靠、高效、可扩展和开源的特性,使得Hadoop技术得到了迅猛发展,并在2008年成为Apache的顶级项目。 自从2006年Hadoop正式成为Apache开源组织的独立项目后,由于其低成本、高性能,深受广大用户的欢迎,经过短短几年的发展,Hadoop及其技术在不断地改进完善中,目前已形成一个强大的系统。 下面列举了Hadoop在成为独立项目后的发展与演进中的重要事件,以便大家了解Hadoop的发展历程。 (1) Hadoop 最初是由Apache Lucene 项目的创始人Doug Cutting 开发的文本搜索库。Hadoop源自于2002年的Apache Nutch 项目——一个开源的网络搜索引擎,并且也是Lucene项目的一部分。 (2) 2004年,Nutch项目也模仿GFS 开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS 的前身。 (3) 2004年,谷歌公司又发表了另一篇具有深远影响的论文,阐述了MapReduce 分布式编程的思想。 (4) 2005年,Nutch 开源实现了谷歌的MapReduce。 (5) 2006年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。 (6) 2007年4月,雅虎公司实现了包含1000个计算节点的Hadoop集群。 (7) 2008年,淘宝开始投入研究基于Hadoop的系统——云梯,并将其用于处理电子商务相关数据。云梯1的总容量大概为9.3PB,包含了1100台机器,每天处理约18000道作业,扫描500TB数据。 (8) 2008年1月,Hadoop成为Apache顶级项目,获得了业界更为广泛的关注。 (9) 2008年2月,雅虎公司宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。 (10) 2008年7月,Hadoop打破1TB数据排序基准测试记录。雅虎公司的一个Hadoop集群用209秒完成1TB数据的排序 ,比上一年的纪录保持者保持的297秒快了近90秒。 (11) 2009年5月,雅虎的团队使用Hadoop对1TB的数据进行排序只花了62秒时间。 (12) 2009年7月,Hadoop Core项目更名为Hadoop Common; MapReduce 和 HDFS成为Hadoop项目的独立子项目; Avro和Chukwa成为Hadoop新的子项目。 (13) 2010年5月,Avro数据传输中间件和HBase数据库从Hadoop项目中脱离出来,成为Apache顶级项目。此外,IBM提供了基于Hadoop 的大数据分析软件——InfoSphere BigInsights,包括基础版和企业版。 (14) 2010年9月,Hive数据仓库工具和Pig数据分析平台从Hadoop项目中脱离出来,成为Apache顶级项目。 (15) 2011年1月,ZooKeeper 脱离Hadoop,成为Apache顶级项目。 (16) 2011年5月,Mapr Technologies公司推出分布式文件系统和MapReduce引擎——Mapr Distribution for Apache Hadoop。该项目由Hortonworks 在2010年3月提出,HCatalog主要用于解决数据存储、元数据的问题,主要解决HDFS的瓶颈,它提供了一个地方来存储数据的状态信息,这使得数据清理和归档操作可以很容易地进行。 (17) 2011年8月,Cloudera公布了一项有益于合作伙伴生态系统的计划——创建一个生态系统,以便硬件供应商、软件供应商及系统集成商可以一起探索如何使用Hadoop更好地洞察数据。 (18) 2011年12月,Hadoop1.0.0版本发布,标志着Hadoop技术进入成熟期。 (19) 2012年5月,Hadoop发布2.0 Alpha版本,对MapReduce、HDFS等部分进行了重大改进,标志着Hadoop技术进入一个新的发展阶段。 (20) 2013年8月,Hadoop1.2.1稳定版发布。 (21) 2014年2月,Spark逐渐代替MapReduce成为Hadoop的默认执行引擎,并成为Apache基金会顶级项目。 (22) 2015年10月,Cloudera公布继HBase以后的第一个Hadoop原生存储替代方案——Kudu。 (23) 2015年12月,Cloudera发起的Impala和Kudu项目加入Apache孵化器。 (24) 2017年12月,Apache Hadoop 3.0.0版本发布。 3.1.3Hadoop原理及运行机制 Hadoop的核心由3个子项目组成: Hadoop Common、HDFS、和MapReduce。其中,Hadoop Common在Hadoop 0.20版本以前被称为Hadoop Core。Hadoop Common子项目为Hadoop整体构架提供基础支撑性功能。Hadoop Common包括文件系统(File System)、远程过程调用协议(RPC)和数据串行化库(Serialization Libraries)。HDFS是一个分布式文件系统,具有低成本、高可靠性、高吞吐量的特点。MapReduce是一个计算模型,用于大数据量的计算。在实际应用环境中,这3个核心子项目配合默契,结合其他子项目共同完成用户提交的大数据处理请求。下面主要讲述了HDFS和MapReduce这两个核心子项目所包含的主要逻辑组件。 1. HDFS组件 HDFS(Hadoop Distributed FileSystem)是一种专门为MapReduce这类框架下的大规模分布式数据处理而设计的文件系统。可以把一个大数据集(100TB)在HDFS中存储为单个文件,大多数其他的文件系统无力实现这一点。 HDFS的组件主要有Namenode、SecondaryNamenode及Datanode。 1) Namenode Namenode,即元数据节点。元数据节点用来管理文件系统的命名空间。它将所有文件和文件夹的元数据保存在一个文件系统树中。这些信息也会存储在Namenode维护的两个本地磁盘文件中,这两个本地磁盘文件是命名空间镜像文件(name space image)和编辑日志文件(editlog)。Namenode还保存了一个文件包括哪些数据块、分布在哪些数据节点上这些信息。然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而来。 2) SecondaryNamenode SecondaryNamenode,即从元数据节点。在Hadoop集群环境上,只有一个Namenode节点。那么,一旦Namenode节点出现故障,整个系统将会受到影响。为了提高Namenode的可靠性,从Hadoop 0.23版本开始引入了Secondary Namenode。但是,SecondaryNamenode并不是Namenode出现问题的时候的备用节点,它和Namenode负责不同的事情。SecondaryNamenode的主要功能是周期性地将元数据节点命名空间的镜像文件和修改日志文件合并,以防日志文件过大。合并过后的命名空间镜像文件也在SecondaryNamenode中保存了一份,以便在元数据节点出现故障时,可以恢复数据。 3) Datanode Datanode,即数据节点。Datanode是文件系统中真正存储数据的地方,是HDFS文件系统中保存数据的节点。HDFS中的文件通常被分割成多个数据块,以冗余备份的形式存储在多个Datanode中。客户端(client)或者元数据信息(Namenode)可以向数据节点请求写入或者读出数据块; 而Datanode周期性地向Namenode汇报其存储的数据块信息。 2. MapReduce组件 MapReduce 也采用了 Master/Slave(M/S)架构。它主要由JobClient、JobTracker、TaskTracker 和 Task组件组成。下面分别对这几个组件进行介绍。 1) JobClient 用户编写的MapReduce程序通过JobClient提交到JobTracker端; 同时,用户可通过Client提供的一些接口查看作业运行状态。在Hadoop内部用“作业” (Job)表示MapReduce程序。一个 MapReduce程序可对应若干个作业,而每个作业会被分解成若干个Map/Reduce任务(Task)。 2) JobTracker JobTracker 主要负责MapReduce的资源监控和作业调度。JobTracker 监控所有 TaskTracker 与作业的状态情况,一旦发现失败情况后,其会将相应的任务转移到其他节点; 同时,JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop 中,任务调度器是一个可插拔的模块,用户可以根据自己的需要设计相应的调度器。每一个Hadoop集群中只有一个JobTracker。 3) TaskTracker TaskTracker主要负责执行由JobTracker分配的任务。TaskTracker会周期性地通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、结束任务等)。 4) Task Task 分为 MapTask 和 ReduceTask 两种,均由TaskTracker启动,负责具体地执行Map任务和Reduce任务的程序。 3.2Hadoop相关技术及生态系统 Hadoop最为核心的技术是HDFS和MapReduce。除此之外,为了满足大数据平台更高的存储和运算要求,Hadoop技术不断拓展,在原来的基础上研发了很多其他技术,构成一个完整的分布式计算系统。Hadoop生态系统主要包括HDFS、MapReduce、Spark、Storm、HBase、Hive、Pig、ZooKeeper、 Avro、Sqoop、Ambari、HCatalog、Chukwa、Flume、Tez、Phoenix、Mahout、Shark等,Hadoop生态系统如图31所示。 图31Hadoop生态系统 (1) HDFS(Hadoop Distributed File System): Hadoop分布式文件系统,由早期的NDFS演化而来。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。并且,其简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。 (2) MapReduce: 一个编程模型和软件框架,用于在大规模计算机集群上编写对大数据进行快速处理的并行化程序。 (3) Spark: 一个开源的数据分析集群计算框架,最初由加州大学伯克利分校AMPLab开发,建立于HDFS之上。Spark与Hadoop一样,用于构建大规模、低延时的数据分析应用。Spark采用Scala语言实现,使用Scala作为应用框架,能够对大数据进行分析处理。 (4) Storm: 一个分布式的、容错的实时计算系统,由BackType开发,后被Twitter收购。Storm属于流处理平台,多用于实时计算并更新数据库。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可用于“分布式RPC”,以并行的方式运行大型的运算。 (5) HBase: 一个分布式和面向列的动态模式数据库,不同于一般的关系数据库,它是一个适合于非结构化大数据存储的数据库,支持随机、实时读/写访问。 (6) Hive: Hadoop中的一个重要子项目,最早由Facebook设计,是建立在Hadoop基础上的数据仓库架构,它提供了类似于SQL的查询语言,通过实现该语言,可以方便地进行数据汇总、特定查询,以及分析存放在Hadoop兼容文件系统中的大数据。 (7) Pig: 运行在Hadoop上,是对大型数据集进行分析和评估的平台。Pig包括了一个数据分析语言和运行环境,其特点是其结构设计支持真正的并行化处理,因此适合应用于大数据处理环境。与Hive一样,Pig降低了对大型数据集进行分析和评估的门槛。 (8) Oozie: 一个管理Hadoop作业、可伸缩、可扩展、可靠的工作流调度系统,它内部定义了三种作业: ①工作流作业: 由一系列动作构成的有向无环图(DAGs); ②协调器作业: 按时间频率周期性触发Oozie工作流的作业; ③Bundle作业: 管理协调器作业。 (9) ZooKeeper: 作为一个分布式的服务框架,解决了分布式计算中的一致性问题。在此基础上,ZooKeeper可用于处理分布式应用中经常遇到的一些数据管理问题,如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 (10) Avro: 由Doug Cutting牵头开发,是一个数据序列化系统。类似于其他序列化机制,Avro可以将数据结构或者对象转换成便于存储和传输的格式,其设计目标是用于支持数据密集型应用,适合大规模数据的存储与交换。 (11) Sqoop: SQLtoHadoop的缩写,是Hadoop的周边工具,它的主要作用是在结构化数据存储与Hadoop之间进行数据交换,即可以用于传统数据库(如SQL、Oracle)中的数据导入HDFS或者MapReduce,并将处理后的结果导出到传统数据库中。 (12) Ambari: 一个用于安装、管理和监控Hadoop集群的Web界面工具,它提供一个直观的操作工具和一个健壮的Hadoop API,可以隐藏复杂的Hadoop操作,使集群操作大大简化。 (13) HCatalog: 一个用于管理Hadoop产生的数据的表存储管理系统。它提供了一个共享的数据模板和数据类型的机制,并对数据表进行抽象,同时支持Hadooop不同数据处理工具之间的联系。 (14) Chukwa: 开源的数据收集系统,用于监控大规模分布式系统。它构建在Hadoop的HDFS和MapReduce基础之上,继承了Hadoop的可伸缩性和鲁棒性。Chukwa包含一个强大和灵活的工具集,提供了数据的生成、收集、排序、去重、分析和展示等一系列功能,是Hadoop使用者、集群运营人员和管理人员的必备工具。 (15) Flume: Flume是Cloudera开发维护的分布式、可靠、高可用的日志收集系统。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议的数据。 (16) Tez: 一个基于Hadoop YARN之上的DAG(有向无环图,Directed Acyclic Graph)计算框架。它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子过程,减少任务的运行时间。 (17) Phoenix: 一个构建在Apache HBase之上的SQL中间层,完全使用Java编写,提供HBase scan,并编排执行以生成标准的JDBC结果集,直接使用HBase API、协同处理器与自定义过滤器。对于简单查询来说,其性能量级是毫秒; 对于百万级别的行数来说,其性能量级是秒。 (18) Mahout: 一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多种MapReduce模式的数据挖掘算法。 (19) Shark: 即Hive on Spark,一个专为Spark打造的大规模数据仓库系统,兼容Apache Hive,无须修改现有的数据或者查询,就可以用100倍的速度执行Hive QL。Shark支持Hive查询语言、元存储、序列化格式及自定义函数,与现有Hive部署无缝集成,是一个更快、更强大的替代方案。 3.3操作实践: Hadoop安装与配置 视频讲解 3.3.1安装JDK 由于Hadoop是由Java语言开发的,所以需要安装JDK。安装JDK的具体步骤如下。 (1) 下载JDK安装包jdk8u141linuxx64.tar.gz(本书将下载好的安装包放在home/hadoop/software目录下)。 (2) 卸载Centos自带的OpenJDK(root权限下)。 查看系统已有的openjdk,如图32所示。 [root@master ~]# rpm -qa|grep jdk 图32查看openjdk 卸载上述找到的openjdk包,如图33和图34所示。 [root@master ~]# yum y remove java1.8.0openjdkheadless1.8.0.1024.b14.el7.x86_64 图33卸载openjdk包(一) [root@master ~]# yum y remove java1.7.0openjdkheadless1.7.0.1112.6.7.8.el7.x86_64 图34卸载openjdk包(二) 这时,已有Openjdk卸载完了。(注: 同样的操作在节点slave1和slave2上进行。) (3) 传输文件,将文件夹software中的jdk安装包复制到文件夹/opt/java/里面。 [root@master ~]# cd /home/hadoop/software [root@master software]# ls hadoop-2.7.3-src.tar.gz jdk-8u141-linux-x64.tar.gz [root@master software]# cp jdk-8u141-linux-x64.tar.gz/opt/java/ 将/home/hadoo/下的安装包复制到/opt/目录下,如图35所示。 [root@master opt]# cp /home/hadoop/jdk-8u141-linux-x64.tar.gz /opt/ 图35复制安装包 解压命令: tar -zxvf安装包名 [root@master opt]# tar -zxvf jdk-8u141-linux-x64.tar.gz 查看解压后的安装包: [root@master opt]# ls jdk1.8.0_141 jdk-8u141-linux-x64.tar.gz rh 同样的安装步骤在其余节点上进行,如图36和图37所示。 图36查看安装包(一) 图37查看安装包(二) 进入目录下查看: [root@master software]# cd/opt/java [root@master java]# ls jdk-8u141-linux-x64.tar.gz [root@master java]# tar -zxvf jdk-8u141-linux-x64.tar.gz 安装完毕后,记录下jdk的路径。 (4) 将安装的jdk路径添加至系统环境变量中。 修改系统环境变量命令: [root@master ~]# gedit /root/.bash_profile 在文件末尾加上如下内容,如图38所示。 export JAVA_HOME=/opt/java/jdk1.8.0_141/ export PATH=$JAVA_HOME/bin:$PATH export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 图38将安装后jdk路径添加至系统环境变量中 (5)关闭profile文件,执行下列命令使配置生效: [root@master ~]# source /root/.bash_profile 此时,我们就可以通过java version命令检查jdk路径是否配置成功。 Master,如图39所示。 图39Master Slave1,如图310所示。 图310Slave1 Slave2,如图311所示。 图311Slave2 至此,所有节点的jdk 1.8安装完毕。 3.3.2安装Hadoop Hadoop2.7.3的安装步骤如下。 (1) 下载Hadoop2.7.3安装包hadoop2.7.3.tar.gz。 (2) 在安装包所在目录下解压文件,如图312所示。 [root@master software]# tar -zxvf hadoop-2.7.3.tar.gz #复制解压后的hadoop-2.7.3文件到/opt/目录下 [root@master ~]# cp -r /home/hadoop/hadoop-2.7.3/opt/ 图312安装Hadoop 3.3.3配置Hadoop 配置Hadoop的具体步骤如下。 (1) 在master节点上,首先在/home/hadoop/目录下创建4个新文件夹,如图313所示。 图313创建新文件夹 (2) 同样在slave1、slave2节点上创建4个新文件夹,如图314所示。 图314在Slave1、Slave2节点上创建新文件夹 进入到解压后的hadoop2.7.3/etc/hadoop目录下,开始配置文件: ① hadoopenv.sh: export JAVA_HOME=/opt/jdk1.8.0_141/ export HADOOP_LOG_DIR=/home/hadoop/hadoopdir/logs export HADOOP_PID_DIR=/home/hadoop/hadoopdir/pids ② Mapredenv.sh: 添加下列语句: export JAVA_HOME=/opt/ jdk1.8.0_141/ export HADOOP_MAPRED_LOG_DIR=/home/hadoop/hadoopdir/logs export HADOOP_MAPRED_PID_DIR=/home/hadoop/hadoopdir/pids ③ yarnenv.sh: export JAVA_HOME=/opt/ jdk1.8.0_141/ YARN_LOG_DIR=/home/hadoop/hadoopdir/logs ④ Slaves文件,如图315所示。 图315配置Slaves文件 ⑤ Coresite.xml: fs.defaultFS hdfs://master:9000 io.file.buffer.size 131072 hadoop.tmp.dir file:///home/hadoop/hadoopdir/temp ⑥ Hdfssite.xml: dfs.namenode.name.dir file:///home/hadoop/hadoopdir/name dfs.datanode.data.dir file:///home/hadoop/hadoopdir/data dfs.replication 2 dfs.blocksize 64m dfs.namenode.secondary.http-address master:9001 dfs.webhdfs.enabled true ⑦ Mapredsite.xml。 首先执行复制命令: [root@master hadoop]# cp /opt/hadoop-2.7.3/etc/hadoop/mapred-site.xml.template /opt/hadoop-2.7.3/etc/hadoop/mapred-site.xml 然后打开文件进行添加: mapreduce.framework.name yarn true mapreduce.jobhistory.address master:10020 mapreduce.jobtracker.http.address master:50030 mapred.job.tracker http://master:9001 mapreduce.jobhistory.webapp.address master:19888 ⑧ Yarnsite.xml: yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.hostname master yarn.resourcemanager.scheduler.address master:8030 yarn.resourcemanager.resource-tracker.address master:8031 yarn.resourcemanager.address master:8032 yarn.resourcemanager.admin.address master:8033 yarn.resourcemanager.webapp.address master:8088 至此,所有配置文件已完成。 (3) 在master机器上,把整个配置好的hadoop2.7.3文件夹复制到其他节点。 注意: 在这里,为了统一,把master根目录下/opt/中的hadoop2.7.3复制到/home/hadoop/目录下。 [root@master~]# scp -r /opt/ hadoop-2.7.3 hadoop@master: /home/hadoop/ [root@master~]# scp -r /opt/ hadoop-2.7.3 hadoop@slave1: /home/hadoop/ [root@master~]# scp -r /opt/ hadoop-2.7.3 hadoop@slave2: /home/hadoop/ 所以,现在所有节点配置好的文件都在/home/hadoop/目录下了,如图316所示。 图316配置文件完成 3.3.4格式化 进入hadoop2.7.3/bin目录,进行格式化,如图317和图318所示。 [root@master ~]# cd /home/hadoop/hadoop-2.7.3/bin [root@master bin]# ./hdfs namenode -format 图317格式化(一) 图318格式化(二) 3.3.5运行Hadoop 进入cd/home/hadoop/hadoop2.7.3/sbin目录下。 (1) 启动hdfs集群: [root@master sbin]#./start-dfs.sh (2) 启动yarn集群: [root@master sbin]# ./start-yarn.sh 这样,hadoop集群就跑起来了。如果要关闭,在sbin目录下进行: [root@master sbin]#./stop-dfs.sh [root@master sbin]#./stop-yarn.sh (3) 使用命令jps查看节点: Master,如图319所示。 图319Master Slave1,如图320所示。 图320Slave1 Slave2,如图321所示。 图321Slave2 如果要关闭,在sbin目录下,执行以下命令: [root@master sbin]# ./stop-dfs.sh [root@master sbin]# ./stop-yarn.sh 然后需要用浏览器打开http://master:50070,即HDFS的Web页面,可以看到集群信息和Datenode相关信息,如图322所示。 图322打开HDFS的Web页面 用浏览器打开http://master:8088,即YARN的Web页面,可以看到集群相关信息,如图323所示。 图323 小结 本章首先介绍了Hadoop海量数据分布式处理框架、Hadoop的优点及Hadoop的发展历程,然后详细描述了Hadoop原理、运行机制,以及3个重要的组件(Hadoop Common、HDFS和MapReduce),接着简述了Hadoop开源技术生态系统的相关组件,最后重点介绍了Hadoop安装与配置,包括JDK的安装与配置、Hadoop的安装与配置、Hadoop的运行。 习题 1. 简述Hadoop系统及其优点。 2. 简述Hadoop原理及运行机制。 3. 简述Hadoop技术生态系统。 4. 学会JDK的安装和配置。 5. 掌握Hadoop的安装和配置。