1、第2章初识HadoopHadoop大数据原理与应用西安电子科技大学出版社【知识与能力要求】第2章 初识Hadoop 2.1 Hadoop概述 2.2 Hadoop生态系统 2.3 Hadoop体系架构 2.4 Hadoop应用现状 2.5 部署和运行Hadoop2.1 Hadoop概述 Apache Hadoop于2008年1月成为Apache顶级项目。Hadoop是一个开源的、可运行于大规模集群上的分布式存储和计算的软件框架,它具有高可靠、弹性可扩展等特点,非常适合处理海量数据。Hadoop实现了分布式文件系统HDFS和分布式计算框架MapReduce等功能,被公认为行业大数据标准软件,在业
2、内得到了广泛应用。2.1.1 Hadoop简介 Hadoop是Apache基金会旗下的一个可靠的、可扩展的分布式计算开源软件框架,为用户提供了系统底层透明的分布式基础架构。Hadoop基于Java语言开发,具有很好的跨平台特性,它允许用户使用简单的编程模型在廉价的计算机集群上对大规模数据集进行分布式处理。Hadoop旨在从单一服务器扩展到成千上万台机器,每台机器都提供本地计算和存储,且将数据备份在多个节点上,由此来提升集群的高可用性,而不是通过硬件提升,当一台机器宕机时,其它节点依然可以提供数据和计算服务。2.1.1 Hadoop简介 第一代Hadoop(即Hadoop 1.0)的核心由分布式
3、文件系统HDFS和分布式计算框架MapReduce组成,为了克服Hadoop1.0中HDFS和MapReduce的架构设计和应用性能方面的各种问题,提出了第二代Hadoop(即Hadoop 2.0),Hadoop 2.0的核心包括分布式文件系统HDFS、统一资源管理和调度框架YARN和分布式计算框架MapReduce。2.1.1 Hadoop简介 HDFS是谷歌文件系统GFS的开源实现,是面向普通硬件环境的分布式文件系统,适用于大数据场景的数据存储,提供了高可靠、高扩展、高吞吐率的数据存储服务。MapReduce是谷歌MapReduce的开源实现,是一种简化的分布式应用程序开发的编程模型,允许
4、开发人员在不了解分布式系统底层细节和缺少并行应用开发经验的情况下,能快速轻松地编写出分布式并行程序,将其运行于计算机集群上,完成对大规模数据集的存储和计算。YARN是将MapReduce 1.0中JobTracker的资源管理功能单独剥离出来而形成,它是一个纯粹的资源管理和调度框架,并解决了Hadoop 1.0中只能运行MapReduce框架的限制,可在YARN上运行各种不同类型计算框架包括MapReduce、Spark、Storm等。2.1.2 Hadoop发展简史 Hadoop这个名字不是单词缩写,Hadoop之父道格卡丁(Doug Cutting)曾这样解释Hadoop名字的由来:“这个
5、名字是我的孩子给一个棕黄色的大象玩具的取的名字。我的命名标准就是简短,容易发音和拼写,并且不会被用于别处。小孩子恰恰是这方面的高手。”2.1.2 Hadoop发展简史 Hadoop起源于开源的网络搜索引擎Apache Nutch,它本身是Lucence项目的一部分。Nutch项目开始于2002年,一个可以代替当时主流搜索产品的开源搜索引擎。但后来,它的创造者Doug Cutting和Mike Cafarella遇到了棘手难题,该搜索引擎框架只能支持几亿数据的抓取、索引和搜索,无法扩展到拥有数十亿网页的网络。2003年,Google发表了论文“The Google File System”,可以
6、解决大规模数据存储的问题。于是在2004年,Nutch项目借鉴谷歌GFS使用Java语言开发了自己的分布式文件系统,即Nutch分布式文件系统NDFS,也就是HDFS的前身。2.1.2 Hadoop发展简史 2004年,Google又发表了一篇具有深远影响的论文“MapReduce:Simplifed Data Processing on Large Clusters”,阐述了MapReduce分布式编程思想。Nutch开发者们发现Google MapReduce所解决的大规模搜索引擎数据处理问题,正是他们当时面临并亟待解决的难题。于是,Nutch开发者们模仿Google MapReduce框
7、架设计思路,使用Java语言设计并2005年初开源实现了MapReduce。2006年2月,Nutch中的NDFS和MapReduce独立出来,形成Lucence的子项目,并命名为Hadoop,同时Doug Cutting进入雅虎,雅虎为此组织了专门的团队和资源,致力于将Hadoop发展成为能够处理海量Web数据的分布式系统。2.1.2 Hadoop发展简史 2007年,纽约时报把存档报纸扫描版的4TB文件在100台亚马逊虚拟机服务器上使用Hadoop转换为PDF格式,整个过程所花时间不到24小时,这一事件更加深了人们对Hadoop的印象。2008年,Google工程师Christophe B
8、isciglia发现把当时的Hadoop放到任意一个集群中去运行是一件很困难的事,所以与好友Facebook的Jeff Hammerbacher、雅虎的Amr Awadallah、Oracle的Mike Olson成立了专门商业化Hadoop的公司Cloudera。2008年1月,Hadoop成为Apache顶级项目。2.1.2 Hadoop发展简史 2008年4月,Hadoop打破世界纪录,成为最快的TB级数据排序系统。在一个910节点的集群上,Hadoop在209秒内完成了对1TB数据的排序,击败前一年的297秒冠军。2009年4月,Hadoop对1TB数据进行排序只花了62秒。2011年
9、,雅虎将Hadoop团队独立出来,由雅虎主导Hadoop开发的副总裁Eric Bladeschweiler带领二十几个核心成员成立子公司Hortonworks,专门提供Hadoop相关服务。成立3年就上市。同年12月,发布1.0.0版本,标志着Hadoop已经初具生产规模。2.1.2 Hadoop发展简史 2012年,Hortonworks推出YARN框架第一版本,从此Hadoop的研究进入一个新层面。2013年10月,发布2.2.0版本,Hadoop正式进入2.x时代。2014年,Hadoop 2.X更新速度非常快,先后发布2.3.0、2.4.0、2.5.0和2.6.0,极大完善了YARN框
10、架和整个集群的功能,很多Hadoop研发公司如Cloudera、Hortonworks都与其他企业合作共同开发Hadoop新功能。2015年4月,发布2.7.0版本。2.1.2 Hadoop发展简史 2016年,Hadoop及其生态圈组件Spark等在各行各业落地并得到广泛应用,YARN持续发展以支持更多计算框架。同年9月,发布Hadoop 3.0.0-alpha1版本,预示着Hadoop 3.x时代的到来。2018年11月,发布Hadoop 2.9.2,同年10月发布Ozone第一版0.2.1-alpha,Ozone是Hadoop的子项目,该项目提供了分布式对象存储,建立在Hadoop分布式
11、数据存储HDDS上。2019年1月,发布Hadoop 3.2.0,发布Submarine第一版0.1.0,Submarine是Hadoop的子项目,该项目旨在资源管理平台如YARN上运行深度学习应用程序如TensorFlow、PyTorch等。2.1.3 Hadoop特点(1)高可靠性 采用冗余数据存储方式,即使一个副本发生故障,其它副本也可以保证正常对外提供服务。(2)高扩展性 Hadoop设计目标是可以高效稳定地运行在廉价的计算机集群上,可以方便添加机器节点,扩展到数以千计的计算机节点上。(3)高效性 作为分布式计算平台,能够高效地处理PB级数据。(4)高容错性 采用冗余数据存储方式,自动
12、保存数据的多个副本,当读取该文档出错或者某一台机器宕机,系统会调用其它节点上的备份文件,保证程序顺利运行。2.1.3 Hadoop特点(5)低成本 Hadoop是开源的,即不需要支付任何费用即可下载安装使用。另外,Hadoop集群可以部署在普通机器上,而不需要部署在价格昂贵的小型机上,能够大大减少公司的运营成本。(6)支持多种平台 Hadoop支持Windows和GNU/Linux两类运行平台,Hadoop是基于Java语言开发的,因此其最佳运行环境无疑是Linux,Linux的发行版本众多,常见的有CentOS、Ubuntu、Red Hat、Debian、Fedora、SUSE、openSU
13、SE等。(7)支持多种编程语言 Hadoop上的应用程序可以使用Java、C+编写。2.1.4 Hadoop版本 Hadoop的发行版本有两类,一类是由社区维护的免费开源的Apache Hadoop,另一类是一些商业公司如Cloudera、Hortonworks、MapR等推出的Hadoop商业版。2.1.4 Hadoop版本 Apache Hadoop版本分为三代,分别称为Hadoop 1.0、Hadoop 2.0、Hadoop 3.0。第一代Hadoop包含0.20.x、0.21.x和0.22.x三大版本,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则
14、增加了HDFS NameNode HA等重要新特性。第二代Hadoop包含0.23.x和2.x两大版本,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特,需要注意的是,Hadoop 2.0主要由Yahoo独立出来的Hortonworks公司主持开发。与Hadoop 2.0相比,Hadoop 3.0具有许多重要的增强功能,包括HDFS可擦除编码,YARN时间轴服务v.2,支持2个以上的NameNode,支持Microsoft Azur
15、e Data Lake和Aliyun Object Storage System文件系统连接器,并服务于深度学习用例和长期运行的应用等重要功能,新增的组件Hadoop Submarine使数据工程师能够在同一个Hadoop YARN集群上轻松开发、训练和部署深度学习模型。2.1.4 Hadoop版本 Hadoop商业版主要是提供对各项服务的支持,高级功能要收取一定费用,这对一些研发能力不太强的企业来说是非常有利的,公司只要出一定的费用就能使用到一些高级功能,每个发行版都有自己的特点。(1)Cloudera Distribution Hadoop(CDH)Cloudera CDH版本的Hadoo
16、p是现在国内公司使用最多的。其优点为Cloudera Manager(简称CM)配置简单,升级方便,资源分配设置方便,非常有利于整合Impala,官方文档详细,与Spark整合非常好。在CM基础上,我们通过页面就能完成对Hadoop生态系统各种环境的安装、配置和升级。其缺点为CM不开源,Hadoop某些功能与社区版有出入。目前,CDH的最新版本为CDH 5和CDH 6,读者可到官网https:/获取更多信息。(2)Hortonworks Data Platform(HDP)Hortonworks HDP优点为原装Hadoop、纯开源,版本与社区版一致,支持Tez,集成开源监控方案Ganglia
17、和Nagios;缺点为安装、升级、添加节点、删除节点比较麻烦。目前,HDP的最新版本为HDP 2和HDP 3,读者可到官网https:/获取更多信息。2.2 Hadoop生态系统 Hadoop 2.0主要由三部分构成:分布式文件系统HDFS、统一资源管理和调度框架YARN、分布式计算框架MapReduce;但广义上来讲,Hadoop是指以Hadoop为基础的生态系统,是一个庞大体系,Hadoop仅是其中最基础、最重要的部分,生态系统中每个组件只负责解决某一特定问题。HiveMapReduceSparkImpalaZooKeeperKafkaFlumeYARNHDFSCommonPigMahou
18、tSpark SQLSqoopHBaseAmbari1.Hadoop Common Hadoop Common是Hadoop体系中最底层的一个模块,为Hadoop各子项目提供各种工具,如系统配置工具Configuration、远程过程调用RPC、序列化机制和日志操作,是其他模块的基础。2.HDFS HDFS(Hadoop Distributed File System)是Hadoop分布式文件系统,是Hadoop三大核心之一,是针对谷歌文件系统GFS(Google File System)的开源实现(The Google File System,2003)。HDFS是一个具有高容错性的文件系统
19、,适合部署在廉价的机器上,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。大数据处理框架如MapReduce、Spark等要处理的数据源大部分都存储在HDFS上,Hive、HBase等框架的数据通常也存储在HDFS上。简而言之,HDFS为大数据的存储提供了保障。3.YARN YARN(Yet Another Resource Negotiator)是统一资源管理和调度框架,它解决了Hadoop 1.0资源利用率低和不能兼容异构计算框架等多种问题,它提供了资源隔离方案和双调度器的实现,可在YARN上运行各种不同类型计算框架包括MapReduce、Spark、Storm、Tez等。
20、Hadoop MapReduce是一个分布式的、并行处理的编程模型,是针对Google MapReduce的开源实现(MapReduce:Simplified Data Processing on Large Clusters,2004)。开发人员可以在不了解分布式系统底层设计原理和缺少并行应用开发经验的情况下,就能使用MapReduce计算框架 快速轻松地编写出分布式并行程序,完成对大规模数据集(大于1TB)的并行计算。MapReduce利用函数式编程思想,将复杂的、运行于大规模集群上的并行计算过程高度抽象为两个函数:Map和Reduce,其中Map是对可以并行处理的小数据集进行本地计算并输
21、出中间结果,Reduce是对各个Map的输出结果进行汇总计算得到最终结果。4.MapReduce5.Spark Spark是加州伯克利大学AMP实验室开发的新一代计算框架,对迭代计算很有优势,和MapReduce计算框架相比性能提升明显,并且都可以与YARN进行集成。6.HBase HBase是一个分布式的、面向列族的开源数据库,一般采用HDFS作为底层存储。HBase是针对Google Bigtable的开源实现(Bigtable:A Distributed Storage System for Structured Data,2006),二者采用相同数据模型,具有强大的非结构化数据存储能力
22、。HBase使用ZooKeeper进行管理,它保障查询速度的一个关键因素就是RowKey的设计是否合理。7.ZooKeeper ZooKeeper是Google Chubby的开源实现,是一个分布式的、开放源码的分布式应用程序协调框架,为大型分布式系统提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理、分布式锁等分布式基础服务,并广泛应用于大型分布式系统如Hadoop、HBase、Kafka等开源系统,例如HDFS NameNode HA自动切换、HBase高可用、Spark Standalone模式下Master HA机制都是通过ZooKeeper来实现的。8.Hive Hi
23、ve是一个基于Hadoop的数据仓库工具,最早由Facebook开发并使用。Hive让不熟悉MapReduce的开发人员直接编写SQL语句来实现对大规模数据的统计分析操作,Hive可以将SQL语句转换为MapReduce作业,并提交到Hadoop集群上运行。Hive大大降低了学习门槛,同时也提升了开发效率。9.Pig Pig与Hive类似,也是对大型数据集进行分析和评估的工具,不过与Hive提供SQL接口不同的是,它提供了一种高层的、面向领域的抽象语言Pig Latin,和SQL相比,Pig Latin更加灵活,但学习成本稍高。10.Impala Impala由Cloudera公司开发,提供了
24、与存储在HDFS、HBase上的海量数据进行交互式查询的SQL接口,其优点是查询非常迅速,其性能大幅领先于Hive,Impala并没有基于MapReduce计算框架,这也是Impala可以大幅领先Hive的原因。11.Mahout Mahout是一个机器学习和数据挖掘库,它包含许多实现,包括聚类、分类、推荐过滤等。12.Flume Flume是由Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的框架。Flume支持在日志系统中定制各类数据发送方,用于收集数据,同时,Flume提供对数据进行简单处理并写到各种数据接收方。13.Sqoop Sqoop是SQL to Had
25、oop的缩写,主要用于关系数据库和Hadoop之间的数据双向交换。可以借助Sqoop完成关系型数据库如MySQL、Oracle、PostgreSQL等到Hadoop生态系统中HDFS、HBase、Hive等的数据导入导出操作,整个导入导出过程都是由MapReduce计算框架实现,非常高效。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速地迭代开发,Sqoop就独立成为一个Apache项目。14.Kafka Kafka是一种高吞吐量的、分布式的发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。Kafka最
26、初由LinkedIn公司开发,于2010年贡献给Apache基金会,并于2012年成为Apache顶级开源项目,它采用Scala和Java语言编写,是一个分布式、支持分区的、多副本的、基于ZooKeeper协调的分布式消息系统,它适合应用于以下两大类别场景:构造实时流数据管道,在系统或应用之间可靠地获取数据;构建实时流式应用程序,对这些流数据进行转换。15.Ambari Apache Ambari是一个基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理,目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、HBase、ZooKeeper
27、、Oozie、Sqoop等。Ambari由Hortonworks主导开发,具有Hadoop集群自动化安装、中心化管理、集群监控、报警等功能,使得安装集群从几天缩短在几小时以内,运维人员也从数十人降低到几人以内,极大的提高集群管理的效率。2.3 Hadoop体系架构 Hadoop集群采用主从架构(Master/Slave),NameNode与ResourceManager为Master,DataNode与NodeManager为Slaves,守护进程NameNode和DataNode负责完成HDFS的工作,守护进程ResourceManager和NodeManager则负责完成YARN的工作。N
28、ameNodeResourceManagerDataNodeNodeManagerDataNodeNodeManagerDataNodeNodeManager2.4 Hadoop应用现状 1.Hadoop在雅虎 2007年,雅虎在Sunnyvale总部建立M45一个包含4000个处理器和1.5PB容量的Hadoop集群。此后,包括卡耐基梅隆大学、加州大学伯克利分校、康奈尔大学、马萨诸塞大学阿默斯特分校、斯坦福大学、华盛顿大学、密歇根大学、普渡大学等12所大学加入该集群系统的研究,推动了开放平台下开放源码的发布。目前,雅虎拥有全球最大的Hadoop集群,大约25000个节点,主要用于支持广告系统
29、和网页搜索。2.4 Hadoop应用现状 2.Hadoop在Facebook Facebook作为全球知名的社交网站,拥有超过3亿的活跃用户,其中约有3千万用户至少每天更新一次自己的状态;用户每月总共上传10亿余张照片、1千万个视频;以及每周共享10亿条内容,包括日志、链接、新闻、微博等。因此Facebook需要存储和处理的数据量是非常巨大的,每天新增加4TB压缩后的数据,扫描135TB大小的数据,在集群上执行Hive任务超过7500次,每小时需要进行8万次计算,所以高性能的云平台对Facebook来说是非常重要的,而Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓库等方面
30、。Facebook将数据存储在利用Hadoop/Hive搭建的数据仓库上,这个数据仓库拥有4800个内核,具有5.5PB的存储量,每个节点可存储12TB大小的数据,同时,它还具有两层网络拓扑。Facebook中的MapReduce集群是动态变化的,它基于负载情况和集群节点之间的配置信息可动态调整。2.4 Hadoop应用现状 3.Hadoop在沃尔玛 全球最大连锁超市沃尔玛虽然十年前就投入了在线电子商务,但在线销售的营业收入远远落后于亚马逊。后来,沃尔玛采用Hadoop来分析顾客搜索商品的行为,以及用户通过搜索引擎找到沃尔玛网站的关键词,再利用这些关键词的分析结果挖掘顾客需求,以规划下一季商品
31、的促销策略。沃尔玛还分析顾客在Facebook、Twitter等社交网站上对商品的讨论,期望能比竞争对手提前一步发现顾客需求。2.4 Hadoop应用现状 4.Hadoop在eBay eBay是全球最大的拍卖网站,8000万用户每天产生50TB数据量,仅存储这些数据就是一大挑战,何况还要分析这些数据。eBay强调,大数据分析面临的最大挑战就是要同时处理结构化及非结构化的数据,eBay正是利用Hadoop解决了这一难题。eBay使用Hadoop拆解非结构性巨量数据,降低数据仓库的负载,分析买卖双方在网站上的行为。2.4 Hadoop应用现状 5.Hadoop在中国 Hadoop在国内的使用者主要
32、以互联网公司为主,国内采用Hadoop的公司主要有百度、阿里巴巴、腾讯、华为、中国移动等。作为全球最大的中文搜索引擎公司,百度对海量数据的存储和处理要求是比较高的,要在线下对数据进行分析,还要在规定的时间内处理完并反馈到平台上。因此,百度于2006年开始调研和使用Hadoop,主要用于日志的存储和统计,网页数据的分析和挖掘,商业分析,在线数据反馈,用户网页聚类等。目前,百度拥有超过7个集群,单集群超过2800个机器节点,Hadoop机器总数超过15000台机器,总的存储容量超过100PB,已经使用的超过74PB,每天提交的作业数目超过6600个,每天的输入数据量已经超过7500TB,输出超过1
33、700TB。阿里巴巴的Hadoop集群大约有3200台服务器,物理CPU大约30000核心,总内存100TB,总存储容量超过60PB,每天的作业数目超过150000个,每天Hive查询大于6000个,每天扫描数据量约为7.5PB,每天扫描文件数约为4亿,存储利用率大概为80%,CPU利用率平均65%,峰值可以达到80%。阿里的Hadoop集群拥有150个用户组,4500个集群用户,为淘宝、天猫、一淘、聚划算、CBU、支付宝提供底层的基础计算和存储服务。2.4 Hadoop应用现状 5.Hadoop在中国 腾讯也是使用Hadoop最早的中国互联网公司之一,腾讯的Hadoop集群机器总量超过500
34、0台,最大单集群约为2000个节点,并利用Apache Hive构建了自己的数据仓库系统TDW,同时还开发了自己的TDW-IDE基础开发环境,腾讯的Hadoop为腾讯各个产品线提供基础云计算和云存储服务。华为是Hadoop的使用者,也是Hadoop技术的重要贡献者。Hortonworks公司曾发布一份报告,用于说明各公司对Hadoop发展的贡献,其中,华为也在其内,并排在Google和Cisco前面,华为在Hadoop的HA方案以及HBase领域有深入研究,并已经向业界推出了自己的基于Hadoop的大数据解决方案。中国移动于2010年5月正式推出大云BigCloud1.0,集群节点达到了102
35、4个。中国移动的大云基于Hadoop MapReduce实现了分布式计算,基于HDFS实现了分布式存储,并开发了基于Hadoop的数据仓库系统HugeTable、并行数据挖掘工具集BC-PDM、并行数据抽取转化BC-ETL以及对象存储系统BC-ONestd等系统,并开源了自己的BC-Hadoop版本。中国移动主要在电信领域应用Hadoop。2.5 部署和运行Hadoop了解Hadoop的运行环境和运行模式规划Hadoop集群准备机器及软件环境安装和配置Hadoop关闭防火墙格式化文件系统启动和验证Hadoop关闭Hadoop2.5.1 运行环境 1)操作系统Hadoop运行平台支持以下两种:(
36、1)Windows:Hadoop支持Windows,但由于Windows操作系统本身不太适合作为服务器操作系统,所以编者不介绍Windows下安装和配置Hadoop,读者可自行参考网址https:/wiki.apache.org/hadoop/Hadoop2OnWindows。(2)GNU/Linux:Hadoop的最佳运行环境无疑是开源操作系统Linux,Linux的发行版本众多,常见的有CentOS、Ubuntu、Red Hat、Debian、Fedora、SUSE、openSUSE等。2)Java环境Hadoop使用Java语言编写,因此它的运行环境需要Java环境的支持。Hadoop
37、3.x需要Java 8,Hadoop 2.7及以后版本需要Java 7或Java 8,Hadoop 2.6及早期版本需要Java 6。本书采用的Java为Oracle JDK 1.8。3)SSHHadoop集群若想运行,其运行平台Linux必须安装SSH,且sshd服务必须运行,只有这样,才能使用Hadoop脚本管理远程Hadoop守护进程。2.5.2 运行模式(1)单机模式(Local/Standalone Mode)只在一台计算机上运行,不需任何配置,在这种模式下,Hadoop所有的守护进程都变成了一个Java进程,存储采用本地文件系统,没有采用分布式文件系统HDFS。(2)伪分布模式(P
38、seudo-Distributed Mode)只在一台计算机上运行,在这种模式下,Hadoop所有守护进程都运行在一个节点上,在一个节点上模拟了一个具有Hadoop完整功能的微型集群,存储采用分布式文件系统HDFS,但是HDFS的名称节点和数据节点都位于同一台计算机上。(3)全分布模式(Fully-Distributed Mode)在多台计算机上运行,在这种模式下,Hadoop的守护进程运行在多个节点上,形成一个真正意义上的集群,存储采用分布式文件系统HDFS,且HDFS的名称节点和数据节点位于不同计算机上。2.5.3 规划Hadoop集群 1.Hadoop集群架构规划主机名IP地址运行服务软
39、硬件配置master(主节点)192.168.18.130NameNodeSecondaryNameNodeResourceManagerJobHistoryServer操作系统:CentOS 7.6.1810Java:Oracle JDK 8u191Hadoop:Hadoop 2.9.2内存:4GCPU:1个2核硬盘:40Gslave1(从节点1)192.168.18.131DataNodeNodeManager操作系统:CentOS 7.6.1810Java:Oracle JDK 8u191Hadoop:Hadoop 2.9.2内存:1GCPU:1个1核硬盘:20Gslave2(从节点2)
40、192.168.18.132DataNodeNodeManager操作系统:CentOS 7.6.1810Java:Oracle JDK 8u191Hadoop:Hadoop 2.9.2内存:1GCPU:1个1核硬盘:20G2.5.3 规划Hadoop集群 全分布模式Hadoop集群架构规划图master192.168.18.130slave1192.168.18.131slave2192.168.18.132NameNodeSecondaryNameNodeResourceManagerJobHistoryServerDataNodeNodeManagerDataNodeNodeManage
41、r2.5.3 规划Hadoop集群 2.软件选择 1)虚拟机工具 鉴于多数用户使用的是Windows操作系统,作为Hadoop初学者,建议在Windows操作系统上安装虚拟机工具,并在其上创建Linux虚拟机。编者采用的虚拟机工具为VMware Workstation Pro,读者也可采用其他虚拟机工具例如Oracle VirtualBox等。2)Linux操作系统 编者采用的Linux操作系统为免费的CentOS(Community Enterprise Operating System,社区企业操作系统),CentOS是Red Hat Enterprise Linux依照开放源代码规定释出
42、的源代码所编译而成,读者也可以使用其他Linux操作系统例如Ubuntu、Red Hat、Debian、Fedora、SUSE、openSUSE等。2.5.3 规划Hadoop集群 2.软件选择 3)Java Hadoop集群若想运行,其运行平台Linux必须安装Java。CentOS 7自带有OpenJDK 8,编者采用的Java是Oracle JDK 1.8。4)SSH Hadoop集群若想运行,其运行平台Linux必须安装的第2个软件是SSH,且sshd服务必须运行,只有这样,才能使用Hadoop脚本管理远程Hadoop守护进程。本书选用的CentOS 7自带有SSH。5)Hadoop
43、Hadoop的版本经历了1.0、2.0、3.0,目前最新稳定版本是2019年1月16日发布的Hadoop 3.2.0,编者采用的是2018年11月19日发布的稳定版Hadoop 2.9.2。2.5.4 准备机器及软件环境 1.准备机器 安装3台CentOS虚拟机 hadoop2.9.2-master:内存为4096MB,CPU为1个2核,硬盘40G。hadoop2.9.2-slave1、hadoop2.9.2-slave2:内存均为1024MB,CPU为1个1核,硬盘20G。2.5.4 准备机器及软件环境 2.配置静态IP(1)切换到root用户,使用命令“vim/etc/sysconfig/
44、network-scripts/ifcfg-ens33”修改网卡配置文件,设置静态IP地址。2.5.4 准备机器及软件环境 2.配置静态IP(2)使用“reboot”命令重启机器或者“systemctl restart network.service”命令重启网络方可使得配置生效。同理,将虚拟机hadoop2.9.2-slave1和hadoop2.9.2-slave2的IP地址依次设置为静态IP“192.168.18.131”、“192.168.18.132”。2.5.4 准备机器及软件环境 3.修改主机名 切换到root用户,通过修改配置文件/etc/hostname,可以修改Linux主机
45、名,该配置文件中原始内容为:localhost.localdomain 将配置文件/etc/hostname中原始内容替换为:master 使用“reboot”命令重启机器方可使得配置生效,使用命令“hostname”可以验证当前主机名。同理,将虚拟机hadoop2.9.2-slave1和hadoop2.9.2-slave2的主机名依次设置为“slave1”、“slave2”。2.5.4 准备机器及软件环境 4.编辑域名映射 为协助用户便捷访问该机器而无需记住IP地址串,需要编辑域名映射文件/etc/hosts,在原始内容最后追加如下3行内容:192.168.18.130 master 192
46、.168.18.131 slave1 192.168.18.132 slave2 使用“reboot”命令重启机器方可使得配置生效。同理,编辑虚拟机hadoop2.9.2-slave1和hadoop2.9.2-slave2的域名映射文件,内容同虚拟机hadoop2.9.2-master。2.5.4 准备机器及软件环境 至此,3台CentOS虚拟机的静态IP、主机名、域名映射均已修改完毕,用ping命令来检测各节点间是否通讯正常。2.5.4 准备机器及软件环境 5.安装和配置Java(1)卸载Oracle OpenJDK。首先,通过命令“java-version”查看是否已安装Java,由于Ce
47、ntOS 7自带的Java是Oracle OpenJDK,而更建议使用Oracle JDK,因此将Oracle OpenJDK卸载。其次,使用“rpm-qa|grep jdk”命令查询jdk软件。2.5.4 准备机器及软件环境 5.安装和配置Java(1)卸载Oracle OpenJDK。最后,切换到root用户下,分别使用命令“yum-y remove java-1.8.0*”和“yum-y remove java-1.7.0*”卸载openjdk 1.8和openjdk 1.7。同理,卸载节点slave1和slave2上的Oracle OpenJDK。2.5.4 准备机器及软件环境 5.安
48、装和配置Java(2)下载Oracle JDK。需要根据机器所安装的操作系统和位数选择相应JDK安装包下载,可以使用命令“getconf LONG_BIT”来查询Linux操作系统是32还是64位;也可以使用命令“file/bin/ls”来显示Linux版本号。Oracle JDK的下载地址为http:/ JDK,并存放在目录/home/xuluhui/Downloads下。2.5.4 准备机器及软件环境 5.安装和配置Java(3)安装Oracle JDK。使用tar命令解压进行安装,例如安装到目录/usr/java下,首先在/usr下创建目录java,然后解压,依次使用的命令如下所示:cd
49、/usrmkdir javacd javatar-zxvf/home/xuluhui/Downloads/jdk-8u191-linux-x64.tar.gz 同理,在节点slave1和slave2上也安装Oracle JDK。2.5.4 准备机器及软件环境 5.安装和配置Java(4)配置Java环境。通过修改/etc/profile文件完成环境变量JAVA_HOME、PATH和CLASSPATH的设置,在配置文件/etc/profile的最后添加如下内容:#set java environmentexport JAVA_HOME=/usr/java/jdk1.8.0_191export P
50、ATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 使用命令“source/etc/profile”重新加载配置文件或者重启机器,使配置生效。同理,在节点slave1和slave2上也配置Java环境。2.5.4 准备机器及软件环境 5.安装和配置Java(5)验证Java。再次使用命令“java-version”,查看Java是否安装配置成功及其版本。2.5.4 准备机器及软件环境 6.安装和配置SSH免密登录(1)安装SSH。使用命令“rpm-qa|grep ss