实验一hadoop的安装与使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子信息学院
实验报告书
课程名:《云计算技术》
题目:实验一、Hadoop的安装与使用
实验类别【设计】
班级: bx1002
学号: 31
姓名:杨汉标
【实验环境】
计算机、Java、Hadoop
【实验目的】
1.理解云计算的基本理论知识;
2.理解Hadoop的基本概念
3.掌握如何在Linux上安装Hadoop;
【实验要求】
1.下载Hadoop和JDK;
2.安装SSH;
3.对Linux进行相应配置。
【基础知识】
Hadoop是Google MapReduce的一个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 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 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:确保计算机联网之后命令行输入下面命令安装JDK
sudo apt-get install sun-java6-jdk
(2)配置计算机Java环境:打开/etc/profile,在文件最后输入下面内容
export JAVA_HOME = (Java安装目录)
export CLASSPATH = ".:$JAVA_HOME/lib:$CLASSPATH"
export PATH = "$JAVA_HOME/:PATH"