Hadoop伪分布式搭建实验总结
实验1:
启动一个AWS实例,并且将它改变大小,以及对其进行监控和管理。
- 创建EC2实例
- 观察实例的参数
- 更新安全组协议,增加web服务(http协议)
- 重新定义实例大小:实例的类型和EBS卷
- 探索EC2的限制
- 尝试终止保护
实验2:
创建一个Amazon弹性存储块(Amazon EBS),将EBS挂载到一个EC2实例上,在EBS上创建并配置文件系统,以及用快照实现EBS的备份和恢复。
- 新建EBS卷
- 连接卷到一个实例
- 登陆到创建的实例
- 创建并配置文件系统
- 创建一个EBS快照
- 恢复EBS快照
实验3:
在VPC中启动了一个EC2实例,在实例中运行着一个web server,对外提供web服务。
- 创建自己的私有云
- 创建附加子网
- 创建一个私有云的安全组
- 登陆到第一个web服务实例
实验4:
添加了mysql关系型数据库并配置了相应的子网和安全组,通过web server使用数据库进行数据的存储。
- 为RDS 数据库实例创建一个VPC安全协议组
- 创建一个数据库子网组
- 创建一个RDS数据库实例
- 访问上述创建的数据库
关键问题分析与解决:
在实验一中的任务1安装你的亚马逊EC2实例,在填写下面的命令时直接复制粘贴的,导致在任务3中无法进行。询问研究生学长后,得知可能是复制导致的问题,建议自己手打一边。一次我重新做了一边任务1,将命令自己手打进去,重新将IPV4地址拷贝进浏览器,回车后运行成功。仔细分析可能是复制命令时会将一些多余的空格复制进去,导致命令出错。
图 1实验一
在实验二中,因为之前的密钥文件没有保存,导致实验无法进行下去,不得不重新创建一个实例。还有就是获取PPK文件的时候需要通过pem文件转换,下载专门的软件。实验过程中需要通过PUTTY来访问云端,同时需要将云端实例的安全组里SSH端口打开。
实验三执行遇到了一点小问题,做到“Name tag: Type: Public Subnet 2”处时出现了点小错误。后来发现是实验指导书上的错误,这个地方的子网应该是私有的才对。
实验四做到任务四时后出现报错,原因是创建数据库时没有选择Only enable options eligible for RDS Free Usage Tier Info。重新建立数据库并正确操作,室验成功。
Hadoop伪分布安装
实验环境:
VMware workstation Pro.exe、ubuntu-18.04.1-desktop-amd64.iso、hadoop-0.20.2.tar.gz(在课件上的网站已经没有此版本了,因此我只能到官网上下载)。
前期准备:
修改镜像源,换成国内的镜像源,这样下载速度还快;安装vim,方便后期编辑文件。
实验步骤及遇到的问题:
1、安装jdk和配置java环境变量
首先在官网上下载jdk压缩包,本次实验所用的是jdk-8u191-linux-x64.tar.gz版本。将压缩包解压到虚拟机,然后配置环境变量,使用vi /etc/profile添加以下信息:
export JAVA_HOME=/java/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
最后重启系统,在终端输入Java –version,显示如下信息,jdk安装成功。
图 2 JDK安装成功
2、安装ssh
安装过程中,不知道是什么故障,执行sudo apt-get install ssh会报错,报错如下:
图 3 ssh安装报错
但是我换了条安装命令sudo apt-get install openssh-server后就可以,具体原因还没有搞清楚。
通过which shh和which shhd查看ssh是否安装;通过ps aux | grep ssh查看ssh是否安装;通过sudo ufw status查看防火墙是否已关闭;通过sudo netstat -tunlp | grep ssh查看ssh连接端口。检查完毕,安装成功。
图 4 检查ssh安装
3、安装Hadoop
这一步比较简单,直接将下载好的压缩包拷贝到虚拟机里即可。
4、配置Hadoop
这一步按照课件里面的说明,先修改hadoop-env.sh文件,添加java的环境变量;然后依次修改core-site.xml、hdfs-site.xml和mapred-site.xml文件。
5、免密码SSH设置
首先通过ssh-keygen –t rsa命令生成密钥对,执行过程中一路回车,选择默认设置。
图 5 ssh生成密钥
然后进入.ssh目录下,执行命令cp id_rsa.pub authorized_keys。
图 6 ssh配置
到此为止,所有的伪分布安装基本完成,下面进行测试,检验是否安装成功。
6、结果测试
首先需要先格式化分布式文件系统,执行命令bin/hadoop namenode –format。
图 7 格式化
然后执行bin/start-all.sh启动namenode守护进程,启动Hadoop的五个进程。
图 8 启动Hadoop
到此Hadoop已经启动运行。
可以在终端输入命令jps查看。
图 9 jsp命令查看
也可以通过在浏览器输入网址localhost:50070和localhost:50030查看。
图 10 localhost:50030浏览器查看
图 11 localhost:50070浏览器查看
下面来运行一个wordcount实例来进一步熟悉Hadoop。
首先在Hadoop目录下建立input文件夹,里面写有两个txt文件,text1.txt写有hello wangjian, text2.txt写有hello hadoop。将本地系统中的input目录复制到HDFS的根目录下,重新命名为in,运行Hadoop自带的WordConut实例。Out为数据处理完后的输出目录,默认为在Hadoop的根目录下,运行之前必须清空或者删除out目录,否则会报错。
任务执行完毕,实验结果如下:
图 12 WordConut分词
也可以把输出文件从Hadoop分布式文件系统复制到本地文件系统查看。
图 13 结果复制到本地文件系统
到此,伪分布式实验大功告成。执行bin/stop-all.sh停止Hadoop守护进程。
实验总结:
在Hadoop伪分布式的安装配置过程中,遇到许许多多的问题,安装Java jdk,配置环境变量,安装ssh等等,出现问题就到百度和csdn上寻找解决方法。同时在本次实验中认识到了自己的不足,对Linux系统不够熟悉,在以后的学习中需要进一步努力。
实验考验是一个人的耐心,实验步骤要一步一步地做,每一步都要严谨认真。
通过本次实验,只是简单掌握了Hadoop伪分布式的搭建过程,对于完全分布式没有做成功,也是很遗憾,因为时间紧张,在截至提交实验报告前,完全分布式遇到了点问题,到现在还没有解决。因为笔记本配置比较低,硬盘内存不够,只能搭建两台虚拟机。打算用wangjian这台作为namenode,wangjian1这台作为datanode。但是搭建两台以后,只能一台联网。具体问题还在研究。
图 14 分布式配置中修改hosts文件