您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > 实验一-Hadoop的安装与使用
电子信息学院实验报告书课程名:《云计算技术》题目:实验一、Hadoop的安装与使用实验类别【设计】班级:bx1002学号:31姓名:杨汉标评语:实验内容:优秀[]良好[]合格[]一般[]不合格[]报告格式:优秀[]良好[]合格[]一般[]不合格[]实验态度:优秀[]良好[]合格[]一般[]不合格[]实验结果:优秀[]良好[]合格[]一般[]不合格[]课题纪律:优秀[]良好[]合格[]一般[]不合格[]成绩:指导教师:杨志和批阅时间:年月日【实验环境】计算机、Java、Hadoop【实验目的】1.理解云计算的基本理论知识;2.理解Hadoop的基本概念3.掌握如何在Linux上安装Hadoop;【实验要求】1.下载Hadoop和JDK;2.安装SSH;3.对Linux进行相应配置。【基础知识】Hadoop是GoogleMapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以不考虑内存泄露一样,MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。程序员的开发步骤:1.定义Mapper,处理输入的Key-Value对,2.定义Reducer,可选,对中间结果进行规约,输出最终结果3.定义InputFormat和OutputFormat,可选,InputFormat将每行为Java类供Mapper函数使用,不定义时默认为String。4.定义main函数,在里面定义一个Job并运行它Hadoop的工作过程一个集群中只有一个NameNode,可以有多个DataNodes;namenode承担数据的位置存储信息,并将存储位置信息告诉client端;得到位置信息后,client端开始写数据;写数据的时候是将数据分块,并存储为多份(一般为3份),放在不同的datanode节点;client先将数据写到第一个节点,在第一个节点接收数据的同时,又将它所接收的数据推送到第二个,第二个推送到第三个节点,如果有多个节点,依次类推;从图中可以知道NameNode不参与数据块的IO的。NameNode是一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上。对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。实际的I/O事务并没有经过NameNode,只有表示DataNode和块的文件映射的元数据经过NameNode。当外部客户机发送请求要求创建文件时,NameNode会以块标识和该块的第一个副本的DataNodeIP地址作为响应。这个NameNode还会通知其他将要接收该块的副本的DataNode。NameNode在一个称为FsImage的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是EditLog)将存储在NameNode的本地文件系统上。FsImage和EditLog文件也需要复制副本,以防文件损坏或NameNode系统丢失。NameNode也是一个通常在HDFS实例中的单独机器上运行的软件。Hadoop集群包含一个NameNode和大量DataNode。DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。DataNode响应来自HDFS客户机的读写请求。它们还响应创建、删除和复制来自NameNode的块的命令。NameNode依赖来自每个DataNode的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode可以根据这个报告验证块映射和其他文件系统元数据。如果DataNode不能发送心跳消息,NameNode将采取修复措施,重新复制在该节点上丢失的块。文件操作:可见,HDFS并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到HDFS上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的HDFS块大小,创建文件的请求将发送给NameNode。NameNode将以DataNode标识和目标块响应客户机。同时也通知将要保存文件块副本的DataNode。当客户机开始将临时文件发送给第一个DataNode时,将立即通过管道方式将块内容转发给副本DataNode。客户机也负责创建保存在相同HDFS名称空间中的校验和(checksum)文件。在最后的文件块发送之后,NameNode将文件创建提交到它的持久化元数据存储(在EditLog和FsImage文件)。【实验步骤】安装JDK(1)下载安装JDK:确保计算机联网之后命令行输入下面命令安装JDKsudoapt-getinstallsun-java6-jdk(2)配置计算机Java环境:打开/etc/profile,在文件最后输入下面内容exportJAVA_HOME=(Java安装目录)exportCLASSPATH=.:$JAVA_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/:PATH(3)验证Java是否安装成功输入java-version,输出Java版本信息即为安装成功。安装配置SSH(1)下载安装SSH:同样在命令行输入下面命令安装SSHsudoapt-getinstallssh(2)配置无密码登录本机:在命令行输入下面两条命令$ssh-keygen-trsa-P''-f~/.ssh/id_rsa直接回车,完成后会在~/.ssh/生成两个文件:id_rsa和id_rsa.pub;这两个成对出现,类似钥匙和锁。再把id_rsa.pub追加到授权key里面(当前并没有authorized_keys文件)$cat~/.ssh/id_rsa.pub~/.ssh/authorized_keys验证SSH是否安装成功输入sshlocalhost。如果显示本机登录成功就表明安装成功。关闭防火墙$sudoufwdisable注意:这步非常重要,如果不关闭,会出现找不到datanode的问题安装运行Hadoop(以0.20.2版本为例)(1)下载Hadoop:在页面上下载Hadoop。(2)安装配置Hadoop单节点配置:安装单节点的Hadoop无需配置,在这种方式下,Hadoop被认作为一个单独的Java进程。伪分布配置:伪分布的Hadoop是只有一个节点的集群。在这个集群中,计算机既是master也是slave,即使namenode也是datanode,既是jobtracker也是tasktracker。配置的过程如下:1、进入conf文件夹修改下面的文件。Hadoop-env.sh中加入下面内容:exportJAVA_HOME=(JAVA安装目录)core-site.xml文件内容修改为下面内容:configuration!--globalproperties--propertynamehadoop.tmp.dir/namevalue/home/zhongping/tmp/value/property!--filesystemproperties--propertynamefs.default.name/namevaluehdfs://localhost:9000/value/property/configurationhdfs-site.xml文件内容修改为下面内容:(replication默认为3,如果不修改,datanode少于三台就会报错)configurationpropertynamefs.replication/namevalue1/value/property/configurationmapred-site.xml文件内容修改为下面内容:configurationpropertynamemapred.job.tracker/namevaluelocalhost:9001/value/property/configuration2、格式化Hadoop文件系统,在命令行输入命令:bin/hadoopnamenode-format3、启动Hadoop,在命令行输入命令:bin/start-all.sh4、验证Hadoop是否安装成功,在浏览器中输入下面网址,如果正常打开说明安装成功。(mapreduce的web页面)(hdfs的web页面)运行实例(1)先在本地磁盘建立两个输入文件file01和file02$echoHelloWorldByeWorldfile01$echoHelloHadoopGoodbyeHadoopfile02(2)在hdfs中建立一个input目录:$hadoopfs-mkdirinput(3)将file01和file02拷贝到hdfs中:$hadoopfs-copyFromLocal/home/zhongping/file0*input(4)执行wordcount:$hadoopjarhadoop-0.20.2-examples.jarwordcountinputoutput(5)完成之后,查看结果$hadoopfs-catoutput/part-r-00000环境变量的配置exportJAVA_HOME=/home/chuanqing/profile/jdk-6u13-linux-i586.zip_FILES/jdk1.6.0_13exportCLASSPATH=.:$JAVA_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/:PATHexportHADOOP_INSTALL=/home/chuanqing/profile/hadoop-0.20.203.0exportPATH=$PATH:$HADOOP_INSTALL/binexportHADOOP_INSTALL=/home/zhoulai/profile/hadoop-0.20.203.0exportPATH=$PATH:$HADOOP_INSTALL/bin[实验体会]通过这次的实验理解云计算的基本理论知识,了解Hadoop的基本概念也掌握如何在Linux上安装Hadoop。
本文标题:实验一-Hadoop的安装与使用
链接地址:https://www.777doc.com/doc-1914358 .html