




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
云计算与大数据技术 人民邮电出版社 王鹏黄焱安俊秀张逸琴编著 目录 第1章云计算与大数据基础第2章云计算与大数据的相关技术第3章虚拟化技术第4章集群系统基础第5章MPI 面向计算第6章Hadoop 分布式大数据系统第7章HPCC 面向数据的高性能计算集群系统第8章Storm 基于拓扑的流数据实时计算系统第9章服务器与数据中心第10章云计算大数据仿真技术 CONTENTS 第6章Hadoop 分布式大数据系统 第6章Hadoop 分布式大数据系统 云计算与大数据技术 第6章Hadoop 分布式大数据系统 6 1Hadoop概述6 2HDFS6 2 1HDFS文件系统的原型GFS6 2 2HDFS文件的基本结构6 2 3HDFS的存储过程6 3MapReduce编程框架6 3 1MapReduce的发展历史6 3 2MapReduce的基本工作过程6 3 3LISP中的MapReduce6 3 4MapReduce的特点6 4实现Map Reduce的C语言实例 6 5建立Hadoop开发环境6 5 1相关准备工作6 5 2JDK的安装配置6 5 3下载 解压Hadoop 配置Hadoop环境变量6 5 4修改Hadoop配置文件6 5 5将配置好的Hadoop文件复制到其他节点6 5 6启动 停止Hadoop6 5 7在Hadoop系统上运行测试程序WordCount Hadoop是由Apache软件基金会研发的一种开源 高可靠 伸缩性强的分布式计算系统 主要用于对大于1TB的海量数据的处理 Hadoop采用Java语言开发 是对Google的MapReduce核心技术的开源实现 目前Hadoop的核心模块包括系统HDFS HadoopDistributedFileSystem Hadoop分布式文件系统 和分布式计算框架MapReduce 这一结构实现了计算和存储的高度耦合 十分有利于面向数据的系统架构 因此已成为大数据技术领域的事实标准 Hadoop设计时有以下的几点假设 服务器失效是正常的 存储和处理的数据是海量的 文件不会被频繁写入和修改 机柜内的数据传输速度大于机柜间的数据传输速度 海量数据的情况下移动计算比移动数据更高效 6 1Hadoop概述 Hadoop是Apache开源组织的分布式计算系统 其分为第一代Hadoop和第二代Hadoop 第一代Hadoop包含0 20 x 0 21 x 0 22 x三个版本 0 20 x最后演化成了1 0 x版本 第二代Hadoop包含0 23 x和2 x两个版本 2 x本版比0 23 x版本增加了NameNodeHA和Wire compatibility两个特性 版本发展如图6 1所示 图6 1Hadoop本版发展路线 6 1Hadoop概述 Hadoop与MPI在数据处理上的差异主要体现在数据存储与数据处理在系统中位置不同 MPI是计算与存储分离 Hadoop是计算向存储迁移 如图6 2所示 图6 2Hadoop与MPI在数据处理上的差异 6 1Hadoop概述 在MPI中数据存储的节点和数据处理的节点往往是不同的 一般在每次计算开始时MPI需要从数据存储节点读取需要处理的数据分配给各个计算节点对数据进行处理 因此MPI中数据存储和数据处理是分离的 对于计算密集型的应用MPI能表现出良好的性能 但对于处理TB级数据的数据密集型应用由于网络数据传输速度很慢 MPI的性能会大大降低 甚至会到不可忍受的地步 所以对于构建在MPI上的并行计算系统网络通讯速度一直是一个重要的性能指标 用 计算换通信 也是MPI并行程序设计中的基本原则 6 1Hadoop概述 在Hadoop中由于有HDFS文件系统的支持 数据是分布式存储在各个节点的 计算时各节点读取存储在自己节点的数据进行处理 从而避免了大量数据在网络上的传递 实现 计算向存储的迁移 6 2HDFS Hadoop系统实现对大数据的自动并行处理 是一种数据并行方法 这种方法实现自动并行处理时需要对数据进行划分 而对数据的划分在Hadoop系统中从数据的存储就开始了 因此文件系统是Hadoop系统的重要组成部分 也是Hadoop实现自动并行框架的基础 Hadoop的文件系统称为HDFS HadoopDistributedFileSystem 6 2 1HDFS文件系统的原型GFS Hadoop中的HDFS原型来自Google文件系统 GoogleFileSystem GFS 为了满足Google迅速增长的数据处理要求 Google设计并实现了GFS Google文件系统是一个可扩展的分布式文件系统 用于对大量数据进行访问的大型 分布式应用 它运行于廉价的普通硬件上 但可以提供容错功能 它可以给大量的用户提供总体性能较高的服务 也可以提供容错功能 我们认为GFS是一种面向不可信服务器节点而设计的文件系统 谷歌 三宝 是 Google文件系统 BigTable大表 MapReduce算法 有了自己的文件系统 谷歌就可以有效地组织庞大的数据 服务器和存储 并用它们工作 作为谷歌 三宝 的其中之一 GFS的技术优势不言而喻 6 2 1HDFS文件系统的原型GFS GFS为分布式结构 它是一个高度容错网络文件系统 主要由一个Master 主 和众多chunkserver 大块设备 构成的 体系结构如图6 3所示 图6 3GFS的体系结构 6 2 1HDFS文件系统的原型GFS 下面简单描述一下GFS的工作过程 1 客户端使用固定大小的块将应用程序指定的文件名和字节偏移转换成文件的一个块索引 向Master发送包含文件名和块索引的请求 2 Master收到客户端发来的请求 Master向块服务器发出指示 同时时刻监控众多chunkserver的状态 chunkserver缓存Master从客户端收到的文件名和块索引等信息 6 2 1HDFS文件系统的原型GFS 3 Master通过和chunkserver的交互 向客户端发送chunk handle和副本位置 其中文件被分成若干个块 而每个块都是由一个不变的 全局惟一的64位的chunk handle标识 Handle是由Master在块创建时分配的 而出于安全性考虑 每一个文件块都要被复制到多个chunkserver上 一般默认3个副本 4 客户端向其中的一个副本发出请求 请求指定了chunkhandle chunkserver以chunkhandle标识chunk 和块内的一个字节区间 5 客户端从chunkserver获得块数据 任务完成 6 2 1HDFS文件系统的原型GFS 通常Client可以在一个请求中询问多个chunk的地址 而Master也可以很快回应这些请求 GFS是可以被多个用户同时访问的 一般情况下 Application和chunkserver是可以在同一台机子上的 主要的数据流量是通过Application和chunkserver之间 数据访问的本地性极大地减少了Application与Master之间的交互访问 减少了Master的负荷量 提高了文件系统的性能 6 2 1HDFS文件系统的原型GFS 客户端从来不会从Master读和写文件数据 客户端只是询问Master它应该和哪个chunkserver联系 Client在一段限定的时间内将这些信息缓存 在后续的操作中客户端直接和chunkserver交互 由于Master对于读和写的操作极少 所以极大地减小了Master的工作负荷 真正提高了Master的利用性能 Master保存着三类元数据 metadata 文件名和块的名字空间 从文件到块的映射 副本位置 所有的metadata都放在内存中 操作日志的引入可以更简单 更可靠地更新Master的信息 6 2 1HDFS文件系统的原型GFS 为GFS的控制和神经系统 副本为Master的备份 Chunk主要用来和用户交换数据 网络中的主机瘫痪 不会对整个系统造成大的影响 替换上去的主机会自动重建数据 即使Master瘫痪 也会有Shadow作为替补 并且Shadow在一定时候也会充当Master来提供控制和数据交换 Google每天有大量的硬盘损坏 但是由于有GFS 这些硬盘的损坏是允许的 有人形象地比喻 分布式的文件系统被分块为很多细胞单元 一旦细胞损坏 神经系统 Master 会迅速发现并有相应的冗余措施来使系统正常运行 这些细胞可以看作很多GFS主机 这一工作方式就是人类大脑的工作方式 6 2 1HDFS文件系统的原型GFS 当然 作为Google的技术基石 GFS可以给大量的用户提供总体性能较高的服务 具有以下优势 1 Google采用的存储方法是大量 分散的普通廉价服务器的存储方式 极大降低了成本 2 对大文件数据快速存取 这个毫无疑问是可以达到的 3 容易扩展 它是成本很低的普通电脑 支持动态插入节点 4 容错能力强 它的数据同时会在多个chunkserver上进行备份 具有相当强的容错性 5 高效访问 它是通过Bigtable来实现的 它是GoogleFileSystem上层的结构 GFS在实现分布式文件系统的做法上面很多都是简单的 但是确实非常高效 6 GFS相对于HDFS稳定性是无庸置疑的 并在Google系统中得到了采用且稳定的运行 6 2 2HDFS文件的基本结构 HDFS是一种典型的主从式的分布式文件系统 该文件系统完全是仿照Google的GFS文件系统而设计的 HDFS的架构如图6 4所示 图6 4HDFS的架构 6 2 2HDFS文件的基本结构 HDFS由一个名叫Namenode的主节点和多个名叫Datanode的子节点组成 Namenode存储着文件系统的元数据 这些元数据包括文件系统的名字空间等 向用户映射文件系统 并负责管理文件的存储等服务 但实际的数据并不存放在Namenode Namenode的作用就像是文件系统的总指挥 并向访问文件系统的客户机提供文件系统的映射 这种做法并不是Google或Hadoop的创新 这和传统并行计算系统中的单一系统映像 SingleSystemImage 的做法相同 HDFS中的Datanode用于实际对数据的存放 对Datanode上数据的访问并不通过Namemode 而是与用户直接建立数据通信 Hadoop启动后我们能看到Namenode和Datanode这两个进程 6 2 2HDFS文件的基本结构 HDFS的工作过程是这样的 用户请求创建文件的指令由Namenode进行接收 Namenode将存储数据的Datanode的IP返回给用户 并通知其他接收副本的Datanode 由用户直接与Datanode进行数据传送 Namenode同时存储相关的元数据 整个文件系统采用标准TCP IP协议通信 实际是架设在Linux文件系统上的一个上层文件系统 HDFS上的一个典型文件大小一般都在G字节至T字节 6 2 2HDFS文件的基本结构 主从式是云计算系统的一种典型架构方法 系统通过主节点屏蔽底层的复杂结构 并向用户提供方便的文件目录映射 有些改进的主从式架构可能会采用分层的主从式方法 以减轻主节点的负荷 6 2 3HDFS的存储过程 HDFS在对一个文件进行存储时有两个重要的策略 一个是副本策略 一个是分块策略 副本策略保证了文件存储的高可靠性 分块策略保证数据并发读写的效率并且是MapReduce实现并行数据处理的基础 6 2 3HDFS的存储过程 HDFS的分块策略 通常HDFS在存储一个文件会将文件切为64MB大小的块来进行存储 数据块会被分别存储在不同的Datanode节点上 这一过程其实就是一种数据任务的切分过程 在后面对数据进行MapReduce操作时十分重要 同时数据被分块存储后在数据读写时能实现对数据的并发读写 提高数据读写效率 HDFS采用64MB这样较大的文件分块策略有以下3个优点 1 降低客户端与主服务器的交互代价 2 降低网络负载 3 减少主服务器中元数据的大小 6 2 3HDFS的存储过程 HDFS的副本策略 HDFS对数据块典型的副本策略为3个副本 第一个副本存放在本地节点 第二个副本存放在同一个机架的另一个节点 第三个本副本存放在不同机架上的另一个节点 这样的副本策略保证了在HDFS文件系统中存储的文件具有很高的可靠性 6 2 3HDFS的存储过程 一个文件写入HDFS的基本过程可以描述如下 写入操作首先由Namenode为该文件创建一个新的记录 该记录为文件分配存储节点包括文件的分块存储信息 在写入时系统会对文件进行分块 文件写入的客户端获得存储位置的信息后直接与指定的Datanode进行数据通信 将文件块按Namenode分配的位置写入指定的Datanode 数据块在写入时不再通过Namenode 因此Namenode不会成为数据通信的瓶颈 6 3MapReduce编程框架 在云计算和大数据技术领域被广泛提到并被成功应用的一项技术就是MapReduce MapReduce是Google系统和Hadoop系统中的一项核心技术 6 3 1MapReduce的发展历史MapReduce出现的历史要追述到1956年 图灵奖获得者著名的人工智能专家McCarthy首次提出了LISP语言的构想 而在LISP语言中就包含了现在我们所采用的MapReduce功能 LISP语言是一种用于人工智能领域的语言 在人工智能领域有很多的应用 LISP在1956年设计时主要是希望能有效地进行 符号运算 LISP是一种表处理语言 其逻辑简单但结构不同于其他的高级语言 1960年 McCarthy更是极有预见性地提出 今后计算机将会作为公共设施提供给公众 这一观点已与现在人们对云计算的定义极为相近了 所以我们把McCarthy称为 云计算之父 MapReduce在McCarthy提出时并没有考虑到其在分布式系统和大数据上会有如此大的应用前景 只是作为一种函数操作来定义的 6 3 1MapReduce的发展历史 2004年Google公司的Dean发表文章将MapReduce这一编程模型在分布式系统中的应用进行了介绍 从此MapRuduce分布式编程模型进入了人们的视野 可以认为分布式MapReduce是由Google公司首先提出的 Hadoop跟进了Google的这一思想 可以认为Hadoop是一个开源版本的Google系统 正是由于Hadoop的跟进才使普通用户得以开发自己的基于MapReduce框架的云计算应用系统 6 3 2MapReduce的基本工作过程 MapReduce是一种处理大数据集的编程模式 它借鉴了最早出现在LISP语言和其他函数语言中的map和reduce操作 MapReduce的基本过程为 用户通过map函数处理key value对 从而产生一系列不同的key value对 reduce函数将key值相同的key value对进行合并 现实中的很多处理任务都可以利用这一模型进行描述 通过MapReduce框架能实现基于数据切分的自动并行计算 大大简化了分布式编程的难度 并为在相对廉价的商品化服务器集群系统上实现大规模的数据处理提供了可能 6 3 2MapReduce的基本工作过程 MapReduce的过程其实非常简单 我们用一个实际的例子来说明MapReduce的编程模型 假设我们需要对一个文件example txt中出现的单词次数进行统计 这就是著名的wordcount例子 在这个例子中MapReduce的编程模型可以这样来描述 用户需要处理的文件example txt已被分为多个数据片存储在集群系统中不同的节点上了 用户先使用一个Map函数 Map example txt 文件内容 在这个Map函数中key值为example txt key通常是指一个具有唯一值的标识 value值就是example txt文件中的内容 Map操作程序通常会被分布到存有文件example txt数据片段的节点上发起 这个Map操作将产生一组中间key value对 word count 6 3 2MapReduce的基本工作过程 这里的word代表出现在文件example txt片段中的任一个单词 每个Map操作所产生的key value对只代表example txt一部分内容的统计值 Reduce函数将接收集群中不同节点Map函数生成的中间key value对 并将Key相同的key value对进行合并 在这个例子中Reduce函数将对所有key值相同的value值进行求和合并 最后输出的key value对就是 word count 其中count就是这个单词在文件example txt中出现的总的次数 6 3 2MapReduce的基本工作过程 下面我们通过一个简单例子来讲解MapReduce的基本原理 1 任务的描述来自江苏 浙江 山东三个省的9所高校联合举行了一场编程大赛 每个省有3所高校参加 每所高校各派5名队员参赛 各所高校的比赛平均成绩如表6 1所示 表6 1原始比赛成绩 6 3 2MapReduce的基本工作过程 我们可以用如表6 2所示的形式来表示成绩 这样每所高校就具备了所属省份和平均分数这两个属性 即 表6 2增加属性信息后的比赛成绩 6 3 2MapReduce的基本工作过程 统计各个省份高校的平均分数时 高校的名称并不是很重要 我们略去高校名称 如表6 3所示 表6 3略去高校名称后的比赛成绩 接下来对各个省份的高校的成绩进行汇总 如表6 4所示 表6 4各省比赛成绩汇总 6 3 2MapReduce的基本工作过程 计算求得各省高校的平均值如表6 5所示 表6 5各省平均成绩 以上为计算各省平均成绩的主要步骤 我们可以用MapReduce来实现 其详细步骤如下 2 任务的MapReduce实现MapReduce包含Map Shuffle和Reduce三个步骤 其中Shuffle由Hadoop自动完成 Hadoop的使用者可以无需了解并行程序的底层实现 只需关注Map和Reduce的实现 6 3 2MapReduce的基本工作过程 1 MapInput 在Map部分 我们需要输入数据 这里Key是高校的名称 Value是属性值 即所属省份和平均分数 如表6 6所示 表6 6MapInput数据 6 3 2MapReduce的基本工作过程 2 MapOutput 对所属省份平均分数进行重分组 去除高校名称 将所属省份变为Key 平均分数变为Value 如表6 7所示 表6 7MapOutput数据 6 3 2MapReduce的基本工作过程 3 ShuffleOutput Shuffle由Hadoop自动完成 其任务是实现Map 对Key进行分组 用户可以获得Value的列表 即List 如表6 8所示 表6 8ShuffleOutput数据 4 ReduceInput 表6 8中的内容将作为Reduce任务的输入数据 即从Shuffle任务中获得的 Key List 6 3 2MapReduce的基本工作过程 5 ReduceOutput Reduce任务的功能是完成用户的计算逻辑 这里的任务是计算每个省份的高校学生的比赛平均成绩 获得的最终结果如表6 9所示 表6 9ReduceOutput数据 6 3 3LISP中的MapReduce 为了进一步理解MapReduce 我们简单介绍最早使用Map和Reduce的LISP语言中的Map和Reduce操作 下面的LISP语句定义的这个Map操作是将向量 12345 和向量 109876 进行相乘的操作 输出也为向量 1018242830 map vector 12345 109876 1018242830 这个Map操作对应于向量到向量的映射 两个向量按乘积关系进行映射 6 3 3LISP中的MapReduce 下面的LISP语句定义的这个Reduce操作是将向量 12345678910 中的元素进行求和的Reduce操作 输出结果为55 reduce 12345678910 55这个Reduce操作对应于向量的约简 它将向量按求和的关系约简为一个值 可以看出 在LISP语言中Map和Reduce只是作为一种操作定义 并没有体现出任何的分布式计算的特征 6 3 4MapReduce的特点 MapReduce主要具有以下几个特点 1 需要在集群条件下使用 MapReduce的主要作用是实现对大数据的分布式处理 其设计时的基本要求就是在大规模集群条件下的 虽然一些系统可以在单机下运行 但这种条件下只具有仿真运行的意义 Google作为分布式MapReduce提出者 它本身就是世界上最大的集群系统 所以MapReduce天然需要在集群系统下运行才能有效 6 3 4MapReduce的特点 2 需要有相应的分布式文件系统的支持 这里要注意的是单独的MapReduce模式并不具有自动的并行性能 就像它在LISP语言中的表现一样 它只有与相应的分布式文件系统相结合才能完美地体现MapReduce这种编程框架的优势 如Google系统对应的分布式文件系统为GFS Hadoop系统对应的分布式文件系统为HDFS MapReduce能实现计算的自动并行化很大程度上是由于分布式文件系统在对文件存储时就实现了对大数据文件的切分 这种并行方法也叫数据并行方法 数据并行方法避免了对计算任务本身的人工切分 降低了编程的难度 而像MPI往往需要人工对计算任务进行切分 因此分布式编程难度较大 6 3 4MapReduce的特点 3 可以在商品化集群条件下运行 不需要特别的硬件支持 和高性能计算不同 基于MapReduce的系统往往不需要特别的硬件支持 按Google的报道 他们的实验系统中的节点就是基于典型的双核X86的系统 配置2 4GB的内存 网络为百兆网和千兆网构成 存储设备的便宜的IDE硬盘 6 3 4MapReduce的特点 4 假设节点的失效为正常情况 传统的服务器通常被认为是稳定的 但在服务器数量巨大或采用廉价服务的条件下 服务器的实效将变得常见 所以通常基于MapReduce的分布式计算系统采用了存储备份 计算备份和计算迁移等策略来应对 从而实现在单节点不稳定的情况下保持系统整个的稳定性 6 3 4MapReduce的特点 5 适合对大数据进行处理 由于基于MapReduce的系统并行化是通过数据切分实现的数据并行 同时计算程序启动时需要向各节点拷贝计算程序 过小的文件在这种模式下工作反而会效率低下 Google的实验也表明一个由150秒时间完成的计算任务 程序启动阶段的时间就花了60秒 可以想象 如果计算任务数据过小 这样的花费是不值得的 同时对过小的数据进行切分也无必要 所以MapReduce更适合进行大数据的处理 6 3 4MapReduce的特点 6 计算向存储迁移 传统的高性能计算数据集中存储 计算时数据向计算节点拷贝 而基于MapReduce的分布式系统在数据存储时就实现了分布式存储 一个较大的文件会被切分成大量较小的文件存储于不同的节点 系统调度机制在启动计算时会将计算程序尽可能分发给需要处理的数据所在的节点 计算程序的大小通常会比数据文件小的多 所以迁移计算的网络代价要比迁移数据小的多 6 3 4MapReduce的特点 7 MapReduce的计算效率会受最慢的Map任务影响 由于Reduce操作的完成需要等待所有Map任务的完成 所以如果Map任务中有一个任务出现了延迟 则整个MapReduce操作将受最慢的Map任务的影响 6 4实现Map Reduce的C语言实例 Map Reduce操作代表了一大类的数据处理操作方式 为了让大家对Map Reduce的工作过程有一个直观的了解 下面的程序采用C语言实现了一个简单经典的Map Reduce计算 计算从控制台输入的字符串中单词的计数 这一计算过程都是在同一个节点上完成的 并未实现计算的并行化 历史上的Lisp语言也是运行在单机的上的程序 这个例子的主要目的是让大家理解这一操作的过程 程序中的my map 和my reduce 函数分别实现了对字符串的Map和Reduce操作 6 4实现Map Reduce的C语言实例 程序6 1输入 thisismapreducehellomaphelloreduce 6 4实现Map Reduce的C语言实例 输出 Thisismapresults Thisisreduceresults 此运行实例中我们从控制台输入字符串 thisismapreducehellomaphelloreduce 程序通过Map和Reduce过程对字符串的的单词出现的频率进行统计 并输出了结果 这是一个典型的Map Reduce过程 6 5建立Hadoop开发环境 本节使用三个Linux虚拟机来构建Hadoop集群环境 其中一个虚拟机作为NameNode Master节点 另外两个虚拟机作为DataNode Slave节点 如图6 5所示 在3个节点下3个虚拟机的机器名和IP地址信息如下 虚拟机1 主机名为vm1 IP为192 168 122 101 作为NameNode使用 虚拟机2 主机名为vm2 IP为192 168 122 102 作为DataNode使用 虚拟机3 主机名为vm3 IP为192 168 122 103 作为DataNode使用 图6 5Hadoop集群配置 6 5 1相关准备工作 1 准备虚拟机的操作系统 首先准备3个安装了操作系统的虚拟机 本节使用的虚拟机上安装的操作系统均为CentOS6 4 64位 先安装一机虚拟机 然后Clone两个出另外两个虚拟机 CentOS的官方网站 www centos org 6 5 1相关准备工作 2 下载Hadoop系统 本节我们使用Hadoop的稳定版本0 21 0 CentOS的官方网站 www hadoop apache org 3 下载JDK JDK的版本为1 7 0 45 64位 下载地址 6 5 1相关准备工作 4 新建用户 hadoop 在每个节点上使用useradd指令新建一个用户hadoop 并设置密码 useraddhadooppasswdhadoop 5 永久关闭每个节点的防火墙 root权限 在每个节点上执行以下指令 这样将永久性的关闭每个阶段的防火墙chkconfigiptablesoff 永久性生效 重启后不会复原 6 5 1相关准备工作 6 配置ssh实现Hadoop结点间用户的无密码访问Hadoop需要在各个结点间进行信息传递 因此需要实现结点间的无密码访问 这与采用MPI进行并行程序设计相同 否则系统会不停地向你请求密码验证 这里的配置在各个节点的hadoop用户下进行 配置过程与MPI部分的配置过程相关 这里不再详述 配置完成后使用ssh指令可以在三个虚拟机之间实现无密码访问 6 5 2JDK的安装配置 Hadoop是采用Java编写的 每个虚拟机上均需要安装Java的JDK JDK的安装配置需在root用户下进行 具体步骤如下 1 在Sun官方网站下载JDK软件包jdk 7u45 linux x64 tar gz 2 新建目录 usr java 将下载的JDK软件包进行进行解压 mkdir usr javatar zxvfjdk 7u45 linux x64 tar gz 6 5 2JDK的安装配置 3 配置Java环境变量 setjavaenvironmentexportJAVA HOME usr java jdk1 7 0 45exportJRE HOME usr java jdk1 7 0 45 jreexportCLASSPATH JAVA HOME lib JRE HOME lib CLASSPATHexportPATH JAVA HOME bin JRE HOME bin PATH 6 5 2JDK的安装配置 4 保存了Java环境变量之后 在命令行中键入如下命令 使环境变量生效 source etc profile 使环境变量设置生效通过which命令测试JDK的安装是否成功 whichjava系统显示如下信息 usr java jdk1 6 0 12 bin java此时JDK配置成功 接下来可进行Hadoop的安装配置 6 5 2JDK的安装配置 程序6 2publicclasstest publicstaticvoidmain Stringargs System out println Thisisahadooptestprogram JDKsuccessed 6 5 2JDK的安装配置 编译测试程序 javactest java运行测试程序 javatest如果输出为 Thisisahadooptestprogram JDKsuccessed 表明JDK已成功安装 并能成功编译执行Java程序 6 5 3下载 解压Hadoop 配置Hadoop环境变量 Hadoop集群中每个节点的安装 配置是相同的 我们可以现在一个虚拟机上进行安装 配置 然后将其复制到其他节点的相应目录 将hadoop 0 21 0 tar gz放置在vm1的 home hadoop目录中 用hadoop用户对其进行解压缩 cd home hadooptar zxvfhadoop 0 21 0 tar gz 6 5 3下载 解压Hadoop 配置Hadoop环境变量 把Hadoop的安装路径添加到 etc profile 中 在文件的末尾添下面的代码 每个节点均需要进行此步配置 hadoopenvironmentexportHADOOP HOME usr java jdk1 7 0 45exportPATH PATH HADOOP HOME bin保存了Hadoop环境变量之后 在命令行中键入如下命令 使环境变量生效 source etc profile 使环境变量设置生效 6 5 4修改Hadoop配置文件 Hadoop的配置文件存于conf文件夹中 我们需要对该文件夹中以下文件进行修改 hadoop env sh core site xml mapred site xml masters slaves 1 修改hadoop env sh文件 Hadoop的Java环境变量在hadoop env sh中进行设置 使用vim打开hadoop env sh文件 找到Java环境变量的设置位置 将其改为JDK的安装地址 保存并退出 exportJAVA HOME usr java jdk1 7 0 45 6 5 4修改Hadoop配置文件 2 修改core site xml文件 core site xml用于设置Hadoop集群的HDFS的地址和端口号 以及用于保存HDFS信息的tmp文件夹 对HDFS进行重新格式化的时候先行删除tmp中的文件 新建tmp文件夹 mkdir home hadoop hadoop 0 21 0 tmp使用vim打开core site xml文件 在之间添加以下代码 6 5 4修改Hadoop配置文件 hadoop tmp dir home hadoop hadoop 0 21 0 tmpfs defaultFShdfs 192 168 122 101 9000其中的IP地址需配置为集群的NameNode Master 节点的IP 这里 192 168 122 101 6 5 4修改Hadoop配置文件 3 修改mapred site xml文件 在mapred site xml文件的在之间添加以下代码 配置JobTracker的主机名和端口 mapreduce jobtracker addresshttp 192 168 122 101 9001NameNode 6 5 4修改Hadoop配置文件 4 修改masters文件 使用vim打开masters文件 写入NameNode Master 节点的主机名 这里为vm1 保存并退出 vm1 5 修改slaves文件 使用vim打开slaves文件 写入DataNode Slaver 节点的主机名 这里为vm1 vm2 保存并退出 Vm2vm3 6 5 5将配置好的Hadoop文件复制到其他节点 到了这里 我们已经安装 配置了一个Hadoop节点 Hadoop集群中每个节点的安装 配置是相同的 这里需要将vm1上的Hadoop文件夹整体复制到其他的节点 执行以下指令 scp r home hadoop hadoop 0 21 0hadoop vm2 home hadoop scp r home hadoop hadoop 0 21 0hadoop vm3 home hadoop 格式化NameNode在正式启动Hadoop之前 需要执行以下指令 对Hadoop的分布式文件进行初始化 cd home hadoop hadoop 0 21 0 bin hadoopnamenode format顺利执行此格式化指令后 会显示如下信息 14 01 0421 21 20INFOcommon Storage Storagedirectory home hadoop hadoop 0 21 0 tmp dfs namehasbeensucces
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高墩施工防坠器速差技术专题
- 生态混凝土桥坡绿化工艺
- 2024年“巴渝工匠”杯竞赛负荷控制理论考试题库大全-上(单选题)
- 高三年级下册二模考试语文试题(含答案)
- 防汛安全培训
- 中班走廊与楼梯健康安全
- 学校中层领导工作总结
- 实验小学教学常规培训
- 招聘面试培训
- 正畸口腔溃疡护理常规
- 人教版(2024)七年级下册英语期末模拟测试卷(含答案)
- 2025年中考语文押题作文范文10篇
- 打造重点专科协议书
- 【小学】新苏教版小学数学四年级下册暑假每日一练(02):计算题-应用题(含答案)
- 2025猪蓝耳病防控及净化指南(第三版)
- 细菌性结膜炎
- 红木文化知到智慧树期末考试答案题库2025年广西大学
- TCUWA20059-2022城镇供水管网模型构建与应用技术规程
- 2025-2030进口肉类市场发展分析及行业投资战略研究报告
- 智慧医院建设项目实施方案
- 项目协作与沟通过程中的冲突管理试题及答案
评论
0/150
提交评论