




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hadoop大数据项目开发——走进大数据世界引言2020年我国决战脱贫攻坚取得决定性胜利,在脱贫攻坚过程中,大数据技术得到广泛应用,为尽早实现精准脱贫目标提供了可行路径。目录content02大数据的特点01大数据的概念03大数据的应用领域1.大数据概念大数据摩尔定律:数据每年都在以50%的速度增长,人类在最近两年产生的数据量相当于之前产生的全部数据量。中商产业研究院预测2022年全球大数据储量已达61.2ZB。1.大数据概念ZB是个什么概念呢?1TB=1024GB如果把1ZB的文件往1TB的硬盘里装,通过换算,大概需要10亿块1TB的硬盘,硬盘连接起来足够绕地球两圈半。ZB是个什么概念呢?1TB=1024GB1PB=1024TB1PB=1024TB1EB=1024PB1ZB=1024EB1.大数据概念知名咨询公司麦肯锡全球研究院给出的大数据定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件能力范围的数据集合,即大数据。这个数据集合,已超过了以往的常规数据集合。定义大数据国务院在2015年印发的《促进大数据发展行动纲要》中指出,大数据是以容量大、类型多、存取速度快、应用价值高为主要特征的数据集合,正快速发展为对数量巨大、来源分散、格式多样的数据进行采集、存储和关联分析,从中发现新知识、创造新价值、提升新能力的新一代信息技术和服务业态。1.大数据概念定义大数据2.大数据的4V特点数据量大(Volume)数据类型繁多(Variety)处理速度快(Velocity)价值密度低(Value)1V2V4V3V2.大数据的特点数据量大(Volume):随着物联网、电子商务、社会化网络的快速发展,全球大数据储量迅猛增长,远远超出人类的想象空间。装在1TB的硬盘里,硬盘重约3000万吨,拉走这些硬盘需要50万节火车车厢。装在1TB的硬盘里,大概需要62亿块,足够绕地球150多圈。2022年的大数据储量61.2ZB2.大数据的特点数据类型繁多(Variety):大数据的结构类型丰富多样,由结构化和非结构化数据组成,结构化数据占10%左右,存储在数据库中;非结构化数据占90%左右,主要包括邮件、音频、视频、位置信息、微博等。2.大数据的特点这是大数据区分于传统数据挖掘最显著的特征。从数据的生成到消耗,时间窗口非常小,可用于生成决策的时间非常少。“1秒定律”或者秒级定律:就是说对处理速度有要求,一般要在秒级时间范围内给出分析结果,时间太长就失去价值了。在100万张DVD光盘中查询数据只需要1~2秒的时间。Velocity处理速度快2.大数据的特点99%1%价值密度低Value信息感知无处不在,信息海量,但价值密度较低,如何通过强大的机器算法更迅速地完成数据的价值“提纯”,是大数据时代亟待解决的难题。例如:实时摄像头的监控数据,有用的信息往往只有几秒时间。3.大数据应用领域大数据在环境行业中的应用大数据在智慧城市中的应用123564大数据在金融领域中的应用大数据在医疗行业中的应用大数据在环境行业中的应用大数据在农业中的应用大数据在农产品溯源中的应用3.大数据应用领域智慧城市金融医疗遍布于智慧城市中的交通、医疗、生活等城市建设中的各个方面,使得城市的管理已经从“城市经验治理”向“城市数字治理”方向发展。金融交易过程中,每一天都会产生大量的交易记录、业绩报表、研究报告、信贷分析报告等,金融业高度依赖于大数据技术,大数据技术为金融业提供了决策支持。构建大数据平台来收集不同病例和治疗方案,以及病人的基本特征,建立针对疾病特点的数据库,帮助医生进行疾病诊断。3.大数据应用领域环境农业农产品借助于大数据技术,天气预报的准确性和实效性大大提高,同时对于重大自然灾害预报更加准确,有利于帮助人们提高应对自然灾害的能力。利用大数据技术可以管理地块和规划作物种植适宜区,预测气候、自然灾害、病虫害、土壤等环境因素,监测作物长势,指导灌溉和施肥,预估产量。利用大数据技术通过向上追踪可以查询到产品的源头信息;通过向下追踪可以查询到产品的流通信息,包括产品的销售信息、物流信息以及售后情况等。本节小结大数据技术已经渗透到了人类生活中的各个领域。概念特点应用领域Hadoop大数据项目开发——Hadoop简介目录content0201Hadoop简介Hadoop特点Hadoop简介Hadoop是一个Apache软件基金会旗下的开源软件Hadoop简介Hadoop具有旺盛的生命力免费极大的降低使用的复杂旺盛的生命力它对普通用户屏蔽了技术底层实现的细节,只要按照它提供的接口做一些简单的操作,后台所有的工作全部有它整个系统技术自己去实现。Hadoop简介Hadoop是用Java开发,但支持多种编程语言开发Hadoop是使用Java语言开发,但不是只能用Java语言去写Hadoop的应用,在Hadoop平台上开发它的应用可以使用任意语言。Hadoop简介--两大核心大数据项目的集合体,一整套解决方案的统称分布式并行编程框架MapReduce海量数据的分布式计算分布式文件系统HDFS:海量数据的分布式存储Hadoop简介--解决两大关键问题HDFS:海量数据的分布式存储解决怎么用成百上千乃至上万台机器存储PB乃至EB规模的数据。Hadoop解决了大数据时代最关键的两个难题:MapReduce:海量数据的分布式处理解决上千台服务器同时完成一个任务的分布式并行处理。Hadoop在各个领域得到了非常广泛的应用,满足了许多企业实际的需求,也成为各大知名公司的宠儿。。Hadoop简介--应用国内点击添加标题内容添加关键字Hadoop起源Hadoop平台的两大核心组件均来自于谷歌2008年1月,Hadoop正式成为Apache顶级项目;2008年4月,Hadoop用910个节点构成集群,对1TB的数据进行排序,仅用了209秒,一战成名,Hadoop由此名声大震。Hadoop最早是为了构建一个大型全网搜索引擎。谷歌2004年发布了并行编程框架MapReduce。2005年,Hadoop平台把它作为自己的MapReduce的开源实现。谷歌2003年发布了分布式文件系统GFS,2004年,Hadoop把GFS应用到自己的平台,即HDFS是GFS的开源实现。Hadoop简介Hadoop的名字不是单词的首字母缩写Hadoop不是版本号最高就代表最新这是因为对于任何一个Apache开源项目,当需要开发某个特性时,会专门从主代码线中延伸出一个分支。由于多个分支可能会同时进行研发,因此版本高的分支有时候会先于版本低的分支发布。Hadoop项目负责人曾经这样描述过这个名字:“这是我的孩子给他的黄色毛绒小象玩具起得名字,简短易于读写,没有具体意义且没有被别人使用过,这就是我对于项目命名的原则”。Hadoop特点低成本高效性高容错性高可靠性支持多种编程语言高扩展性Hadoop特点高可靠性Hadoop采用冗余副本机制;当部分机器发生故障时,其他机器也可以保证集群正常对外提供服务。集群中的一台机器有问题,其余机器继续提供服务Hadoop特点高效性Hadoop以并行的方式工作,非常高效的处理海量数据。成百上千台机器一起计算Hadoop特点高扩展性Hadoop实现了线性扩展,可以从单个服务器扩展到数千台计算机,并且每台计算机都提供了数据存储功能和计算功能。Hadoop特点高容错性Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,当其中一个副本出现故障时,不影响集群的整体运行。Hadoop特点低成本Hadoop使用廉价计算机搭建集群,从而降低了硬件成本,普通用户也可以使用自己的个人计算机搭建和运行Hadoop。个人计算机搭建大数据集群Hadoop特点123支持多种编程语言支持多种编程语言完成Hadoop平台的应用程序开发。
具有很好的跨平台特性;Hadoop是用Java语言开发的。本节小结Hadoop自诞生以来,改变了对数据存储、处理和分析的过程,加速了大数据技术的快速发展,得到了非常广泛的应用。Hadoop大数据项目开发——Hadoop生态系统目录content02MapRedcue01HDFS03YARN04ZooKeeper05Hive07Sqoop06HBase08Kafka09FlumeHadoop生态系统简介Hadoop生态系统图HDFS:分布式文件系统成百上千台服务器完成海量数据存储和管理。可以运行在廉价的个人计算机集群上。HDFS负责整个分布式文件的存储YARN:资源调度YARN负责资源的管理和调度例如内存,CPU,带宽等需要YARN统一调度。海量数据在HDFS存储后,需要进行相关的处理,但是处理之前,需要一个计算的框架去调度资源,底层那么多资源,需要YARN框架进行调度。MapReduce:分布式文件计算不是实时计算,是负责离线,批处理计算的。用户只需实现Map和Reduce两个函数就可以完成分布式计算任务。MapReduce解决海量数据的计算问题Hive:数据仓库Hive是Hadoop的数据仓库。用于离线分析用于企业的决策分析ZooKeeper:协调服务用于统一维护配置信息、域名,提供分布式同步、组服务等可以用来搭建高可用集群。Hive是分布式应用程序协调服务。HBase:非结构化数据库面向列的分布式开源数据库。随机读写,支持实时应用。HBase是非关系型数据库。HBase是Hadoop的非结构化数据库。Flume:日志收集访问阿里巴巴、淘宝时的数据流都是实时生成的,需要进行实时分析,必须有一套工具把它收集过来,Flume就是帮助进行日志收集的。Flume负责日志收集Sqoop:数据导入导出Sqoop专门用于把关系型数据库中的相关产品导入到Hadoop平台上的HDFS、HBASE、HIVE数据库;反之,用Sqoop把Hadoop平台上的HDFS、HBASE、HIVE中的数据导出到关系型数据库中。Sqoop负责数据的导入导出Kafka:开源流处理平台是一个开源流处理平台,由Scala和Java编写。是一种高吞吐量的分布式发布订阅消息系统。它可以处理消费者在网站中的所有动作流数据。本节小结本节介绍了Hadoop生态系统中的主要组件,Hadoop经过多年的发展,整个生态系统不断成熟和完善。Hadoop大数据项目开发——虚拟机安装目录content01虚拟机安装VMware简介虚拟机指通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在实体计算机中能够完成的工作在虚拟机中基本都能够实现。VMwareWorkstation是一款功能强大的桌面虚拟计算机软件,提供用户在单一的桌面上同时运行不同的操作系统,以及进行开发、测试、部署新的应用程序的最佳解决方案。新建虚拟机步骤1步骤2新建虚拟机步骤3步骤4新建虚拟机步骤5本章小结本节一起创建了虚拟机,相信大家对虚拟机创建已经有了初步的认识,为我们后续搭安装CentOS7操作系统打下了坚实的基础。Hadoop大数据项目开发——CentOS7操作系统安装目录content01CentOS7操作系统安装安装CentOS7操作系统步骤1步骤2安装CentOS7操作系统步骤3设置时区界面设置键盘信息界面设置语言信息界面安装CentOS7操作系统步骤4安装资源界面软件安装选择界面安装CentOS7操作系统步骤5安装位置界面选择标准分区界面安装CentOS7操作系统步骤6boot分区界面swap分区界面安装CentOS7操作系统步骤7根分区界面安装CentOS7操作系统步骤8手动分区界面安装界面步骤9安装CentOS7操作系统步骤8:安装完成界面CentOS7登录界面步骤9:本章小结本节一起创建了虚拟机,并在虚拟机上安装了CentOS7,相信大家对CentOS7已经有了初步的认识,为我们后续搭建Hadoop分布式平台打下了坚实的基础。Hadoop大数据项目开发——虚拟机克隆目录content01虚拟机克隆Hadoop集群搭建步骤—Hadoop安装关闭要被克隆的虚拟机。步骤1:步骤2:Hadoop集群搭建步骤—Hadoop安装步骤3:Hadoop集群搭建步骤—修改配置文件步骤4:步骤5:Hadoop集群搭建步骤—修改配置文件步骤6:步骤7:生成MAC地址后,需要重启网络服务,命令如下:systemctlrestartnetwork本章小结本节一起克隆了CentOS7操作系统,相信大家已经掌握了CentOS7操作系统的克隆,为我们后续搭建Hadoop分布式平台打下了坚实的基础。Hadoop大数据项目开发——虚拟机集群环境配置-修改IP地址目录content01修改IP地址虚拟机集群环境配置-修改IP地址步骤1步骤2虚拟机集群环境配置-修改IP地址步骤3ifcfg-ens33修改前内容ifcfg-ens33修改后内容静态IP地址网关子网掩码,也可以写成PREFIX=24DNS,与网关设置成一样虚拟机集群环境配置-修改IP地址步骤4虚拟机集群环境配置-修改IP地址步骤5虚拟机集群环境配置-修改IP地址slave1节点中IP配置信息虚拟机集群环境配置-修改IP地址slave2节点中IP配置信息虚拟机集群环境配置-修改IP地址步骤6:slave2节点中IP配置信息虚拟机集群环境配置-修改IP地址虚拟机集群环境配置-修改IP地址虚拟机集群环境配置-修改IP地址本章小结本节一起修改了CentOS7操作系统的IP地址,为我们后续搭建Hadoop分布式平台打下了坚实的基础。Hadoop大数据项目开发——修改主机名和配置主机IP映射目录content01修改主机名02配置主机映射修改主机名步骤1修改master节点主机名编辑/etc/hostname/etc/hostname原有内容/etc/hostname修改后内容重启命令重启之后修改主机名步骤2:修改slave1节点主机名编辑/etc/hostname/etc/hostname原有内容/etc/hostname修改后内容重启命令重启之后修改主机名步骤2:修改slave2节点主机名编辑/etc/hostname/etc/hostname原有内容/etc/hostname修改后内容重启命令重启之后配置主机IP映射步骤1编辑/etc/hostshosts文件中的内容配置主机IP映射步骤2复制hosts到另外两个节点查看另外两个节点hosts文件中内容配置主机IP映射步骤3重启命令使用主机名验证3个节点配置主机IP映射步骤4Windows系统下主机IP映射C:\Windows\System32\drivers\etc配置主机IP映射步骤5XShell使用主机名本章小结本节一起修改主机名和配置主机IP映射,为我们后续搭建Hadoop分布式平台打下了坚实的基础。Hadoop大数据项目开发——虚拟机集群环境配置-免密登录目录content01免密登录免密登录大数据集群的节点之间需要频繁通信,但Linux系统在相互通信中需要验证用户身份。为了使Hadoop各节点之间能够免密相互访问,相互信任,无阻碍通信,可以为各节点配置SSH免密登录。配置免密后,节点之间访问时不需要输密码,方便快捷。虚拟机集群环境配置-免密登录master节点生成秘钥步骤1:直接按“回车键”即可.ssh目录中的内容虚拟机集群环境配置-免密登录slave1节点生成秘钥步骤1:直接按“回车键”即可.ssh目录中的内容虚拟机集群环境配置-免密登录slave2节点生成秘钥步骤1:直接按“回车键”即可.ssh目录中的内容Hadoop集群搭建步骤—JDK安装步骤2:重命名命令Hadoop集群搭建步骤—JDK安装步骤2:重命名命令Hadoop集群搭建步骤—JDK安装步骤2:重命名命令Hadoop集群搭建步骤—JDK安装步骤4:免密登录最终效果Hadoop集群搭建步骤—JDK安装步骤6:查看JDK版本信息Hadoop集群搭建步骤—配置slave1和slave2拷贝JDK到slave1和slave2两个节点拷贝profile文件到slave1和slave2两个节点Hadoop集群搭建步骤—JDK安装使profile文件生效,并查看slave1和slave2上JDK版本信息本章小结本节内容主要介绍了Linux操作系统下JDK的安装,包括JDK的安装和环境变量的配置。Hadoop大数据项目开发——JDK安装目录content01JDK安装Hadoop集群搭建步骤—JDK安装Xshell中的文件传输拖到文件传输窗口查看JDK安装包步骤1:Hadoop集群搭建步骤—JDK安装解压JDK安装包命令步骤2:步骤3:重命名命令Hadoop集群搭建步骤—JDK安装JDK环境变量步骤4:编辑profile文件步骤5:使profile文件生效Hadoop集群搭建步骤—JDK安装步骤6:查看JDK版本信息Hadoop集群搭建步骤—配置slave1和slave2拷贝JDK到slave1和slave2两个节点拷贝profile文件到slave1和slave2两个节点Hadoop集群搭建步骤—JDK安装使profile文件生效,并查看slave1和slave2上JDK版本信息本章小结本节内容主要介绍了Linux操作系统下JDK的安装,包括JDK的安装和环境变量的配置。Hadoop大数据项目开发——Hadoop分布式集群搭建目录content0201Hadoop集群部署方式Hadoop集群搭建Hadoop集群的部署方式单机模式:在该模式下,无须运行任何守护进程,所有的程序都在单个JVM上执行。伪分布式模式:Hadoop程序的守护进程运行在一台主机节点上,通常使用伪分布式模式来调试Hadoop分布式程序的代码。全分布式模式:Hadoop的守护进程分别运行在由多个主机搭建的集群上,不同节点担任不同的角色,在实际工作应用开发中,通常使用该模式构建企业级Hadoop系统。Hadoop分布式集群部署规划Hadoop分布式集群部署规划如下所示:名称节点在matser上,数据节点在master、slave1和slave2节点上,第二名称节点与名称节点要部署在不同的节点上。masterslave1slave2HDFSNameNodeDataNodeSecondaryNameNodeDataNodeDataNodeHadoop集群搭建步骤—Hadoop安装Xshell中的文件传输拖到文件传输窗口查看Hadoop安装包步骤1Hadoop集群搭建步骤—Hadoop安装解压Hadoop安装包命令Hadoop系统环境变量步骤2步骤3重命名命令步骤4编辑profile文件步骤5使profile文件生效Hadoop安装路径Hadoop集群搭建步骤—Hadoop安装步骤6查看Hadoop版本信息Hadoop目录下的内容Hadoop集群搭建步骤—修改配置文件步骤1Hadoop的配置文件hadoop-env.sh配置文件内容Hadoop集群搭建步骤—修改配置文件步骤2core-site.xml配置文件内容Hadoop集群搭建步骤—修改配置文件步骤3hdfs-site.xml配置文件内容HDFS文件系统的元信息保存位置HDFS文件系统的数据保存位置第二名称及诶点http服务器地址和端口Hadoop集群搭建步骤—修改配置文件步骤3hdfs-site.xml配置文件内容HDFS文件系统的元信息保存位置HDFS文件系统的数据保存位置第二名称及诶点http服务器地址和端口Hadoop集群搭建步骤—修改配置文件步骤4slaves配置文件内容Hadoop集群搭建步骤—配置slave1和slave2拷贝Hadoop到slave1和slave2两个节点拷贝profile文件到slave1和slave2两个节点Hadoop集群搭建步骤—配置slave1和slave2使profile文件生效,并查看Hadoop版本信息本章小结本节我们介绍了Hadoop集群部署方式和Hadoop集群搭建,相信大家对Hadoop分布式集群搭建有了全新的认识,为我们后续学习启动Hadoop集群打下了坚实的基础。Hadoop官方配置文档:/docs/stable/Hadoop大数据项目开发——Hadoop分布式集群启动目录content01Hadoop集群启动Hadoop集群启动步骤—格式化名称节点格式化成功界面步骤1:格式化NameNode节点命令Hadoop集群搭建步骤—Hadoop安装生成的name目录步骤2:步骤3:master上执行启动集群命令生成的data目录启动namenode节点启动datanode节点Hadoop集群搭建步骤—查看节点步骤4master的节点salve1的节点salve2的节点Hadoop集群搭建步骤—关闭防火墙步骤5日志信息关闭防火墙Hadoop集群搭建步骤—Web界面Hadoop集群搭建步骤—Web界面步骤2:Hadoop集群搭建步骤—Web界面core-site.xml配置文件内容课外拓展在集群中如何动态增加或者删除节点?关闭集群,把需要增加节点的主机名添加到slaves文件中,或者删除slaves文件中需要删除的主机名称,然后将slaves配置文件分发到集群中的其它节点,重启集群即可实现节点的动态增加或者删除。本章小结本节一起启动了Hadoop分布式集群,相信大家对Hadoop分布式集群有了全新的认识,为我们后续学习Hadoop打下了坚实的基础。Hadoop大数据项目开发——HDFS简介目录content0201HDFS简介HDFS实现目标和自身局限性HDFS简介HDFS是Hadoop两大核心组件之一。分布式存储:HDFS分布式处理:MapReduceHDFS就是为了解决海量数据的分布式存储问题。HadoopDistributedFileSystemHDFS简介--集群在大数据时代,数据量非常大,单个节点一台计算机是无论如何完成不了海量数据的存储,我们需要借助计算机集群存储海量数据。单机无法存储集群分布式存储HDFS简介--集群每个竖排代表一个机架,每个机架上摆放了好多机器,每个机器称为一个节点,在企业一个机架可以摆放30-40个节点,机架和机架之间是通过光纤交换机来完成彼此之间的网络互联。在这个集群中,HDFS把整个文件分布的存储在这些机器里。HDFS简介分布式文件系统解决了大数据存储问题,是横跨在多台计算机上的存储系统;分布式文件系统在大数据时代有着广泛的应用前景,为存储和处理超大规模数据提供扩展能力;分布式文件系统适用于一次写入,多次读出的场景,且不支持文件的修改,适合用来做数据分析。HDFS的实现目标成本低流式数据访问适合处理大数据高容错性大文件存储成本低HDFS集群可构建在廉价计算机上,通过多副本机制,提高可靠性。个人计算机搭建大数据集群HDFS的实现目标适合流式数据访问HDFS的数据处理规模比较大,应用程序一次需要访问大量的数据,HDFS的设计目标就是全部数据全部读写,它不适合访问整个文件中的一个子集。HDFS是为满足海量数据的批量处理而设计的。HDFS的实现目标适合处理大数据HDFS可横向扩展,其存储的数据规模:能够处理数据规模达到PB级别的数据;文件规模:能够处理百万规模以上的文件数量;节点规模:能够处理10K节点的规模。HDFS的实现目标高容错性数据保存多个副本,副本丢失后自动恢复;构建在廉价的计算机上,容易实现线性扩展,当集群增加新节点之后,名称节点(NameNode)也可以感知,进行负载均衡,将数据分发和备份数据均衡到新的节点上。HDFS的实现目标适合大文件存储HDFS采用数据块的方式存储数据,将数据物理切分成多个小的数据块;当用户读取时,重新将多个小数据块拼接起来。HDFS的实现目标0203不适合低延迟数据访问无法高效存储大量小文件不支持多用户写入及文件随机修改01HDFS自身的局限性不适合低延迟数据访问HDFS不适合低延迟数据访问,比如毫秒级以内读取数据或者存储数据,HDFS是很难做到的。HDFS自身的局限性无法高效的对大量小文件进行存储文件存储会占用名称节点的内存来存储文件目录和块信息,存储大量小文件就会耗费大量的内存,名称节点的内存总是有限的。HDFS自身的局限性HDFS自身的局限性HDFS不支持多用户写入和文件随机修改HDFS目前不支持并发多用户的写操作和文件的随机修改,写操作只能在文件末尾追加数据,一个文件只能有一个写,不允许多个线程同时写。本章小结本节我们了解到HDFS是hadoop兼容最好的标准级分布式文件系统,主要是对数据进行分布式储存和读取,探讨了HDFS的实现目标和自身的局限性。Hadoop大数据项目开发——HDFS体系结构目录content02数据节点块0405第二名称节点01HDFS体系结构03名称节点HDFS体系结构HDFS的核心组件是名称节点(NameNode)和数据节点(DataNode)。它是一个主/从(master/slave)架构的系统,即一个HDFS集群由一个NameNode和若干DataNode组成。其中,名称节点为主节点,数据节点为从节点。HDFS的体系结构块的概述Hadoop2.X版本默认的块大小为128M。块是HDFS中的最小存储单位,并且可以自定义大小。块按实际大小存储。拆分出来的块会有它相应的副本。块的优势可以存储任意大小的数据文件,不用再受单个节点磁盘容量大小的限制。简化了文件存储子系统的设计,将元数据信息和文件数据信息分开存储。有利于实现负载均衡并提高集群可靠性。有利于实现分布式文件系统的容错性。名称节点概述名称节点是整个HDFS集群的管家,名称节点上存储的元数据信息包括:数据块到数据节点的映射信息。每个文件由哪些数据块组成。文件目录的所有者及其权限。文件名、目录名及其层级关系。名称节点的数据结构元数据信息可被持久化到本地磁盘的两个文件中,分别是元数据镜像文件(fsimage)和事务日志文件(edits)。fsimage存储着文件系统的所有命名空间信息。edits存储着HDFS数据的事务操作日志。名称节点的数据结构所谓的持久化,就是指把数据保存到可永久保存存储设备(如磁盘)中。数据节点概述每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。负责为客户端或名称节点提供数据的检索和读写服务,并通过“心跳”定期向名称节点发送自己的块列表信息。存储着HDFS文件的真实数据,负责数据的存储和读取第二名称节点因为事务日志文件(edits)开始比较小,但随着对数据的不断修改,事务日志文件(edits)会不断增大,大到一定程度的时候,又会影响整个系统的功能,由此引入第二名称节点。1.对元数据镜像文件(fsimage)和事务日志文件(edits)定期合并,缩短名称节点(NameNode)的重启时间,提高系统性能。2.是名称节点的冷备份,因为名称节点有可能发生故障。为什么又引入第二名称节点?第二名称节点的功能:本节小结负责管理整个文件系统元数据。名称节点负责管理具体文件数据块存储。数据节点协助名称节点进行元数据的备份。第二名称节点Hadoop大数据项目开发——HDFS运行机制05目录content02高可用机制心跳机制06安全模式01副本机制03副本放置策略07垃圾回收机制联邦机制04副本机制底层缺陷冗余数据保存不断地出故障为了保证集群的容错性和可用性,HDFS采用了数据冗余存储方式,即一个数据可以保存多个副本。副本机制01020304冗余保存副本数也可以进行个性化设置默认冗余副本数:3010203优点01加快数据传输速度02很容易检查数据错误03保证数据可靠性心跳机制名称节点数据节点数据节点启动后,会主动连接名称节点,并在一定间隔(默认为3s)主动向名称节点发送一个“心跳”,报告自己的状态信息。心跳心跳名称节点通过这个“心跳”向数据节点下达命令是一种形象化描述,指的是不间断地发送一个自定义结构体(“心跳包”或“心跳帧”)来证明自己节点的有效性。心跳?心跳机制出现故障名称节点名称节点长时间未收到某个数据节点的“心跳”;名称节点名称节点判定该数据节点为宕机;备份副本名称节点检查该数据节点上的块副本数据并备份到其他的数据节点上。硬件故障或网络问题;副本怎么恢复呢?HDFS是如何探测副本出现故障?心跳机制第一副本放到上传文件的节点(机器)上第二副本放到和第一副本不同机架的任意节点上第三副本放到和第一副本相同机架的任意节点上副本放置策略这么多机器这么多的块,副本是怎么存放的呢?如果还有副本,可以放到其它节点上,全部随机。副本放置策略01第一副本放到上传文件的节点上,可以较快地读取,保证数据较好的本地性;02第二个副本及更多的block副本放置在其他机架,当整个结点失效时,HDFS将自动通过远端机架上的数据将副本恢复到标准水平。03Hadoop的副本放置策略在可靠性和带宽中做了一个很好的平衡。高可用(HA)机制Hadoop1.XHadoop2.XHDFS框架只有一个名称节点HDFS框架主备两个名称节点单点故障双NameNode架构HA机制高可用(HA)机制ActiveNameNodeStandbyNameNode负责HDFS的所有操作ZooKeeper确保主从名称节点的状态一致性主名称节点的热备份互为备份联邦机制TWITTERYOUTUBESKYPEFACEBOOK在联邦机制中,每个名称节点分别管理文件系统命名空间的一部分;命名空间卷存放元数据和数据块的块池。
在Hadoop1.0,HDFS只有一个NameNode,计算机的内存就成了NameNode的瓶颈;
各命名空间卷是相互独立的,互不影响且互不通信
在Hadoop2.x引入了HDFS联邦机制,即通过横向扩展的方式增加NameNode的数量;
1234安全模式只读模式,不能对命名空间进行修改,也不能创建、复制、追加和删除数据;在HDFS启动时,首先会进入安全模式,当达到规定的要求时,会退出安全模式;当集群中某些数据节点出现故障,或者因为某些原因造成文件系统处于不稳定状态时,NameNode会自动进入安全模式。HDFS的一种保护模式,保证数据块的安全性;该模式下,可以查看目录及文件、下载文件等操作。垃圾回收机制当用户或应用程序删除某个文件时,文件并不会立即从HDFS中删除,而是被移到了一个类似回收站的地方。当文件的删除时间超过一定期限,名称节点就会自动将该文件从命名空间中删除,该文件相关的数据块即被释放。在HDFS集群中,如果一个文件被删除,那么与该文件相关的数据块自然也就成了垃圾。本节小结本节介绍了HDFS的副本机制、心跳机制、副本放置策略、高可用机制等,大家进一步了解了HDFS,为后续HDFS操作奠定基础。Hadoop大数据项目开发——HDFS命令行操作目录content0201HDFS命令简介HDFS常用命令HDFS命令简介HDFS分布式文件系统中的基本操作与其他文件系统类似,包括目录创建、目录删除、查看子目录、文件创建、文件剪切、文件复制、文件重命名、文件删除、文件上传、文件下载等操作。HDFS的文件操作命令包括hadoopfs、hadoopdfs和hdfsdfs三种。fsdfs文件系统FileSystem分布式文件系统DistributedFileSystem分布式环境下,fs与dfs无区别(2)本地环境中,fs就是本地文件,dfs就不能用了(3)fs>dfs:fs的使用范围更大HDFS命令简介hadoopfs命令是Hadoop通用文件系统的命令接口,可以操作HDFS文件系统,也可以操作其他支持的文件系统如本地文件系统、S3文件系统等。hdfsdfs命令是HDFS文件系统特定的命令接口,只可以操作HDFS文件系统,不支持其他文件系统。HDFS文件系统建议使用hdfsdfs命令;通用文件系统使用hadoopfs命令。HDFS命令简介HDFS命令:文件或目录一定使用绝对路径,“/”01本地Linux:文件或目录可以是相对路径也可以是绝对路径02命令包括:目录命令、文件命令、文件上传下载等
03HDFS命令简介HDFS常用命令操作1.-help:查看HDFS文件系统支持的命令HDFS常用命令操作2.-ls:查看HDFS文件系统中根目录下的文件和目录HDFS常用命令操作3.-mkdir:在HDFS文件系统中创建目录HDFS常用命令操作创建级联目录命令,需要使用参数-pHDFS常用命令操作4.-put:将本地Linux操作系统中的文件上传到HDFS上hadoopfs-put./jdk.tar.gz/bigdata如果HDFS上已经存在要上传的文件,想覆盖掉源文件,则需要使用参数-f。HDFS常用命令操作5.-rm:删除HDFS文件系统上的文件或目录hadoopfs-rm/jdk-8u211-linux-x64.tar.gztHDFS常用命令操作-rm:删除目录,则需要加上参数“-r”hadoopfs-rm-r/bigdata/bigdata1HDFS常用命令操作6.-get:将HDFS上的文件下载到本地(Linux操作系统)HDFS常用命令操作7.-cat:查看HDFS文件系统上的文件内容hadoopfs-cat/test.txt查看HDFS文件系统上的文件内容的前3行HDFS常用命令操作8.-ls:查看HDFS文件系统中根目录下的文件和目录HDFS常用命令操作9.-cp:复制HDFS文件系统上的文件HDFS常用命令操作10.-mv:移动HDFS文件系统上的文件HDFS常用命令操作使用-mv也可以实现重命名功能hadoopfs-mv/bigdata/test.txt/bigdata/bigdata1/test2.txt本章小结本节介绍了使用HDFS命令行进行文件创建、文件下载、文件重命名、文件删除、目录创建等操作,相信大家对HDFS命令有了一定理解,为我们后续学校HDFSJavaAPI打下了基础。Hadoop大数据项目开发——HDFS命令行操作目录content0201Hadoop集群部署方式Hadoop集群搭建HDFS文件操作命令HDFS的文件操作命令包括:hadoopfs使用范围最广,可以操作各种文件系统,如本地文件、HDFS文件、HFTP文件、S3文件等。hadoopdfs针对HDFS文件系统的操作命令。hdfsdfs与hadoopdfs类似,针对HDFS文件系统的操作。Hadoop集群的部署方式HDFS分布式文件系统中的基本操作与其他文件系统类似,包括文件创建、文件下载、文件重命名、文件删除、目录创建等操作。HDFS中的文件或者目录一定使用绝对路径,HDFS路径从“/”开始。HDFS常用命令操作创建目录命令HDFS常用命令操作创建级联目录命令HDFS常用命令操作两个命令的区别hadoopfs-mkdir-p./bigdatahadoopfs-mkdir-p/bigdataHDFS常用命令操作上传文件到HDFS上课外扩展传到HDFS上的数据,最终在哪里?HDFS常用命令操作删除HDFS上的文件HDFS常用命令操作下载HDFS上的文件HDFS常用命令操作移动文件HDFS常用命令操作查看HDFS文件系统上的文件内容的前3行查看HDFS文件系统中根目录下的文件和目录HDFS常用命令操作复制文件HDFS常用命令操作复制文件HDFS常用命令操作删除HDFS上文件或目录本章小结本节介绍了使用HDFS命令行进行文件创建、文件下载、文件重命名、文件删除、目录创建等操作,相信大家对HDFS命令有了一定理解,为我们后续学校HDFSJavaAPI打下了基础。Hadoop大数据项目开发——HDFSAPI操作05目录content02删除文件引入依赖06移动或重命名文件01搭建客户端环境03上传文件下载文件04搭建HDFS客户端环境步骤1:将Windows操作系统下的Hadoop压缩包解压到E盘,文件夹名为hadoop。步骤2:配置HADOOP_HOME环境变量,如下所示:搭建HDFS客户端环境步骤3:配置Path环境变量,如下所示:搭建HDFS客户端环境步骤4:创建一个Maven工程,创建Maven工程过程如下所示,输入所建Maven工程的名称。搭建HDFS客户端环境HDFSAPI准备环境完成之后,编写Java代码,实现HDFS功能。引入依赖在编写代码之前,需要引入开发HDFSAPI客户端相应的依赖,如下所示:<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.9.2</version></dependency></dependencies>HDFS文件上传将Windows系统上本地E盘下面report.txt文件上传到HDFS集群,源代码如下所示:该参数为:副本数和文件块大小;(默认副本数量为3,块大小为128M)FileSystem.get构造一个访问HDFS系统的客户端对象:第一个参数为URI:名称节点所在的节点;第二个参数为客户端特别指定的:例如文件备份数量和块大小等;第三个参数为客户端的身份,该参数值为用户名。copyFromLocalFile实现上传一个文件到HDFS上,在该方法中指定待上传的文件及其位置,以及将要上传至HDFS上的位置。HDFS文件上传参数既可以在代码中设置,也可以在Hadoop集群中设置;那么参数优先级是怎么样的呢?优先级排序:客户端代码>ClassPath>xxx-site.xml>xxx-default.xmlHDFS文件上传将HDFS集群上的report.txt文件下载到Windows系统的E盘下面,源代码编写如下所示:HDFS下载文件HDFS下载文件连接HDFS的源码与文件上传的源码一致;copyToLocalFile实现了将HDFS上的文件下载到本地Windows系统:第一个参数指是否将原文件删除;第二参数指要下载的文件路径;第三个参数指将文件下载到的路径;最后一个参数是否开启文件校验。删除HDFS集群上的文件,源代码编写如下所示:HDFS文件删除delete:删除HDFS文件系统上指定文件的内容:第一个参数表示要删除的文件名;第二参数表示是否递归删除。将HDFS集群上文件名进行更改和移动,源代码编写如下所示:HDFS文件名更改和移动rename:文件移动和重命名:第一个参数为要移动或者重命名的文件;第二个参数为移动后或者重命名后的文件。本节介绍了HDFSAPI的编写,包括Windows本地文件上传,将HDFS上文件下载到Windows本地、删除HDFS上的文件、以及移动或者重命名文件,相信大家对HDFSAPI编写有了全新的认识,为我们后续学习大数据知识打下了坚实基础。本节小结Hadoop大数据项目开发——认识MapReduce目录content02MapReduce设计思想01MapReduce简介03MapReduce特点MapReduce简介在大数据时代,数据量非常大,不能把数据放在一个单机上运行,而是借助一个集群通过多台机器同时并行处理大规模数据集,帮助我们获得海量的计算能力;单机无法运行集群多台机器并行处理MapReduce简介开源实现谷歌公司最早提出分布式并行编程MapReduce,Hadoop平台对它进行了开源实现,成为Hadoop平台两个核心组件之一。MapReduce简介任何一个节点出现问题不会影响其他节点正常运行,又设置了冗余和容错机制。整个集群可以随意增加减少计算节点,计算节点只需要很廉价的PC机。只需要告诉Hadoop“做什么?”,整个系统框架自动实现分布式部署。Hadoop平台对Google上的MapReduce进行了很多相关的优化处理:集群架构和容错性硬件价格及扩展性编程和学习难度MapReduce设计思想Reduce函数Map函数屏蔽所有编程细节,把复杂的并行编程过程高度抽象为:MapReduce名称的由来:MapReduce整个框架中核心设计只有这两个函数,底层的细节都被隐藏掉了,所以它极大的降低了分布式并行编程的难度,这是MapReduce的突出优点。MapReduce设计思想策略理念函数两个函数一个策略一个理念MapReduce的设计思想总结有:一个策略,一个理念,两个函数。MapReduce设计思想一个策略:“分而治之”第一步:MapReduce采用分而治之;第二步:把非常庞大的数据集,切分成非常多的独立小分片;第三步:然后为每一个分片单独地启动一个Map任务;最后:最终通过多个Map任务,并行地在多个机器上去处理。MapReduce设计思想一个理念:”计算向数据靠拢”机器:数据机器:数据机器:数据机器:计算在大数据计算设计时,采用“计算向数据靠拢”,移动计算比移动数据更加经济,大大减少了整个网络中数据传输开销,大大提升整个分布式程序的处理性能。机器:数据MapReduce设计思想MapReduce把复杂的并行编程过程高度抽象为Map和Reduce两个函数Map对一组数据元素进行某种重复式的处理,提取数据的特征。Reduce对Map的中间结果进行某种进一步的结果整理。两个函数:Map函数和Reduce函数=+MapReduce设计思想统一构架,隐藏系统层细节通过抽象模型和计算框架把需要“做什么”与“怎么做”分开,为设计者提供一个高层的编程接口和框架。将具体完成并行计算任务相关的诸多系统层细节隐藏起来,交给计算框架去处理。MapReduce优点0203易于编程良好的扩展性高容错性01只需要告诉Hadoop“做什么?”,整个系统框架自动实现分布式部署。整个集群可以随意增加减少计算节点,计算节点只需要很廉价的PC机。任何一个节点出现问题不会影响其他节点正常运行,又设置了冗余和容错机制。MapReduce不足不擅长实时计算不擅长流式计算不擅长有向图计算性能局限应用局限MapReduce不足不擅长流式计算不擅长有向图计算不擅长实时计算MapReduce无法在毫秒或者秒级内返回结果。321流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化;MapReduce适用于海量数据的离线批处理;不适合数据事务处理或单一请求处理。多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO开销,导致性能非常低。MapReduce不足Map任务和Reduce任务存在着严格的依赖关系,Map任务的中间结果存储在本地磁盘上,Reduce任务需要从磁盘上获取Map计算的中间结果并将其作为Reduce的输入,这样就会产生大量的磁盘IO开销,使得计算机性能降低。性能局限MapReduce不适合一般的Web应用,因为这些应用只是简单的数据访问且每次访问请求所需要的资源非常少,同时还需要满足高并发访问需求。应用局限本节小结MapReduce是针对大规模集群中的分布式文件进行并行处理的计算模型;MapReduce设计目标就是让不熟悉分布式并行编程的开发人员,将自己的程序轻松运行在分布式系统上。Hadoop大数据项目开发——MapReduce工作流程目录content02Reduce过程Map过程0405写入文件01分片和格式化数据源03Shuffle过程MapReduce工作流程概述MapReduce编程简单且功能强大。专门为并行处理大规模数据而设计。对于简单数据处理,只需要执行Map任务。对于复杂任务,根据实际的业务需求设置合适的Reduce任务数。MapReduce工作流程MapReduce工作流程第一步:分片和格式化数据源将存储在分布式文件系统中数据集切分成独立的输入分片。每一个输入分片对应一个Map任务(有多少输入分片就会存在多少Map任务)。输入分片是逻辑概念。输入分片中存储了一些元数据信息。输入分片处理成<key1,value1>形式的数据,再传递给Map任务。第二步:Map过程TWITTERSKYPEFACEBOOK经过map()函数处理后,获得一系列<key2,value2>形式的输出。Map过程利用map()函数来处理数据。map()函数中具体的数据处理方法由用户自己定义。map()函数接收<key1,value1>形式的数据输入。1234YOUTUBE第三步:Shuffle过程
Shuffle过程map()函数的输出并不会直接交给Reduce任务,而是需要经过分区、排序、合并、溢写、归并等处理,将处理后的数据作为Reduce任务的输入。这一系列处理过程称为Shuffle。第三步:Shuffle过程
Map的Shuffle过程1.Map端的Shuffle过程(1)map()函数的输出并不会立即写入磁盘,MapReduce会为每个Map任务分配一个环形内存缓冲区(bufferinmemory),用于存储map()函数的输出。(2)在将环形内存缓冲区中的数据写入磁盘之前,需要对数据进行分区、排序和合并(可选)操作。第三步:Shuffle过程
Map的Shuffle过程1.Map端的Shuffle过程分区:主要目的是将数据均匀地分配给Reduce任务,以实现MapReduce的负载均衡。排序:MapReduce的默认操作,主要是将Map任务的输出按key进行排序。每个分区中的数据都是有序的。合并:排序结束后,合并操作可根据需求选择是否要执行;合并操作是将具有相同key的<key,value>的value加起来,从而减少溢写的数据量。第三步:Shuffle过程
Map的Shuffle过程1.Map端的Shuffle过程(3)环形内存缓冲区中的数据一旦达到阈值,后台线程便开始把数据溢写到本地磁盘的临时文件(即溢写文件)中。(4)系统需要将所有溢写文件中的数据进行归并,以生成一个大的溢写文件。归并操作就是将相同key的value归并成一个集合,形成新的键值对。(5)文件归并操作完成后生成最终的Map任务输出文件,文件保存在Map任务所在节点的本地磁盘上,Map任务执行结束。第三步:Shuffle过程2.Reduce端的Shuffle过程(1)Map任务结束,Reduce任务启动相同数量的复制线程并行复制Map任务的输出文件。(2)当缓存中的数据达到阈值,即需要溢写到磁盘时,Reduce任务会将复制数据进行归并排序(MergeSort),生成溢写文件。
Reduce的Shuffle过程Reduce过程Reduce任务接收归并排序后的数据流,并对已有序的相同key的键值对调用一次reduce()函数。Reduce任务输入是<key2,list(value2)>形式的中间结果,输出的是<key3,value3>形式的计算结果。Reduce任务输出结果经过输出格式化后再输出到文件系统中,并且每个作业输出文件默认以“part-r-00000”开始,并用后5位数递增的方式命名。123
Reduce过程写入文件MapReduce框架会自动把ReduceTask生成的<key,value>传入OutputFormat的write方法,实现文件的写入操作。本节小结(2)Map过程(5)写入文件(1)分片和格式化数据源(3)Shuffle过程(4)Reduce过程Hadoop大数据项目开发——单词统计分析设计目录content02设计思路01设计过程part-r-00000的内容如下:part-r-00001的内容如下:words1.txt的内容如下:thisisagoodpigthatisagoodbearwords2.txt的内容如下:thisisabadpigthatisabadbearMapReduce案例描述输入文件是words1.txt和words2.txt两个文本文件,文件内容仅有字符串和空格。输出文件为part-r-00000和part-r-00001,文件内容是:文件中出现的单词及单词出现的次数。单词统计?设计思路各个单词之间的频数不具有相关性,可以将不同的单词分发到不同的节点上处理;在统计单词数量任务中,可以将大的数据集切分成小的数据集,且各数据集之间相互独立,方便并行处理;MapReduce单词统计任务的解决思路符合MapReduce的编程思想。设计思路指定输入文件所在的位置将两个文件切分成两个输入分片,然后对输入分片进行格式化,文件按行分解,从而形成以行偏移量为key、行内容为value的键值对。将键值对的value按空格分解成一个个单词,生成<word,1>形式的键值对。输入阶段输入分片及其格式化阶段设计map()函数阶段设计思路设计reduce()函数,将输入的<word,list(value)>形式的数据进行汇总,最后生成以key为单词、value为单词频数的键值对。系统默认的输出格式为“单词+空格+单词频数”的形式,若要输出特定样式的数据,需要对输出结果进行格式化,需要进行指定。指定单词统计程序的输出结果文件位置。设计reduce()函数阶段输出格式化阶段输出阶段设计过程1.输入分片及其格式化:对输入分片进行格式化操作,形成<key1,value1>形式的数据流,key1为偏移量,从0开始,每读取一个字符就增加1;value1为每行文本内容。包括空格、换行符等设计过程map()函数将接收到的<key1,value1>形式的输入数据流,按空格进行拆分,输出结果为<key2,1>形式的数据。key2为字符串形式的单词,value的值为1,表示单词数为1。2.Map过程设计过程将多个Map任务的<key2,value2>形式的输出,处理成<key2,list(value2)>形式的中间结果。3.Shuffle过程设计过程reduce()函数接收<key2,list(value2)>形式的数据流,对相同单词的值集合进行计算,汇总出单词出现的总次数。4.Reduce过程功能实现part-r-00000的内容如下:part-r-00001的内容如下:words1.txt的内容如下:thisisagoodpigthatisagoodbearwords2.txt的内容如下:thisisabadpigthatisabadbearMapReduce输入分片及其格式化MapShuffleReduce单词统计本节小结MapReduce编程规范单词统计设计思路单词统计设计过程Hadoop大数据项目开发——单词统计功能代码-Mapper实现目录content02Reducer阶段代码编写01Mapper阶段代码编写03Drive阶段代码编写pom.xml文件内容<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.9.2</version></dependency>Mapper阶段代码publicclassWordCountMapperextendsMapper<LongWritable,Text,Text,IntWritable>{ @Override protectedvoidmap(LongWritablekey,Textvalue,Contextcontext) throwsIOException,InterruptedException{ Stringline=value.toString();//将Text类型转成字符型 String[]words=line.split("");//切割单词 for(Stringword:words){//遍历words context.write(newText(word),newIntWritable(1)); } }}继承Mapper类WordCountMapper类使用extends关键字继承了Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>类,输入Mapper后会自动补全。重写map方法重写map方法删除此行重写map方法Stringline=value.toString();//将Text类型转成字符型String[]words=line.split("");//切割汉字for(Stringword:words){//遍历words context.write(newText(word),newIntWritable(1));}map()方法编写逻辑代码:Hadoop大数据项目开发——单词统计分析-mapper代码实现目录content02Reducer类的编写01Mapper类的编写03Driver类的编写添加依赖:hadoop-commonhadoop-hdfshadoop-client实战开发:WordCountMapperWordCountReducerWordCountMain/开发环境:mavenIDEA/Eclipse上传运行:hadoopjarwordcount-1.0-SNAPSHOT.jar
/input/data.txt/output/wc单词统计功能开发流程引入依赖<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>2.9.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.9.2</version></dependency>本案例中的测试数据位于“G:/wordcount/input”的文件夹中。首先在新建项目中的pom.xml文件中引入依赖,如图所示:Mapper类的编写新建WordCountMapper类,该类继承了org.apache.hadoop.mapreduce.Mapper类。WordCountMapper类是map()函数的执行者,用户需要根据数据处理需求重写map()方法。创建WordCountMapper类Mapper类的编写importjava.io.IOException;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Mapper;publicclassWordCountMapperextendsMapper<LongWritable,Text,Text,IntWritable>{ @Override protectedvoidmap(LongWritablekey,Textvalue,Contextcontext) throwsIOException,InterruptedException{ Stringline=value.toString();//将Text类型转成字符型 String[]words=line.split("");//切割单词 for(Stringword:words){//遍历words context.write(newText(word),newIntWritable(1)); } }}WordCountMapper类的代码如图所示:Mapper类的编写上述代码中可知,WordCountMapper类使用extends关键字继承了Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>类,其中:KEYIN:是MapTask读取到key的数据类型,是一行的起始偏移量的数据类型,使用长整型,在MapReduce中使用LongWritable。VALUEIN:是MapTask读取到的数据的value的类型,是一行的内容的数据类型,本案例中一行内容的数据类型为文本型,在MapReduce中使用Text。KEYOUT:是用户的自定义map方法要返回的结果Key-Value中的key的数据类型,在WordCount逻辑中,需要输出的单词是字符型,在MapReduce中使用Text。VALUEOUT:是用户的自定义map方法要返回的结果Key-Value中value的数据类型,在wordcount逻辑中,需要输出的单词数量是整数,在MapReduce中使用IntWritable。在mapreduce中,map产生的数据需要传输给reduce,需要进行序列化和反序列化。而jdk中的原生序列化机制产生的数据量比较冗余,就会导致数据在mapreduce运行过程中传输效率低下。所以,hadoop专门设计了自己的序列化机制,那么,mapreduce中传输的数据类型就必须实现hadoop自己的序列化接口。hadoop为jdk中的常用基本类型Long,String,Integer,Float等数据类型封装了自己的实现了hadoop序列化接口的类型:LongWritable,Text,IntWritable,Floa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1 《学会尊重》(教学设计)部编版道德与法治六年级下册
- 2024年秋九年级历史上册 第2单元 古代欧洲文明 第4课 希腊城邦和亚历山大帝国教学实录 新人教版
- 智能家居产品市场竞争力分析预案
- 5 国家机构有哪些 第三课时(教学设计)-统编版道德与法治六年级上册
- 某烟草公司机关综合大楼室内装饰工程施工组织设计方案
- 9《小水滴的诉说》《快来帮帮我》教学设计-2023-2024学年道德与法治二年级下册统编版
- 1 有余数的除法-第二课时(教学设计)-2023-2024学年二年级下册数学苏教版
- 2024年春八年级生物下册 第七单元 第二章 第三节 基因的显性和隐性教学实录 (新版)新人教版
- 5鲁滨逊漂流记(节选)教学设计-2023-2024学年六年级下册语文统编版
- 2024年秋九年级历史上册 第20课 第一次工业革命教学实录 新人教版
- 金蝶云星空操作手册V3
- 安全生产风险防控“六项机制”做法及经验分享
- 水利工程施工监理规范(SL288-2014)用表填表说明及示例
- 小学古诗词80首(硬笔书法田字格)
- 城市轨道交通供电技术442页完整版教学课件汇总全书电子教案
- 儿歌:妈妈过生日
- 时间单位换算表
- 《计算机网络基础》第1章计算机网络概论
- DTSD342-9N说明书(精编版)
- 沸腾焙烧炉设计相关计算
- 群塔监理实施细则
评论
0/150
提交评论