1 / 36

Hadoop 现场演示与编程过程

Hadoop 现场演示与编程过程. 朱军 刘锴 傅雷扬 安徽农业大学. 主要内容. 实验平台简介 Hadoop 环境搭建 MapReduce 编程. 实验平台简介. 采用 XenServer 分布式部署 Hadoop 浪潮 380D 5 台虚拟机( CentOS ) 采用 VirtualBox 分布式部署 Hadoop PC 5 台虚拟机( CentOS ). 采用 XenServer 分布式部署 Hadoop. 采用 VirtualBox 分布式部署 Hadoop. Hadoop 环境搭建. Hadoop 的三种部署模式

giona
Download Presentation

Hadoop 现场演示与编程过程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hadoop现场演示与编程过程 朱军 刘锴 傅雷扬 安徽农业大学 云计算可靠性研究组

  2. 主要内容 • 实验平台简介 • Hadoop 环境搭建 • MapReduce 编程 云计算可靠性研究组

  3. 实验平台简介 • 采用XenServer分布式部署Hadoop • 浪潮380D • 5台虚拟机(CentOS) • 采用VirtualBox分布式部署Hadoop • PC • 5台虚拟机(CentOS) 云计算可靠性研究组

  4. 采用XenServer分布式部署Hadoop 云计算可靠性研究组

  5. 采用VirtualBox分布式部署Hadoop 云计算可靠性研究组

  6. Hadoop 环境搭建 • Hadoop的三种部署模式 • Hadoop完全分布式部署 • HDFS节点故障演示 云计算可靠性研究组

  7. Hadoop 的三种部署模式 1、单机模式 2、伪分布式模式 3、完全分布式模式 云计算可靠性研究组

  8. Hadoop完全分布式部署 IP/hosts: 210.45.176.46hadoop1.ahau.edu.cn 210.45.176.47hadoop2.ahau.edu.cn 210.45.176.48 hadoop3.ahau.edu.cn 210.45.176.49 hadoop4.ahau.edu.cn 210.45.176.50 hadoop5.ahau.edu.cn Namenode/Jobtracker: hadoop1.ahau.edu.cn Secendnamenode: hadoop2.ahau.edu.cn datanode/tasktracker: hadoop2.ahau.edu.cn hadoop3.ahau.edu.cn hadoop4.ahau.edu.cn Newdatanode: hadoop5.ahau.edu.cn 云计算可靠性研究组

  9. 完全分布式部署步骤 一、安装配置 Java环境 二、配置SSH免密码登录 三、安装配置Hadoop 云计算可靠性研究组

  10. 安装配置JAVA 1、安装jdk bin/jdk-6u27-x64.bin 2、修改环境变量 vim ~/.bash_profile JAVA_HOME=/usr/local/jdk1.6.0_27 export $JAVA_HOME $PATH=$PATH:$JAVA_HOME/bin 云计算可靠性研究组

  11. 配置SSH免密码登录 1、生成密钥 ssh-keygen -t rsa 2、拷贝密钥 ssh-copy-id -i ~/.ssh/id_rsa.pub root@remotehost 云计算可靠性研究组

  12. 安装配置Hadoop 1、解压Hadoop 2、从src复制配置文件示例 3、修改hadoop-evn.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves 云计算可靠性研究组

  13. core-site-xml <property>  <name>hadoop.tmp.dir</name>  <value>/home/grid/hadoop/tmp</value> #设定Hadoop临时目录  <description> </description>  </property> <property>  <name>fs.default.name</name>  <value>hdfs://hadoop1.ahau.edu.cn:9100</value> #设置文件系统路径 </property> </configuration>  <property> <name>heartbeat.recheck.interval</name> #节点间心跳检测间隔时间,默认10分钟 <value>1000</value> </property> 云计算可靠性研究组

  14. hdfs-site-xml <property>  <name>dfs.relplication</name> ##HDFS的副本数,默认为3,如果DataNode的数量小于这个值会有问题  <value>2</value>  </property> <property> <name>dfs.permissions</name> ##是否对dfs中的文件进行权限控制 <value>false</value> </property> 云计算可靠性研究组

  15. mapred-site-xml <property> <name>mapred.job.tracker</name> <value>hadoop1.ahau.edu.cn:9200</value> ##设置MapReduce Job运行的主机和端口  </property> 云计算可靠性研究组

  16. masters/slaves 配置 masters:指定Secondnamenode的主机名 slaves:指定datanode/tasktracker的主机名 将Hadoop目录同步到所有节点服务器 云计算可靠性研究组

  17. 启动Hadoop • 格式化分布式文件系统 bin/hadoop namenode -format 2、关闭所有节点的防火墙及Selinux 3、在namenode上执行 bin/start-all.sh 4、查看进程运行情况 $JAVA_HOME/bin/jps 云计算可靠性研究组

  18. 查看Hadoop运行状态 HDFS状态: http://hadoop1.ahau.edu.cn:50070/ MapReduce状态: http://hadoop1.ahau.edu.cn:50030/ 查看文件系统情况: bin/hadoop dfsadmin -report 列出文件系统目录: bin/hadoop fs -ls hdfs://hadoop1.ahau.edu.cn:9100/ 云计算可靠性研究组

  19. HDFS节点故障演示 一、增加HDFS节点 1、新节点ip/hosts: 210.45.176.50 hadoop5.ahau.edu.cn 2、在新节点上安装Hadoop,配置应与NameNode一致 3、若永久填加该节点,可修改masters和slaves文件 4、临时填加节点,执行命令: bin/hadoop-daemon.sh datanode start 5、查看http://hadoop1.ahau.edu.cn:50070,已变为4个live节点 二、新增节点故障演示 1、人为Kill掉新增节点的datanode进程 2、经过心跳检测时间后,查看http://hadoop1.ahau.edu.cn:50070页面,新增节点消失 云计算可靠性研究组

  20. MapReduce 编程 • MapReduce编程过程 • 编程实例:矩阵相乘 • 程序调试和发布 云计算可靠性研究组

  21. MapReduce编程过程 • 就是继承类与实现接口的过程。这些类与接口来自于Hadoop的Map-Reduce框架,由框架控制其执行流程。 • Java多态性:对象的引用型变量。 编程过程的三个阶段: • 输入阶段 • 计算阶段 • 输出阶段 云计算可靠性研究组

  22. MapReduce编程过程 云计算可靠性研究组

  23. 与输入相关的几个抽象类 • InputFormat 文件分割,读取。FileInputFormat从文件中读取数据。 • InputSplits 定义了输入到单个Map任务的输入数据。 • RecordReader 定义了如何从数据上转化为一个(key,value)对,从而输出到Mapper类中。 云计算可靠性研究组

  24. 与计算相关的几个抽象类 • Mapper map()方法处理输入<K1, V1>,产生输出<K2, V2>。 • Reducer reduce()方法处理Map的输入<K2, list(V2)>,产生输出<K3, V3>。 • Combiner 实现Reducer接口,对map()输出进行规约。 • Partitioner 分发map()输出给不同的Reduce任务。 云计算可靠性研究组

  25. 与输出相关的几个抽象类 • OutputFormat 数据输出。FileOutputFormat输出到文件。 • RecordWriter 输出一个记录到文件中。 云计算可靠性研究组

  26. 其它重要类与接口 • Configuration类 读取配置文件。如:core-default.xml、core-site.xml等。 • Job类 配置、提交Job,控制其执行,查询其状态。 • Writable接口 序列化输入输出。任何Key, Value都需要实现它。 • WritableComparable接口 可比较的序列化输入输出。任何Key都需要实现它。 云计算可靠性研究组

  27. 编程实例:矩阵相乘 编程环境准备: • 安装配置Java环境 • 安装配置Hadoop • 安装Eclipse(Version: 3.5.2) • 安装插件hadoop-0.20.2-eclipse-plugin.jar 云计算可靠性研究组

  28. map:计算各个Value值(求积) reduce:计算Key相同的所有Value的和(求和) 实例:矩阵相乘 将问题分解成MapReduce作业 X <(1,1), (a11, b11)>、 <(1,1), (a12, b21)> 、 <(1,1), (a13, b31)> Key Value 云计算可靠性研究组

  29. 实例:矩阵相乘 输入阶段 文件 MatrixInputFormat MatrixInputFormat重要方法: public int readFile(JobContext context); public List<InputSplit> getSplits(JobContext context); public RecordReader<IntPair, IntPair> createRecordReader(InputSplit split, TaskAttemptContext context) Matrix MatrixInputSplit 云计算可靠性研究组

  30. 框架调用关系: MatrixRecordReader.getCurrentKey(), … extends RecordReader Context.getCurrentKey(), … extends MapContext MatrixMulti.MatrixMapper.map() extends Mapper Mapper.run() TaskTracker(MapTask, ReduceTask) JobTracker 实例:矩阵相乘 计算阶段 MatrixInputSplit MatrixRecordReader MatrixRecordReader重要方法: public boolean nextKeyValue(); public IntPair getCurrentKey(); public IntPair getCurrentValue(); IntPair <Key, Value> MatrixMapper MatrixReducer FirstPartitioner 云计算可靠性研究组

  31. MultipleOutputFormat方法及调用关系: DataOutputStream.write(int b), … LineRecordWriter.write(K key, V value) MultiRecordWriter.write(K key, V value); MultipleOutputFormat extends FileOutputFormat .getRecordWriter(TaskAttemptContext job); 实例:矩阵相乘 输出阶段 MatrixReducer MultipleOutputFormat LineRecordWriter 云计算可靠性研究组

  32. 程序调试和发布 程序调试 • 编写单元测试(Mockito)。 • 将调试语句记录到错误日志中。(StatusReporter) • 日志文件:分门别类存放在hadoop-version/logs目录下面,hadoop-username-service-hostname.log,尤其关注TaskTracker的log。 • 在单机上首先执行,看看是否能够正确执行,而后再在多机的集群系统上执行。 云计算可靠性研究组

  33. 程序调试和发布 程序发布 • 打包 jar, Ant… • 启动作业 hadoop jar job.jar MainClass input output • JobTracker http://host:50030/jobtracker.jsp • NameNode http://host:50070/dfshealth.jsp 云计算可靠性研究组

  34. MapReduce 运行状态 云计算可靠性研究组

  35. Hadoop Map/Reduce 运行状态 云计算可靠性研究组

  36. 谢谢! 云计算可靠性研究组

More Related