您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Hadoop现场演示与编程过程
云计算可靠性研究组1/35Hadoop现场演示与编程过程朱军刘锴傅雷扬安徽农业大学云计算可靠性研究组2/35主要内容◆实验平台简介◆Hadoop环境搭建◆MapReduce编程云计算可靠性研究组3/35实验平台简介◆采用XenServer分布式部署Hadoop●浪潮380D●5台虚拟机(CentOS)◆采用VirtualBox分布式部署Hadoop●PC●5台虚拟机(CentOS)云计算可靠性研究组4/35采用XenServer分布式部署Hadoop云计算可靠性研究组5/35采用VirtualBox分布式部署Hadoop云计算可靠性研究组6/35Hadoop环境搭建◆Hadoop的三种部署模式◆Hadoop完全分布式部署◆HDFS节点故障演示云计算可靠性研究组7/35Hadoop的三种部署模式1、单机模式2、伪分布式模式3、完全分布式模式云计算可靠性研究组8/35IP/hosts:210.45.176.46hadoop1.ahau.edu.cn210.45.176.47hadoop2.ahau.edu.cn210.45.176.48hadoop3.ahau.edu.cn210.45.176.49hadoop4.ahau.edu.cn210.45.176.50hadoop5.ahau.edu.cnNamenode/Jobtracker:hadoop1.ahau.edu.cnSecendnamenode:hadoop2.ahau.edu.cndatanode/tasktracker:hadoop2.ahau.edu.cnhadoop3.ahau.edu.cnhadoop4.ahau.edu.cnNewdatanode:hadoop5.ahau.edu.cnHadoop完全分布式部署云计算可靠性研究组9/35完全分布式部署步骤一、安装配置Java环境二、配置SSH免密码登录三、安装配置Hadoop云计算可靠性研究组10/35安装配置JAVA1、安装jdkbin/jdk-6u27-x64.bin2、修改环境变量vim~/.bash_profileJAVA_HOME=/usr/local/jdk1.6.0_27export$JAVA_HOME$PATH=$PATH:$JAVA_HOME/bin云计算可靠性研究组11/35配置SSH免密码登录1、生成密钥ssh-keygen-trsa2、拷贝密钥ssh-copy-id-i~/.ssh/id_rsa.pubroot@remotehost云计算可靠性研究组12/35安装配置Hadoop1、解压Hadoop2、从src复制配置文件示例3、修改hadoop-evn.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves云计算可靠性研究组13/35core-site-xmlpropertynamehadoop.tmp.dir/namevalue/home/grid/hadoop/tmp/value#设定Hadoop临时目录description/description/propertypropertynamefs.default.name/namevaluehdfs://hadoop1.ahau.edu.cn:9100/value#设置文件系统路径/property/configurationpropertynameheartbeat.recheck.interval/name#节点间心跳检测间隔时间,默认10分钟value1000/value/property云计算可靠性研究组14/35hdfs-site-xmlpropertynamedfs.relplication/name##HDFS的副本数,默认为3,如果DataNode的数量小于这个值会有问题value2/value/propertypropertynamedfs.permissions/name##是否对dfs中的文件进行权限控制valuefalse/value/property云计算可靠性研究组15/35mapred-site-xmlpropertynamemapred.job.tracker/namevaluehadoop1.ahau.edu.cn:9200/value##设置MapReduceJob运行的主机和端口/property云计算可靠性研究组16/35masters/slaves配置masters:指定Secondnamenode的主机名slaves:指定datanode/tasktracker的主机名将Hadoop目录同步到所有节点服务器云计算可靠性研究组17/35启动Hadoop1.格式化分布式文件系统bin/hadoopnamenode-format2、关闭所有节点的防火墙及Selinux3、在namenode上执行bin/start-all.sh4、查看进程运行情况$JAVA_HOME/bin/jps云计算可靠性研究组18/35查看Hadoop运行状态HDFS状态:状态:查看文件系统情况:bin/hadoopdfsadmin-report列出文件系统目录:bin/hadoopfs-lshdfs://hadoop1.ahau.edu.cn:9100/云计算可靠性研究组19/35一、增加HDFS节点1、新节点ip/hosts:210.45.176.50hadoop5.ahau.edu.cn2、在新节点上安装Hadoop,配置应与NameNode一致3、若永久填加该节点,可修改masters和slaves文件4、临时填加节点,执行命令:bin/hadoop-daemon.shdatanodestart5、查看,已变为4个live节点二、新增节点故障演示1、人为Kill掉新增节点的datanode进程2、经过心跳检测时间后,查看页面,新增节点消失HDFS节点故障演示云计算可靠性研究组20/35MapReduce编程◆MapReduce编程过程◆编程实例:矩阵相乘◆程序调试和发布云计算可靠性研究组21/35MapReduce编程过程◆就是继承类与实现接口的过程。这些类与接口来自于Hadoop的Map-Reduce框架,由框架控制其执行流程。◆Java多态性:对象的引用型变量。编程过程的三个阶段:◆输入阶段◆计算阶段◆输出阶段云计算可靠性研究组22/35MapReduce编程过程云计算可靠性研究组23/35与输入相关的几个抽象类◆InputFormat文件分割,读取。FileInputFormat从文件中读取数据。◆InputSplits定义了输入到单个Map任务的输入数据。◆RecordReader定义了如何从数据上转化为一个(key,value)对,从而输出到Mapper类中。云计算可靠性研究组24/35与计算相关的几个抽象类◆Mappermap()方法处理输入K1,V1,产生输出K2,V2。◆Reducerreduce()方法处理Map的输入K2,list(V2),产生输出K3,V3。◆Combiner实现Reducer接口,对map()输出进行规约。◆Partitioner分发map()输出给不同的Reduce任务。云计算可靠性研究组25/35与输出相关的几个抽象类◆OutputFormat数据输出。FileOutputFormat输出到文件。◆RecordWriter输出一个记录到文件中。云计算可靠性研究组26/35其它重要类与接口◆Configuration类读取配置文件。如:core-default.xml、core-site.xml等。◆Job类配置、提交Job,控制其执行,查询其状态。◆Writable接口序列化输入输出。任何Key,Value都需要实现它。◆WritableComparable接口可比较的序列化输入输出。任何Key都需要实现它。云计算可靠性研究组27/35编程实例:矩阵相乘编程环境准备:◆安装配置Java环境◆安装配置Hadoop◆安装Eclipse(Version:3.5.2)◆安装插件hadoop-0.20.2-eclipse-plugin.jar云计算可靠性研究组28/35实例:矩阵相乘将问题分解成MapReduce作业232221131211aaaaaa323122211211bbbbbbX(1,1),(a11,b11)、(1,1),(a12,b21)、(1,1),(a13,b31)KeyValuemap:计算各个Value值(求积)reduce:计算Key相同的所有Value的和(求和)云计算可靠性研究组29/35实例:矩阵相乘输入阶段文件MatrixInputFormatMatrixMatrixInputSplitMatrixInputFormat重要方法:publicintreadFile(JobContextcontext);publicListInputSplitgetSplits(JobContextcontext);publicRecordReaderIntPair,IntPaircreateRecordReader(InputSplitsplit,TaskAttemptContextcontext)云计算可靠性研究组30/35实例:矩阵相乘计算阶段MatrixInputSplitMatrixRecordReaderKey,ValueIntPairMatrixMapperFirstPartitionerMatrixReducer框架调用关系:MatrixRecordReader.getCurrentKey(),…extendsRecordReaderContext.getCurrentKey(),…extendsMapContextMatrixMulti.MatrixMapper.map()extendsMapperMapper.run()TaskTracker(MapTask,ReduceTask)JobTrackerMatrixRecordReader重要方法:publicbooleannextKeyValue();publicIntPairgetCurrentKey();publicIntPairgetCurrentValue();云计算可靠性研究组31/35实例:矩阵相乘输出阶段MatrixReducerMultipleOutputFormatLineRecordWriterMultipleOutputFormat方法及调用关系:DataOutputStream.write(intb),…LineRecordWriter.write(Kkey,Vvalue)MultiRecordWriter.write(Kkey,Vvalue);MultipleOutputFormatextendsFileOutputFormat.getRecordWriter(TaskAttemptContextjob);云计算可靠性研究组32/35程序调试和发布程序调试◆编写单元测试(Mockito)。◆将调试语句记录到错误日志中。(StatusReporter)◆日志文件:分门别类存放在hadoop-version/logs目录下面,hadoop-username-service-hostname.log,尤其关注TaskTracker的log。◆在单机上首先执行,看看是否能够正确执行,而后再在多机的集群系统上执行。云计算可靠性研究组33
本文标题:Hadoop现场演示与编程过程
链接地址:https://www.777doc.com/doc-3393783 .html