实验一hadoop的安装与使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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"
(3)验证Java是否安装成功
输入 java -version ,输出Java版本信息即为安装成功。

安装配置SSH
(1)下载安装SSH:同样在命令行输入下面命令安装SSH
sudo apt-get install ssh
(2)配置无密码登录本机:在命令行输入下面两条命令
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
直接回车,完成后会在~/.ssh/生成两个文件:id_rsa和;这两个成对出现,类似钥匙和锁。

再把追加到授权key里面(当前并没有authorized_keys文件)
$ cat ~/.ssh/ >> ~/.ssh/authorized_keys
验证SSH是否安装成功
输入 ssh localhost 。

如果显示本机登录成功就表明安装成功。

关闭防火墙
$sudo ufw disable
注意:这步非常重要,如果不关闭,会出现找不到datanode的问题
安装运行Hadoop(以版本为例)
(1)下载Hadoop:在页面上下载Hadoop。

(2)安装配置Hadoop
单节点配置:
安装单节点的Hadoop无需配置,在这种方式下,Hadoop被认作为一个单独的Java进程。

伪分布配置:
伪分布的Hadoop是只有一个节点的集群。

在这个集群中,计算机既是master也是slave,
即使 namenode也是datanode,既是jobtracker也是tasktracker。

配置的过程如下:
1、进入conf文件夹修改下面的文件。

中加入下面内容:
export JAVA_HOME = (JAVA安装目录)
文件内容修改为下面内容:
<configuration>
<!-- global properties -->
<property>
<name> <value>/home/zhongping/tmp</value>
</property>
<!-- file system properties -->
<property>
<name> <value> </property>
</configuration>
文件内容修改为下面内容:(replication默认为3,如果不修改,datanode少于三台就会报错)
<configuration>
<property>
<name></name>
<value>1</value>
</property>
</configuration>
文件内容修改为下面内容:
<configuration>
<property>
<name> <value>localhost:9001</value>
</property>
</configuration>
2、格式化Hadoop文件系统,在命令行输入命令:
bin/hadoop namenode -format
3、启动Hadoop,在命令行输入命令:
bin/
4、验证Hadoop是否安装成功,在浏览器中输入下面网址,如果正常打开说明安装成功。

(mapreduce的web页面)
(hdfs的web页面)
运行实例
(1)先在本地磁盘建立两个输入文件 file01和file02
$echo "Hello World Bye World" > file01
$echo "Hello Hadoop Goodbye Hadoop" > file02
(2)在hdfs中建立一个input目录:$hadoop fs -mkdir input
(3)将file01和file02拷贝到hdfs中:
$hadoop fs -copyFromLocal /home/zhongping/file0* input
(4)执行wordcount:
$hadoop jar wordcount input output
(5)完成之后,查看结果
$hadoop fs -cat output/part-r-00000
环境变量的配置
export JAVA_HOME = /home/chuanqing/profile/ CLASSPATH =
".:$JAVA_HOME/lib:$CLASSPATH"
export PATH = "$JAVA_HOME/:PATH"
export HADOOP_INSTALL=/home/chuanqing/profile/ PATH=$PATH:$HADOOP_INSTALL/bin
export HADOOP_INSTALL=/home/zhoulai/profile/ PATH=$PATH:$HADOOP_INSTALL/bin [实验体会]
通过这次的实验理解云计算的基本理论知识,了解Hadoop的基本概念也掌握如何在Linux上安装Hadoop。

相关文档
最新文档