版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
hadoop大数据开发实例教程全套可编辑PPT课件目录Contents01020304大数据生态系统Hadoop的安装与基本配置Hadoop文件系统基于Shell和JavaAPI操作HDFS03MapReduce和YARN技术目录Contents06070809分布式数据仓库——Hive技术分布式协调服务——ZooKeeper技术分布式数据库——HBase技术Hadoop中的数据迁移工具——Sqoop技术10Spark的安装与基础应用大数据生态系统011.1了解大数据1.2Hadoop简介1.3实训1收集Hadoop相关案例了解大数据(产生、概念、特征)及“物、云、大、智”之间的关系了解Hadoop的应用案例了解及认识Hadoop和它的核心组件了解MapReduce作业的运行方式1243
本模块从了解大数据(bigdata)入手,简明扼要地叙述大数据的产生、大数据的概念、大数据的“4V”特征、大数据应用案例,展示物联网(产生数据)、云计算(承载数据)、大数据(挖掘数据)和人工智能(学习数据)相辅相成、彼此依附和相互助力的关系,再通过对Hadoop的层层“揭秘”来认识Hadoop和它的核心组件及其常用的其他组件。目标和要求大数据生态系统1.1了解大数据
被誉为“大数据之父”的维克托·迈尔-舍恩伯格曾提到“世界的本质就是大数据”,当今社会生活中到处都是数据。不仅如此,在人人互联的廉价存储时代,我们收集的数据的性质也在发生变化。对于许多企业而言,它们的关键数据曾经仅限于其业务数据库和数据文件。在这些类型的系统中,数据被组织成有序的行和列,其中信息的每个字节在其性质和业务价值方面都易于管理和理解。当今这些数据和数据库仍然非常重要,但是应用的数据类型和数据处理方式发生了翻天覆地的变化,大数据悄然而至,让我们一起揭开大数据的神秘面纱。1.1了解大数据1.1.1大数据的产生
大数据的产生可追溯至1887年。1887—1890年,美国统计学家赫尔曼·霍尔瑞斯为了统计1890年的人口普查数据,发明了一台电动器来读取卡片上的洞数,该设备让美国用1年时间就完成了原本需耗时8年的人口普查活动,由此在全球范围内引发了数据处理的新纪元。社交网络、电子商务等互联网应用成为新的数据来源,传感器、二维码、无线射频识别(radiofrequencyidentification,RFID)、位置信息等物联网应用成为新的数据采集方法,全时空数据的可采集性应用,智能算法的使用,非结构的数据形态飞速增加,数据获取成本、存储成本和处理成本的下降,所有因素都推动了数据量的爆炸式膨胀。数据大爆炸和数据结构的变化为数据处理带来新的挑战,人类正从信息技术(informationtechnology,IT)时代走向数据技术(datatechnology,DT)时代。1.1了解大数据1.1.2大数据的概念
大数据可一拆为二来看,就是“大”和“数据”。
数据最小的基本单位是bit,可存储一个0或者1,8bit相当于1Byte。数据量等级单位有Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB,它们依次按照进率1024(210)来计算。常规PC的存储和处理数据的体量一般到达GB级别,而互联网、企业IT、物联网、短信、电话、网络搜索、在线交易等,随时都在快速累积庞大的数据,数据量很容易达到TB、PB或EB等级,没有办法在可容忍的时间下使用常规软件方法完成存储、管理和处理任务。等级界值分分钟就临近了,“大数据”的概念延伸而出。何为大?1.1了解大数据1.1.2大数据的概念
在计算机科学中,数据是指所有能输入计算机并被计算机程序处理的符号介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字、字母、符号和模拟量等的统称。计算机存储和处理的对象十分广泛,表示这些对象的数据也随之变得越来越复杂。例如,应用下载记录、语音通话记录、淘宝“双11”新订单记录等都为数据,有些是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理,这种称为结构化数据。与之相对的是有些数据则“杂乱无章”或部分有序,不适于由数据库二维表来表现,包括所有格式的办公文档、XML、HTML、各类报表、图片和音频、视频信息等,这种称为非结构化或半结构化数据。
对于大数据,研究机构Gartner给出了定义:大数据是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。何为数据?1.1了解大数据1.1.3大数据的特征(1)数据体量巨大(volume)(4)价值密度低(value)(3)处理速度快(velocity)(2)数据类型繁多(variety)
大数据的“3V”特征,描述了数据挑战“大”的背后因素。这三个特征标准是评估大数据问题并提供清晰口号的简便方法。通常的经验法则是:如果数据存储和分析工作具有这三个特征中的任何一个,则很可能会带来巨大的数据挑战,须利用大数据技术来解决。
大数据最核心的价值就是对于海量数据进行存储和分析。相比现有的其他技术而言,大数据的“廉价、迅速、优化”这三方面的综合成本是最优的。1.1了解大数据1.1.4大数据应用案例
大数据应用颠覆人类思维,产生巨大成功的案例数不胜数,下面略举几例,一起来领略一下大数据的神奇应用。
Kaggle,一个为所有人提供数据挖掘竞赛的公司,在一次关于二手车的数据分析比赛中得到,橙色二手车有质量问题的可能性是其他颜色二手车的一半。为什么?探寻事物的因果关系是人类的本性,但是大数据时代可以做某种程度的妥协,可以只需要关注“是什么”,而忽略“为什么”。1.大数据应用案例之颠覆思维1.1了解大数据1.1.4大数据应用案例2.大数据应用案例之乔布斯抗癌苹果公司的传奇总裁史蒂夫·乔布斯在与癌症斗争的过程中采用了与其他患者不同的方式,他对自身DNA和肿瘤DNA进行排序,得到的不是一个只有一系列标记的样本,而是包括整个基因密码的数据文档。对于一个普通的癌症患者,医生只能期望他的DNA排列与试验中使用的样本足够相似。但是,史蒂夫·乔布斯的医生们能够基于乔布斯的特定基因组成,按所需效果用药。如果癌症病变导致药物失效,医生可以及时更换另一种药,也就是乔布斯所说的“从一片睡莲叶跳到另一片上”。乔布斯开玩笑说:“我要么是第一个通过这种方式战胜癌症的人,要么就是最后一个因为这种方式死于癌症的人。”虽然他的愿望都没有实现,但是这种获得所有数据而不仅是样本的典型大数据思维方法还是将他的生命延长了好几年。大数据为人类的生命延续开启了一扇新的窗户。1.1了解大数据1.1.4大数据应用案例
2020年,新冠肺炎疫情在全球扩散蔓延,严重影响了人们的正常生活和工作,限制了生产与商业活动。大数据技术为新时代中国特色社会主义的疫情防控模式给予了重要支撑,各类技术创新和应用也有力地支撑了复工复产。首先,大数据支持临床诊疗持续改进。其次,大数据支持病毒溯源和流行病学调查。最后,大数据技术在疫情的远程诊疗、疫情预警及物资调配等方面也做出了重要的战略支撑和保障。重大流行病疫情防控仍然任道而重远,因此开发重大流行病综合管理决策支持系统,形成数字作战地图,解决“数据孤岛”治理难题,仍需要大数据、互联网、云平台支持下的应急管理和科学决策,需要技术的创新和有效应用。3.大数据应用案例之疫情防控1.1了解大数据1.1.4大数据应用案例
GoogleFluTrends通过对聚合搜索的结果进行分析,可以比疾控机构更快速地侦测到疾病的暴发。而且,尽管卫生报告每周都得到更新,但报告仅限于单个国家。GoogleFluTrends却有着几近涵盖全球的视角:它在任何人们使用Google搜索的地点收集数据。更重要的是,由于它是每日更新的,因而它可以向人们传递更即时的消息。4.大数据应用案例之流感预测1.1了解大数据1.1.4大数据应用案例
10多年前,音乐元数据公司Gracenote收到来自苹果公司的神秘忠告,建议其购买更多的服务器。Gracenote照做了,而后苹果推出iTunes和iPod,Gracenote从而成就了元数据帝国。在车内听的歌曲很可能反映你的真实喜好,Gracenote就拥有此种技术。它采用智能手机和平板电脑内置的麦克风识别用户电视或音响中播放的歌曲,并可检测掌声或嘘声等反应,甚至还能检测用户是否调高了音量。这样,Gracenote可以研究用户真正喜欢的歌曲、听歌的时间和地点。Gracenote拥有数百万首歌曲的音频和元数据,因而可以快速识别歌曲信息,并按音乐风格、歌手、地理位置等分类。5.大数据应用案例之音乐1.1了解大数据1.1.5“物、云、大、智”之间的关系智能时代的今天,“物、云、大、智”存在于生活的每个角落,从产品营销至信息服务,从日常生活应用至高端科学研究。大数据的应用与研究总是与物联网、云计算、人工智能紧紧相连,它们的关系如图1-1所示。图1-1物联网、云计算、大数据和人工智能关系1.1了解大数据1.1.5“物、云、大、智”之间的关系物联网(Internetofthings,IOT)可以简单地理解为物物相连的互联网,正是得益于大数据和云计算的支持,互联网才正在向物联网扩展,并进一步升级至体验更佳、解放生产力的人工智能时代。1.人工智能——智能时代的应用领域人工智能的应用领域比较多,如机器人领域、语言识别领域、图像识别领域和专家系统等;它的应用实例也是数不胜数,如指纹识别、人脸识别、视网膜识别、虹膜识别、智能搜索和博弈等。2.大数据——人工智能背后的基石大数据是人工智能的基石,目前的深度学习主要建立在大数据的基础上,即对大数据进行训练,并从中归纳出可以被计算机运用在类似数据上的知识或规律。3.物联网——人工智能基础1.1了解大数据1.1.5“物、云、大、智”之间的关系云计算是将人们传统的IT工作转为以网络为依托的云平台运行,美国国家标准与技术研究院(NIST)在2011年下半年公布了云计算定义的最终稿,给出了云计算模式所具备的5个基本特征(按需自助服务、广泛的网络访问、资源共享、快速的可伸缩性和可度量的服务)、3种服务模式[SaaS(软件即服务)、PaaS(平台即服务)和IaaS(基础设施即服务)]和4种部署方式(私有云、社区云、公有云和混合云)。云计算发展较早,经过10年的发展,国内已经拥有超百亿规模,云计算也不再只是充当存储与计算的工具而已。可以预见的是,未来云计算将在助力人工智能发展层面意义深远。而同时,人工智能的迅猛发展、海量数据的积累,也将会为云计算带来未知性和可能性。4.云计算——人工智能背后强大的助推器物联网(产生数据)、云计算(承载数据)、大数据(挖掘数据)和人工智能(学习数据)相辅相成,彼此依附,相互助力,合力搭档在一起才更有力量:给未来多一些可能,给未知多一些可能性。1.2Hadoop简介1.2.1认识Hadoop1.大数据对Hadoop有什么样的需求
Hadoop绝不是传统的信息技术工具,它非常适合应对许多大数据挑战,尤其是海量数据和各种数据结构,但是也有不太适合Hadoop的,就是即时分析高速数据。尽管Hadoop是进行大数据分析的重要工具,但它也不是能解决所有的大数据问题,整个大数据域并不是Hadoop的同义词。
庞大的数据量在许多情况下对传统的数据挖掘技术提出了几乎无法克服的挑战,即使条件良好,它也只能处理一部分可用的宝贵数据。Google于是努力寻找一种新方法来分析其搜索引擎收集的大量数据,Hadoop正是这种努力的结果,它代表了一种有效且经济高效的方式,可将大型分析挑战减少为可管理的小型任务。1.2Hadoop简介1.2.1认识Hadoop
DougCutting在2003—2004年发表了两个学术论文来描述Google的技术:GoogleFileSystem(GFS)和MapReduce。DougCutting开发的Hadoop是一个开源平台,提供MapReduce和GFS技术的实现。Yahoo公司在2006年雇用了DougCutting,并很快成为Hadoop项目的坚定支持者。2.Hadoop的起源和有趣的名字Hadoop最初旨在用作2002年开始的ApacheNutch项目的基础结构。Nutch是一个开源Web搜索引擎,是Lucene项目的一部分。Apache项目的创建是为了开发开源软件,并得到Apache软件基金会(ASF)的支持,该基金会是一个由分散的开发人员社区组成的非营利性公司。开源软件通常以公共和协作的方式开发,是一种源代码可供任何人免费研究、修改和分发的软件。Nutch需要一种可以扩展到数十亿个网页的架构,并且所需的架构受到Google文件系统(GFS)的启发,并最终成为Hadoop分布式文件系统(HDFS)。1.2Hadoop简介1.2.1认识Hadoop
2004年,Google发表了一篇介绍MapReduce的论文,到2005年,Nutch同时使用MapReduce和HDFS。2006年年初,MapReduce和HDFS成为Lucene子项目的一部分,该子项目名为Hadoop。2008年2月,Hadoop集群生成雅虎的搜索索引。2008年初,Hadoop已成为Apache的顶级项目,并被许多公司使用。2008年4月,Hadoop用时209秒,利用910个节点集群对TB级数据进行排序,打破了世界纪录。2009年5月,Yahoo能够使用Hadoop在62秒内排序1TB数据。2.Hadoop的起源和有趣的名字
至于Hadoop这个名字,它只是DougCutting的儿子给他的毛绒大象取的名字。这个名称是唯一的且易于记忆的——其特性使其成为一个不错的选择。1.2Hadoop简介1.2.1认识Hadoop
Hadoop的核心是一个框架,用于将数据存储在大型商用硬件集群上——负担得起且易于使用的日常计算机硬件,并针对该数据运行应用程序。使用负担得起的计算资源网络来获得业务解决能力是Hadoop的关键价值主张,通俗地讲,就是把一堆PC通过网络连接起来能完成大型数据处理。3.Hadoop究竟是什么MapReduce分布式处理框架Hadoop分布式文件系统(HDFS)Hadoop1.2Hadoop简介1.2.1认识Hadoop
在Hadoop上运行的应用程序将其工作分配给集群中的node节点(集群是一组互连的计算机,它们可以共同解决同一问题),HDFS中存储将要处理的数据。Hadoop集群可以跨越数千台计算机,HDFS将数据存储在其中,并且MapReduce作业在数据附近节点进行处理,从而使I/O成本保持较低。同时,MapReduce也极其灵活,可以开发各种应用程序。3.Hadoop究竟是什么Hadoop集群是一种计算集群,也就是主要用于计算目的的集群,许多计算机(node)可以共享计算工作负载,并利用集群中非常大的聚合带宽。Hadoop集群通常由主节点和许多从属节点组成,主节点主要用于控制Hadoop中的存储和处理系统,而从节点存储集群中的所有数据并在其中处理数据。1.2Hadoop简介1.2.2Hadoop核心组件
Hadoop三大核心组件Hadoop的资源管理器YARN(yetanotherresourcenegotiator,资源协调者)Hadoop的数据存储工具HDFS(Hadoopdistributefilesystem,分布式文件管理系统)分布式计算框架HadoopMapReduce1.2Hadoop简介1.2.2Hadoop核心组件
Hadoop使用HDFS进行数据存储。HDFS具有主/从体系结构,主服务(NameNode)控制对数据文件的访问。从站服务(DataNodes)在集群中的每个节点上进行分布,DataNodes管理与节点相关联的存储,为客户端读取和写入请求以及为其他任务提供服务。
Hadoop使用MapReduce进行分布式处理。MapReduce涉及对分布式数据集的一系列操作的处理。数据由键-值对组成,并且计算只有映射阶段和归约阶段。用户定义的MapReduce作业在集中群的计算节点上运行。一般来说,MapReduce作业的运行方式如下:1.2Hadoop简介1.2.2Hadoop核心组件
(1)在Map阶段,输入数据被分为大量的片段,每个片段都被分配给一个Map任务。(2)这些映射任务分布在整个集群中。(3)每个映射任务都会从其分配的片段中处理键-值对,并生成一组中间键-值对。(4)中间数据集按键排序,并将排序后的数据划分为多个与Reduce任务数量匹配的片段。(5)在Reduce阶段,每个Reduce任务都会处理分配给它的数据片段,并生成一个输出键-值对。(6)这些Reduce任务也分布在整个集群中,并在完成后将其输出写入HDFS。1.2Hadoop简介1.2.2Hadoop核心组件
Hadoop早期版本中的HadoopMapReduce框架具有一个称为JobTracker的单一主服务和多个称为TaskTrackers的从属服务,集群中每个节点一个。将MapReduce作业提交给JobTracker时,该作业将被放入队列中,然后根据管理员定义的调度规则运行。JobTracker管理着MapReduce任务到TaskTrackers的分配。但在Hadoop后期版本中,一个新的资源管理系统YARN提供通用的计划和资源管理服务,因此不仅可以在Hadoop集群上运行MapReduce应用程序,还可以进行资源的调度管理。
Hadoop不仅限于MapReduce和HDFS,它还是一系列相关项目(实际上是一个生态系统),用于分布式计算和大规模数据处理。这些项目中的大多数由ApacheSoftwareFoundation托管,形成了ApacheHadoop生态系统。ApacheHadoop生态系统中其他部分开源组件及其具体描述如表1-1所示。1.2Hadoop简介1.2.2Hadoop核心组件表1-1Hadoop生态系统中其他部分开源组件及其具体描述1.2Hadoop简介1.2.2Hadoop核心组件
Hadoop生态系统及其商业发行版还在继续发展中,新技术或新工具将不断出现,目前各种Hadoop生态系统项目及它们之间的关系如图1-2所示。图1-2各种Hadoop生态系统项目及它们之间的关系1.2Hadoop简介1.2.2Hadoop核心组件
用户可以从Apache软件基金会或提供自己的Hadoop发行版的公司获得Hadoop。仅可直接从ApacheSoftwareFoundation获得的产品可以称为Hadoop版本。其他公司的产品可以包括官方的ApacheHadoop发行文件,但是Apache软件基金会不支持从ApacheHadoop源树中“派生”(并代表其修改或扩展版本)的产品。1.3实训1收集Hadoop相关案例1.实训目的(1)了解大数据及“物、云、大、智”之间的关系;(2)了解Hadoop的应用案例;(3)了解及认识Hadoop与组件;(4)了解MapReduce作业的运行方式。2.实训内容(1)搜索Hadoop使用案例,制作案例Hadoop体系结构图;(2)查找国内尤其是互联网公司使用Hadoop的实际案例;(3)参照Hadoop体系中各组件功效,结合案例查看组件选用状态;(4)绘制案例体系架构图,示例如图1-3所示。1.3实训1收集Hadoop相关案例图1-3网易猛犸大数据架构平台
(1)按题目要求查找案例并绘制案例体系架构图(“文字+截图”方式);(2)总结实训心得与体会。模块2Hadoop的安装与基本配置模块2Hadoop的安装与基本配置3.实训要求感谢聆听Hadoop的安装与基本配置022.1Linux环境搭建2.2Hadoop环境变量配置2.3Hadoop的安装模式2.4Hadoop的格式化与启动验证2.5实训2Hadoop的安装与基本配置——伪分布式(1)熟练掌握在VMwareWorkstation虚拟机中安装Linux的方法;(2)掌握Hadoop环境的基础搭建与环境变量设置;(3)知道JavaJDK的安装与检验;(4)掌握伪分布式/完全分布式Hadoop的安装与配置;(5)知道修改Hadoop的若干配置文件,正常启动Hadoop的相关守护进程的方法;(6)知道在虚拟机中备份与恢复操作系统的方法。
本模块从“零”基础入门者视角,首先讲解如何搭建Linux环境,清楚地交代学习本课程需要使用的软件,同时完整地演示了VMwareWorkstation虚拟机安装Linux系统,接着进行Hadoop环境变量的配置。为了实验的清晰及后续集群实验的成功,对部署好的虚拟机复制多份,并进行了相关的规划部署。最后利用搭建好的Hadoop环境完成Hadoop的单机、伪分布式和完全分布式的安装、格式化和启动,且通过jps和Web方式进行了验证。目标和要求Hadoop的安装与基本配置2.1Linux环境搭建
要想进行Hadoop大数据关键技术的学习,必须有一台装有Linux操作系统的计算机,建议采用虚拟机(VMwareWorkstation、VirtualBox等)软件来搭建Hadoop的学习平台。本书采用的虚拟机是VMwareWorkstation14,Linux操作系统镜像是CentOS7系列,表2-1给出了需求资源及作用对应表。表2-1需求资源及作用对应表
CentOS7系列镜像可以从163等镜像源下载,本书采取的镜像是从/centos/7/isos/x86_64/中下载的CentOS-7-x86_64-Minimal1908.iso(最小化安装版本,共942MB),下载其他镜像亦可。注意2.1Linux环境搭建
需求资源准备好后将进行VMwareWorkstation虚拟机的安装,在Windows系统下进行VMwareWorkstation虚拟机的安装较简单,在此不再赘述(需要注意的是,要尽量选择和Windows操作系统版本对等的虚拟机软件)。VMware虚拟机安装完成后,进入如图2-1所示的虚拟机软件管理界面。2.1.1安装部署虚拟机图2-1VMware虚拟机软件管理界面2.1Linux环境搭建
单击“创建新的虚拟机”选项,然后在弹出的“新建虚拟机向导”对话框中选中“典型(推荐)(T)”单选按钮,如图2-2所示。2.1.1安装部署虚拟机图2-2“新建虚拟机向导”对话框2.1Linux环境搭建
单击“下一步”按钮,进入“安装客户机操作系统”界面,如图2-3所示。2.1.1安装部署虚拟机图2-3“安装客户机操作系统”界面2.1Linux环境搭建
选中“稍后安装操作系统”单选按钮,然后单击“下一步”按钮,进入“选择客户机操作系统”界面,如图2-4所示。2.1.1安装部署虚拟机图2-4“选择客户机操作系统”界面2.1Linux环境搭建
选择客户机操作系统的类型为“Linux”,版本为“RedHatEnterpriseLinux764位”,然后单击“下一步”按钮,进入“命名虚拟机”界面,如图2-5所示。2.1.1安装部署虚拟机图2-5“命名虚拟机”界面2.1Linux环境搭建
填写“虚拟机名称”(可自定义),建议将“位置”设置为剩余空间较多的分区,单击“下一步”按钮,进入“指定磁盘容量”界面,如图2-6所示。2.1.1安装部署虚拟机图2-6“指定磁盘容量”界面2.1Linux环境搭建
虚拟机的最大磁盘大小采用默认值20GB,并选中“将虚拟磁盘存储为单个文件”单选按钮(目的是使文件不那么凌乱),单击“下一步”按钮,进入“已准备好创建虚拟机”界面,如图2-7所示。2.1.1安装部署虚拟机图2-7“已准备好创建虚拟机”界面2.1Linux环境搭建
单击“自定义硬件”按钮,弹出“硬件”对话框,可将虚拟机系统内存设置为1024MB,具体视计算机的配置而定,如图2-8所示。2.1.1安装部署虚拟机图2-8“硬件”对话框2.1Linux环境搭建
继续选择光驱设备“新CD/DVD(SATA)”选项,在右侧界面中选中“使用ISO映像文件”单选按钮,并选择下载好的CentOS7系列镜像文件,如图2-9所示。2.1.1安装部署虚拟机图2-9设置虚拟机光驱设备2.1Linux环境搭建
选择“网络适配器”选项,VMware虚拟机提供了桥接模式、NAT模式和仅主机模式3种可选的网络模式。这里采用默认的“NAT模式”,如图2-10所示。2.1.1安装部署虚拟机图2-10设置虚拟机网络适配器界面2.1Linux环境搭建
根据实际情况进行配置,然后单击“关闭”按钮,返回到“已准备好创建虚拟机”界面,单击“完成”按钮,进入虚拟机配置成功界面,如图2-11所示。2.1.1安装部署虚拟机图2-11虚拟机配置成功界面2.1.2安装系统与远程连接
如果虚拟机系统的前期配置顺利完成,就可以在虚拟机管理器界面中单击“开启此虚拟机”按钮,几秒钟后就能看到CentOS7系统安装界面,如图2-12所示。在界面中有3个选项,分别是安装CentOS7系统、校验光盘并安装CentOS7系统和系统救援模式。此时单击进入虚拟机系统中,并用方向键选择第一个选项“InstallCentOS7”来安装Linux系统。2.1Linux环境搭建图2-12CentOS7系统安装界面2.1.2安装系统与远程连接
按Enter键加载系统镜像并进行安装,如图2-13所示。2.1Linux环境搭建图2-13系统安装初始化2.1.2安装系统与远程连接
如图2-14所示,选择在安装过程中所使用的语言,可以采取默认,也可以选择“中文”,然后单击“继续”按钮。2.1Linux环境搭建图2-14选择安装过程中所使用的语言2.1.2安装系统与远程连接
如图2-15所示,在系统安装主界面中,重点是完成安装位置、网络和主机名两项的设置,安装位置采取默认方式即可,而网络和主机名的设置如图2-16所示。2.1Linux环境搭建图2-15系统安装主界面2.1.2安装系统与远程连接
在图2-16中开启网络连接“打开”状态,如果一切正常,将会获取到IP地址(可能与图中的不同),最后单击左上角的“完成”按钮。2.1Linux环境搭建图2-16网络和主机名设置界面2.1.2安装系统与远程连接
返回到图2-15所示的系统安装主界面中,单击“开始安装”按钮,将显示系统安装进度和一个重要的设置,即“ROOT密码”设置,如图2-17所示。2.1Linux环境搭建图2-17CentOS7系统安装配置界面2.1.2安装系统与远程连接
选择“ROOT密码”选项,进入“ROOT密码”界面,如图2-18所示,做实验时可以输入弱密码,如123456。在真正的应用环境中应该设置安全的密码,若采用的是弱密码,需要单击两次左上角的“完成”按钮才能完成设置。2.1Linux环境搭建图2-18“ROOT密码”界面2.1.2安装系统与远程连接
Linux系统的安装进度视计算机的配置情况而定,安装完成后单击“重启”按钮,如图2-19所示。2.1Linux环境搭建图2-19系统安装完成界面2.1.2安装系统与远程连接
重启系统后将会看到系统登录界面,如图2-20所示。2.1Linux环境搭建图2-20系统登录界面
输入用户名root和密码123456并按Enter键登录系统。此时输入的密码是不可见的,只需要通过键盘输入正确的密码并按Enter键即可。2.1.2安装系统与远程连接
Linux系统大多应用于服务器,而服务器不可能像PC一样放在办公室,而是放在互联网数据中心(Internetdatacenter,IDC)机房的,所以登录Linux系统一般都是通过远程登录的方式。如果是Windows操作系统,那么Linux远程登录需要在机器上额外安装一个终端软件。目前比较常见的终端登录软件有Xshell、SecureCRT、PuTTY等,不管使用哪一个客户端软件,最终的目的只有一个,就是远程登录到Linux服务器上。这些软件有很多免费版的,这里选择使用Xshell软件,Xshell软件的下载与安装比较简单,在此不再赘述。Xshell软件安装完成后,为使远程连接后汉字不乱码,需要设置软件编码格式为Unicode(UTF-8),如图2-21所示。2.1Linux环境搭建2.1.2安装系统与远程连接图2-21设置软件编码格式2.1Linux环境搭建2.1.2安装系统与远程连接
要想远程连接Linux服务器,首先需要知道服务器的IP地址,如果读者是按照前面的步骤一步一步安装的Linux系统,那么Linux系统会通过DHCP获取到IP地址,在Linux系统中可以执行ipaddr命令来获取IP地址。2.1Linux环境搭建
Linux系统中是通过SSH服务实现远程登录功能的,当安装完系统时,这个服务已安装好且随机启动,默认sshd服务开启22端口。在图2-21所示的界面中输入ssh40(自己的实际IP地址)并按Enter键登录,此时会打开如图2-22所示的提示框。2.1.2安装系统与远程连接2.1Linux环境搭建图2-22未知主机密钥提示2.1.2安装系统与远程连接
这里是主机密钥验证,只有在第一次连接时才会出现这个提示框,单击“接受并保存”按钮,后续按照提示操作即可。如果一切顺利,将会出现如图2-23所示的界面。2.1Linux环境搭建图2-23Xshell登录系统后的窗口及命令行2.1.3配置网络服务
Linux作为服务器或单机都可能需要与网络中的其他主机通信,首先要正确配置网络。网络配置通常包括主机名、IP地址、子网掩码、默认网关、DNS服务器等的设置。
CentOS7系统自带hostnamectl工具,使我们能够轻松地管理系统的主机名,无须重启,主机名可立即生效。2.1Linux环境搭建1.设置主机名2.1.3配置网络服务2.1Linux环境搭建2.配置网络
服务器对外提供服务都是通过IP地址进行的,同时应配置为静态的IP地址以保证服务的可靠性,接下来将通过nmcli命令配置静态网络信息。2.1.3配置网络服务2.1Linux环境搭建3.DNS生效顺序
Linux下设置DNS的位置主要有如下3个地方:(1)网卡配置文件中DNS服务器地址设置。(2)系统默认DNS服务器地址设置。(3)hosts文件指定。DNS的生效顺序为hosts文件→网卡配置文件中DNS服务器地址→/etc/resolv.conf。2.1.3配置网络服务2.1Linux环境搭建4.关闭防火墙和SELinux
为了保证实验的顺畅性,建议在前期学习及练习阶段,可以暂时关闭防火墙和SELinux,在生产环境中应根据实际应用场景设置防火墙和SELinux。2.1.3配置网络服务2.1Linux环境搭建5.配置SSH免密登录
Hadoop集群中是通过SSH免密登录其他主机的,为了方便操作,需要设置SSH免密登录;如不设置,每次启动或者停止时都需重新输入密码。2.1.4安装并配置JDK
JRE包只包含Java运行时环境(Javaruntimeenvironment),若要开发Java应用程序,则需要安装JDK包,此处建议安装JDK包。可以通过YUM方式进行安装,也可以访问Oracle官网(/index.html)或/archive/下载Linux相应的安装包进行安装。进入Oracle官网,找到相应位置进行下载,如图2-24所示。2.1Linux环境搭建图2-24在Oracle官网下载JDK安装包2.1.4安装并配置JDK
本书采用的是JavaSE8u241版本号的rpm安装包,如图2-25所示。2.1Linux环境搭建图2-25下载JDK的rpm安装包
也可以通过其他途径进行下载,下载后通过WinSCP/FileZilla等工具上传到Linux系统中并进行安装。2.1.4安装并配置JDK
从显示的路径信息可知,Javac安装在/usr/java/jdk1.8.0_241-amd64目录中,稍后会在修改Hadoop配置文件中的环境变量时用到。2.1Linux环境搭建2.2Hadoop环境变量配置
在搭建Hadoop集群时,采用root账户会减少一些权限上的错误,而在实际环境中采用root账户将会带来安全隐患。本书的实验都是通过hadoop账户来进行的,因此前期需要做一些准备工作。2.2.1下载及解压Hadoop压缩包
进入Apache官网(),在Downloads下拉列表中选择Distribution选项,如图2-26所示。2.2Hadoop环境变量配置图2-26Apache网站下载Hadoop入口1234562.2.1下载及解压Hadoop压缩包
进入Apache的所有产品分支下载界面中,选择hadoop选项,进一步选择common→hadoop-2.10.0→hadoop-2.10.0.tar.gz进行下载,如图2-27所示。2.2Hadoop环境变量配置图2-27Hadoop下载地址及版本2.2.1下载及解压Hadoop压缩包
下载后通过WinSCP/FileZilla等工具上传到hadoop用户家目录的soft目录,并解压到hadoop目录。2.2Hadoop环境变量配置2.2.1下载及解压Hadoop压缩包
Hadoop安装目录中常用目录说明如表2-2所示。2.2Hadoop环境变量配置表2-2Hadoop安装目录中常用目录说明2.2.2设置Hadoop环境变量
运行Hadoop必须设置很多环境变量,可是如果每次登录都要设置,就显得很麻烦,因此可以在~/.bash_profile文件中设置每次用户登录时都会自动运行加载一次的环境变量。2.2Hadoop环境变量配置2.2.3修改hadoop-env.sh量
要让Hadoop可以正常运行起来,还需要对Hadoop进行一些基础配置。hadoop-env.sh是Hadoop的配置文件,在配置文件中需要正确设置Java的安装路径。2.2Hadoop环境变量配置2.2.4规划部署Hadoop实验环境
为了后续实验环境的纯净性,建议完成前面的基础配置后,对虚拟机做一个快照备份,当实验出现问题时,可以还原到基础状态。本书为了实验的清晰及后续集群实验的成功,对部署好的虚拟机复制多份,同时对后期设备的主机名称、IP地址及功能做了规划部署,如表2-3所示。2.2Hadoop环境变量配置表2-3主机名称、IP地址及功能对应表2.2.4规划部署Hadoop实验环境
当启动复制多份Linux系统时,将弹出如图2-28所示的提示框,单击“我已复制该虚拟机”按钮即可,此时会重新分配MAC地址。2.2Hadoop环境变量配置图2-28单击“我已复制该虚拟机”按钮
还有一个关键点,后续所写的prehadoop、master、slave1和slave2是主机名称,需要与/etc/hosts中的配置相映射,同时还要确保hadoop用户可通过SSH+主机名方式免密登录每一台设备(包括自己),请参照“2.1.3配置网络服务”中的“5.配置SSH免密登录”知识点进行配置。2.3Hadoop的安装模式
Hadoop的安装模式可以分为单机模式、伪分布式模式和完全分布式模式3种,而不同的模式所体现的性能也截然不同,接下来将进行3种模式的安装与配置。单机模式伪分布式模式完全分布式2.3.1单机安装与配置
单机模式是Hadoop的默认安装模式,即解压缩就是单机模式,这种模式所需的系统资源在3种模式中是最少的,这种模式下也不需要修改其他配置文件。
2.3Hadoop的安装模式图2-29查看Hadoop版本信息
(1)执行命令hadoopversion查看Hadoop是否安装成功,若出现如图2-29所示的界面,则表示安装成功。2.3.1单机安装与配置
(2)目前在单机模式下也可以执行sbin目录里的start-dfs.sh命令,执行前须确认hadoop用户可通过SSH+主机名方式免密登录自己设备,请参照“2.1.3配置网络服务”中的“5.配置SSH免密登录”知识点进行配置。2.3Hadoop的安装模式
以上可正常启动,说明单机模式配置成功,基本配置的方法也差不多掌握了,这时可以通过执行“hadoopfs-ls/”或者“hdfsdfs-ls/”命令查看HDFS单机部署目录结构。
按照表2-3所示的规划,打开prehadoop主机进行此次实验。接下来需要对Hadoop的配置文件进行设置,包括hadoop-env.sh、core-site.xml、hdfs-site.xml等。Hadoop的配置文件都在/etc/hadoop目录中,伪分布式或完全分布式的安装就是在单机安装的基础上根据实际情况修改表2-4中的文件。2.3.2伪分布式安装与配置
单机的Hadoop完全体现不了Hadoop的分布式效果,而完全分布式的部署对设备的要求也较高,折中就是伪分布式部署。它是指在一台机器上模拟分布式效果,其主要功能是用于测试和前期基础学习。2.3Hadoop的安装模式2.3.2伪分布式安装与配置2.3Hadoop的安装模式表2-4Hadoop常用配置文件及功能描述2.3.2伪分布式安装与配置2.3Hadoop的安装模式1.hadoop-env.sh配置文件
hadoop-env.sh中必须设置Java的安装路径,而前期已经进行了相应的JDK配置。2.3.2伪分布式安装与配置2.3Hadoop的安装模式2.core-site.xml配置文件
core-site.xml文件配置访问Hadoop集群的主要信息。fs.defaultFS是指默认文件系统名称;hdfs://prehadoop:9000是指外部可以通过此方式找到集群,prehadoop是主机名,需要在/etc/hosts文件中添加IP地址和主机名的映射关系;而hadoop.tmp.dir是设置存放基础配置内容的临时目录,默认在/tmp/hadoop-${}下,但是系统重启后很有可能删除/tmp下的文件而显得不安全,所以指向其他路径以确保安全性。
9000端口是FileSystem默认的端口号,8020端口是NameNode节点Active状态下的端口号,都可以使用。注意2.3.2伪分布式安装与配置2.3Hadoop的安装模式2.core-site.xml配置文件2.3.2伪分布式安装与配置2.3Hadoop的安装模式3.hdfs-site.xml配置文件
hdfs-site.xml用于设置HDFS分布式文件系统,其中dfs.replication代表文件保存副本数,默认为3。由于选择伪分布式部署,因此设置为1。
此时伪分布式部署已经就绪,可以直达“2.4Hadoop的格式化与启动验证”进行操作。2.3.3完全分布式安装与配置2.3Hadoop的安装模式
伪分布式主要是基于单个节点的,而完全分布式则是基于两个及多个节点完成搭建的。完全分布式和伪分布式的搭建,主要区别体现在core-site.xml和hdfs-site.xml的配置上,完全分布式会包含更多的内容。按照表2-3所示的规划,打开master、slave1和slave2主机进行此处的实验。2.3.3完全分布式安装与配置2.3Hadoop的安装模式
接下来在master主机中对Hadoop的配置文件进行设置,包括hadoop-env.sh、core-site.xml和hdfs-site.xml。
(1)hadoop-env.sh配置文件。则请参照“2.3.2伪分布式安装与配置”中的知识点进行配置。
(2)core-site.xml配置文件。请参照“2.3.2伪分布式安装与配置”中的知识点进行配置。
(3)hdfs-site.xml配置文件。hdfs-site.xml配置文件在完全分布式中可以采取默认配置方式,若不配置,则NameNode和DataNode的保存路径在core-site.xml中配置hadoop.tmp.dir目录下,而SecondaryNameNode进程是在主节点下的。为保证安全性和可靠性,增加名称节点的路径和本地文件系统数据节点的路径,并可设置SecondaryNameNode的HTTP通信地址,更多选项配置请查阅官方相关资料。2.3.3完全分布式安装与配置2.3Hadoop的安装模式2.3.3完全分布式安装与配置2.3Hadoop的安装模式
(4)配置slaves文件。slaves文件存放的是DataNode(数据节点),先删除slaves文件中之前的localhost内容,然后在slaves文件中写入slave节点,此处设置的是master、slave1和slave2。
需要注意的是,这里的master、slave1和slave2是主机名称,需要在/etc/hosts文件中做好IP地址和主机名称的映射。2.3.3完全分布式安装与配置2.3Hadoop的安装模式
(5)复制master主机的Hadoop配置至slave1、slave2服务器。
此时完全分布式部署已经就绪,可以直达“2.4Hadoop的格式化与启动验证”进行操作。2.4.1创建并格式化HDFS目录2.4Hadoop的格式化与启动验证
Hadoop搭建的不管是伪分布式还是完全分布式,格式化与启动验证的步骤是一致的。
第一次启动Hadoop之前,必须格式化HDFS实现集群的初始化。执行命令“hdfsnamenode-format”。当出现如图2-30所示的信息时即表示格式化成功。图2-30Hadoop格式化成功2.4.2确认集群服务器之间可SSH免密登录2.4Hadoop的格式化与启动验证
再次确认/etc/hosts文件中是否增加IP地址和主机名称的映射关系,使用ssh工具登录到每一台服务器(包括自己),执行命令“ssh主机名”,确认每台集群服务器均可SSH免密登录。若无法SSH免密登录,请参照“2.1.3配置网络服务”中的“5.配置SSH免密登录”知识点进行配置。2.4.3启动HDFS集群2.4Hadoop的格式化与启动验证
在Hadoop的sbin目录下有很多启动脚本,可以根据需求启动/停止Hadoop的守护进程,相关作用如表2-5所示。表2-5启动/停止脚本作用对应表
启动集群时,建议一个一个启动守护进程,方便启动失败时的排错。2.4.3启动HDFS集群2.4Hadoop的格式化与启动验证
根据“2.3.2伪分布式安装与配置”的搭建环境启动HDFS守护进程。1.伪分布式启动HDFS守护进程
由于伪分布所有功能都部署在一台机器上,目前启动了HDFS守护进程,从jps查询返回的结果可以得知Hadoop已经正常启动(包含NameNode、DataNode和SecondaryNameNode)。2.4.3启动HDFS集群2.4Hadoop的格式化与启动验证
根据“2.3.3完全分布式安装与配置”的搭建环境启动HDFS守护进程。2.完全分布式启动HDFS守护进程
根据“2.3.3完全分布式安装与配置”,目前启动了HDFS守护进程,从jps查询返回的结果可知达到了预期的效果,master是NameNode,slave1是SecondaryNameNode,master、slave1和slave2都是DataNode。相应的进程都已经启动到位。2.4.4Web验证集群HDFS2.4Hadoop的格式化与启动验证
不管是伪分布式还是完全分布式,如果使用jps命令查看守护进程运行正常,则可通过Web方式访问http://NameNode主机IP地址或主机名称:50070,如图2-31所示。图2-31HDFS的Web界面2.4.4Web验证集群HDFS2.4Hadoop的格式化与启动验证
在完全分布式环境下通过Web访问SecondaryNameNode管理界面,如图2-32所示。图2-32SecondaryNameNode界面2.4.4Web验证集群HDFS2.4Hadoop的格式化与启动验证
如果打开SecondaryNameNode界面时无信息显示,那么需要修改hadoop/hadoop-2.10.0/share/hadoop/hdfs/webapps/static/路径下的dfs-dust.js文件,将其中的第61行修改如下:
而对经过源码编译后安装的Hadoop则不存在这个问题。2.5实训2Hadoop的安装与基本配置——伪分布式1.实训目的(1)掌握Hadoop环境的基础搭建与环境变量设置;(2)掌握JavaJDK的安装与检验;(3)掌握伪分布式Hadoop的安装与配置;(4)掌握修改Hadoop的若干配置文件使得Hadoop的相关守护进程能正常启动;(5)掌握在虚拟机中备份与恢复操作系统的方法。(1)Linux系统内存推荐1GB,尽量根据自己的物理设备进行调整;(2)虚拟机中的网络采用默认方式,暂不更改,仅将网卡启用;(3)虚拟机系统IP地址采取静态IP地址,为XXX.XXX.XXX.YY(YY代表学号后两位);(4)创建hadoop用户,后续在hadoop用户下操作;(5)设置系统主机名为姓名拼音(如zhangsan),并在/etc/hosts文件中建立IP地址和主机名称的映射关系;(6)下载、上传、解压Hadoop压缩包软件到hadoop用户家目录(可自定);(7)设置hadoop.tmp.dir为用户家目录下的prehadoop目录;(8)Hadoop的格式化与启动验证;(9)通过Web访问浏览查看;(10)Hadoop搭建好后进行快照备份与恢复实验。2.5实训2Hadoop的安装与基本配置——伪分布式2.实训内容(1)按题目要求写出相应的实验步骤(“文字+截图”方式);(2)总结实训心得与体会。2.5实训2Hadoop的安装与基本配置——伪分布式3.实训要求感谢聆听Hadoop文件系统033.1HDFS简介3.2HDFS架构3.3HDFS读写文件流程3.4HDFS接口3.5实训3Hadoop的安装与基本配置——完全分布式知道HDFS的架构及相关概念;知道HDFS文件读写流程及副本存放策略;知道HDFS的几种接口类型及接口的应用场景;掌握HDFSWeb接口的登录和验证方法。1243
本模块讲解Hadoop文件系统(HDFS)架构、读写文件流程和HDFS接口,使读者能够掌握相关知识,为后续学习打好基础。HDFS架构中主要涉及几个概念和对应的设置,读写文件流程通过图文并茂的方式进行讲解,最后通过HDFS的Web接口对前面所做的讲解和配置进行验证。通过本模块的学习,读者将达到以下职业能力目标和要求:目标和要求Hadoop文件系统3.1HDFS简介HDFS(Hadoopdistributedfilesystem)是ApacheHadoop分布式文件系统。随着物联网的出现和信息技术的不断发展,数据正以超快的速度增长,数据存储成为需要直接面对的问题,而HDFS的设计思想正好适应当前大数据爆发的形势。HDFS适合运行在闲置/廉价的硬件集群上,通过流式文件的访问方式来存取大文件,其具有以下几点优势:(1)高容错性(数据保存多个副本,能够防止数据丢失,确保数据安全)。(2)数据存取速率快(一次写入,多次读取,并且选择近的节点进行读写操作)。(3)适合大数据批量文件处理(节点规模可以拓展到成百上千个节点,提供很大的数据带宽进行文件处理)。(4)兼容各种软硬件平台。3.2HDFS架构HDFS可以说是一切大数据平台的基础,因为它具有高性能、高可靠性、高扩展性、高吞吐率等优点,正是这些优点为大数据的存储、处理提供了强大的底层存储架构。HDFS采取的是Master/Slave架构方式,由客户端、NameNode、DataNode和SecondaryNameNode构成,这些在集群中都是以节点的形式存在的,每个节点运行不同类型的守护进程。HDFS主要架构示意图如图3-1所示。图3-1HDFS主要架构示意图3.2HDFS架构3.2.1blockHDFS中是按照块(block)来存储数据的,客户端存储时会按照协议将大文件划分为一系列的块,NameNode存储文件的元数据,DataNode存储实际的数据块,同时会根据性能、负载等情况均匀地分散在不同的DataNode节点中。Hadoop数据块从2.7.2的默认64MB变为2.7.3的默认128MB,也可以通过Hadoop中的hdfssite.xml文件修改默认数据块大小。3.2HDFS架构3.2.1block例如,某个300MB大小的文件,修改block大小之前(默认为128MB),其在HDFS中的实际存储情况如图3-2所示。图3-2HDFS默认配置下的文件块分布HDFS存储时,只占据每块实际容量大小,如图3-2中剩余的第三块只占据了44MB,而不是128MB。如果设置的块大小为300MB,则只需要一个块就解决了,寻址的开销就会被最小化,不过数据块不是设置得越大越好,虽然数据块设置得越大,mapper就越少,但mapper失败之后重启的时间也越长。3.2HDFS架构3.2.2NameNodeNameNode(元数据节点)是HDFS的主进程,整个集群中只有一个,维护着整个文件系统的目录树,管理着数据块(block)映射信息,NameNode可以被认为是一个调度者,而DataNode就是一个命令执行者,只能被动地读写数据块。当NameNode启动时它会将存储在本地的fsimage(元数据镜像文件,保存着文件系统的目录树)和edits(元数据操作日志,保存着对目录树的修改操作)中的内容写入内存中已实例化的元数据(metadata)中,当metadata在内存中的大小或操作数超过一定阈值时,则会写入硬盘中存储使之持久化。3.2HDFS架构3.2.3DataNodeDataNode(数据节点)是HDFS的从进程,所有的存储从节点上都应该有此进程。DataNode会按照客户端或者NameNode的要求,针对特定的数据块进行读写和复制操作。为了保证文件在设备上的安全性,可以通过Hadoop中的hdfs-site.xml文件来修改每个数据块在集群中保存的份数。数值越高,冗余性就越好,相对占用的存储空间就越多。由于HDFS采用的是Master/Slave架构,因此还可以实时动态地向集群中增加或删除DataNode节点。3.2HDFS架构3.2.4SecondaryNameNodeSecondaryNameNode(辅助元数据节点)并非NameNode的备份,而是NameNode的辅助节点,定期从NameNode请求fsimage和edits文件,然后把fsimage和edits文件合并成新的fsimage文件,NameNode从SecondaryNameNode获取合并好的新的fsimage文件并将旧的替换掉,如图3-3所示。图3-3SecondaryNameNode辅助NameNode示意图3.2HDFS架构3.2.5客户端客户端(client)上应该有NameNode访问协议(如IP、端口和协议等),以及相关支持的命令和jar包,客户端从NameNode获取文件相关信息,最终是直接从DataNode进行读/写数据操作。HDFS提供了非常多的访问接口,包括Shell接口、JavaAPI接口、自带的Web接口等,不管采用哪种方式去访问HDFS,都会调用相关的jar包,jar包中的程序会根据约定规则主动去访问NameNode并取得相关服务。3.2HDFS架构3.2.6副本存放策略在HDFS中,一个文件会被拆分为一个或多个数据块。默认情况下,每个数据块都会有3个副本,而每个副本都会被存放在不同的机器上,同时每一个副本都有自己唯一的编号,副本的存放策略如图3-4所示。图3-4HDFS副本的存放策略示意图3.2HDFS架构3.2.6副本存放策略副本存放策略(1)第1个副本:放在上传文件的DataNode;若是集群外提交,则会随机选择,但是不会选择存储过满、CPU太忙的节点。(2)第2个副本:放在与第1个副本不同且随机选择的机架上的节点上。(3)第3个副本:放在与第2个副本相同机架上的不同节点上。(4)剩余的副本随机选择节点。3.2HDFS架构3.2.7安全模式系统启动时,NameNode进入安全模式,将会对各个DataNode上所拥有的数据块列表对进行数据报告的收集,若数据块达到最小副本数,则可能等待十几秒就会退出安全模式状态。若不满足最小副本数值要求,则该块会复制到其他DataNode以满足最小值。安全模式下不能进行文件系统的任何修改,可以通过命令退出、进入、查看NameNode的安全模式。3.3HDFS读写文件流程HDFS有一个DFS(分布式文件系统)实例,客户端通过调用这个实例的创建create()方法就可以在HDFS上创建文件。假设请求存储300MB的文件d(HDFS采用默认块大小128MB),这个写入流程示意图如图3-5所示。3.3.1HDFS写文件流程图3-5数据写入流程示意图3.3HDFS读写文件流程3.3.1HDFS写文件流程(1)客户端使用HDFS提供的接口,向NameNode发起写文件请求。(2)NameNode通过执行不同的检查来确保这个文件不存在,而且客户端有新建该文件的权限。如果检查都通过了,NameNode就会为文件创建一个文件元数据(meta)记录,同时响应可以上传文件;反之,则向客户端抛出一个异常。(3)客户端写入文件数据到本地文件系统的一个临时文件。(4)待临时文件达到块大小(默认为128MB)时,开始向NameNode发出请求(上传第1个数据块),请求返回DataNode信息。(5)NameNode在文件系统中进行遍历,寻找数据节点DataNode,选定后在文件元数据中进行记录,并返回给客户端相关数据块及其对应DataNode的地址列表(列表中包含副本存放的地址等信息),假设返回存储d1数据块DataNodes节点为Node1、Node2和Node11。3.3HDFS读写文件流程3.3.1HDFS写文件流程(6)客户端通过返回的信息,以数据包(一般为4KB)的形式上传给第一个DataNode,DataNode在把数据包写入本地磁盘的同时会向第2个DataNode传送数据,当然第2个DataNode在把数据包写入本地磁盘的同时会向第3个DataNode传送数据,以此类推。最终数据包以流水线的形式写入或备份到所有DataNode节点。(7)传送管道(pipeline)中的每个DataNode节点在收到数据后都会向前面的DataNode发送一个ACK,最后由第一个DataNode向客户端发回一个ACK。如果数据比较大,就将其分割为多个数据块,并循环执行(4)(5)(6)(7)过程。(8)当客户端收到数据块的确认后,认为数据块都已经持久化到指定的DataNode节点,则会向NameNode发送一个传输完成的ACK确认。3.3HDFS读写文件流程3.3.2HDFS读文件流程HDFS有一个文件系统实例,客户端通过调用这个实例的open()方法就可以打开存储在HDFS上的文件。假设请求读取文件d(d由d1、d2和d3数据块构成),这个读取流程示意图如图3-6所示。图3-6数据读取流程示意图3.3HDFS读写文件流程3.3.2HDFS读文件流程(1)客户端使用HDFS提供的接口向NameNode发起读文件请求。(2)NameNode会视情况返回文件的部分或全部block列表,同时返回每个block所在的DataNode地址。(3)客户端收到block相关信息后,会从副本数中选取距离客户端最近的DataNode读取block数据。3.3HDFS读写文件流程3.3.2HDFS读文件流程(4)当快要读取完成当前的block数据时,为下个block读取寻找最佳的DataNode节点。当前的block数据读取完毕后,关闭与该DataNode的连接,连接下个block相关的DataNode,继续进行block数据读取。(5)读取的block都会进行checksum校验,若有错,则从副本重新读取。若数据校验都无错误,则附加存储到本地文件系统。3.4HDFS接口3.4.1了解四类接口HDFS可以说是大数据处理领域最基础的存储服务,它提供了常用的四类统一访问接口来供上层应用。(1)HDFSShell接口。HDFSShell接口主要面向HDFS管理员,通过Shell接口,管理员可以查看HDFS系统级别的统计信息和文件系统。(2)HDFSJavaAPI接口。HDFSJavaAPI接口主要面向Java开发工程师,利用此接口进行程序开发、大数据计算等。(3)WebHDFSRESTAPI接口。WebHDFSRESTAPI接口主要面向前端工程师,通过调用此API,前端工程师能够开发一套自定义的Web页面。(4)HDFS自带Web接口。HDFS自带Web接口主要面向HDFS管理员,在此页面上显示的信息主要包括HDFS系统级别的统计信息和文件系统,且此页面只支持读操作。3.4HDFS接口3.4.2HDFSWeb接口下的验证下面通过HDFSWeb界面验证前面所讲的知识点,通过Web访问http://NameNode主机IP地址或主机名称:50070,如图3-7所示(截取部分)。图3-7HDFSWeb界面部分截图3.4HDFS接口3.4.2HDFSWeb接口下的验证从图3-7中可以验证有3个Live的节点数,同时也可以通过选择“Utilities”→“Browsethefilesystem”选项进入文件系统,并可以查询“/”根目录下的文件信息,如图3-8所示。3.4HDFS接口3.4.2HDFSWeb接口下的验证图3-8HDFSWeb文件系统接口及浏览文件信息3.4HDFS接口3.4.2HDFSWeb接口下的验证图3-9HDFSWeb文件系统接口从图3-8中可以看到一个14B大小的HDFSWebTest.txt文件,拥有3个副本,BlockSize大小为128MB,因此该文件应当占用1个块,如图3-9所示。从图3-9中可确定HDFSWebTest.txt文件块数,以及Block0的位置信息,分别存放于master、slave2和slave1节点上。3.5实训3Hadoop的安装与基本配置——完全分布式1.实训目的(1)(2)(3)(4)(5)掌握Hadoop环境的基础搭建与环境变量设置;掌握JavaJDK的安装与检验;掌握完全分布式Hadoop的安装与配置;掌握修改Hadoop的配置文件使得Hadoop的相关守护进程正常启动的方法;掌握复制操作系统的方法。2.实训内容(1)Linux系统内存推荐1GB,尽量根据自己的物理设备进行调整;(2)虚拟机中的网络采用默认方式,暂不更改,仅将网卡启用;(3)虚拟机系统IP地址采取静态IP地址,地址为XXX.XXX.XXX.YY(YY代表学号后两位);(4)复制虚拟机,按照表3-1进行环境搭建;3.5实训3Hadoop的安装与基本配置——完全分布式表3-1完全分布式环境搭建表2.实训内容(5)创建hadoop用户,后续在hadoop用户下操作;(6)设置系统主机名为master,并在/etc/hosts文件中建立IP地址和主机名称的映射关系(此处操作master,后续复制到slaves节点);(7)下载、上传、解压Hadoop压缩包到hadoop家目录(可自定);(8)设置hadoop.t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 循证护理证据的可行性分析
- 土壤的形成课件【知识精研】高一地理湘教版(2019)必修一
- 2024年新人教版1年级数学上册课件 数学游戏 课时1 认识校园
- 2024至2030年中国阴螺纹弯头行业投资前景及策略咨询研究报告
- 2024至2030年中国镍镉电池组充电器行业投资前景及策略咨询研究报告
- 2024至2030年中国电动链条式开窗机行业投资前景及策略咨询研究报告
- 废物处理厂建设工程合同三篇
- 2025年关于清廉村居建设工作总结范文
- 环境保护、水土保持保证体系及保证措施
- 酒店建筑节能施工方案设计
- 2024年江西省高考化学试卷(真题+答案)
- 人教版小学语文一年级单元测试题-全册
- 2024-2030年中国PQQ行业市场发展分析及前景趋势与投资研究报告
- 2024年新青岛版四年级上册科学全册知识点六三制
- 注册消防工程师案例分析真题(完整)
- 实验室经费管理制度
- 2024-2030年中国数字商务行业市场发展趋势与前景展望战略分析报告
- 烟草专卖行政执法中存在的问题及对策研究
- 二手车交易定金合同范本5篇
- 《乌鲁木齐市国土空间总体规划(2021-2035年)》
- 无人机应用技术专业申报表
评论
0/150
提交评论