赞
踩
报告内容及要求
本报告作为“大数据开发技术”课程的阶段性考试内容,需要独立完成,可以参考资料。
- 报告内容
在Linux系统上,利用课上所学知识,根据自身机器配置,创建一个伪分布式Hadoop集群或完全分布式Hadoop集群,并对集群进行操作。需要在项目实现过程中,体现出通过本课程所学知识。- 报告要求
集群形式可以根据机器配置在伪分布式和完全分布式间进行选择;
Hadoop集群及所需组件的安装和配置需要截图;
关于Java的目录:需要自定义名称,添加学号后缀,比如学号为18B12345,那么JAVA_HOME的路径应该是…/java-18B12345,需要截图在报告中进行体现;
关于集群的测试:在Hadoop集群安装完成后,需要分别用官方提供的例子和Web UI进行测试,需要截图在报告中进行体现;
关于集群的操作:需要分别使用Shell形式和Java API对集群进行操作并截图在报告中进行体现,其中:在使用Java API时,Java项目的命名需要具有学号后缀,比如;学号为18B12345,那么如果创建的Java项目为hdfs-api,则实际创建的Java项目为hadfs-api-18B12345;如果创建的Java代码文件为main.java,则实际创建的.java文件为main_18B12345.java。
本项目主要是建立Hadoop完全分布式集群,并进行集群测试和操作。
主要内容:配置hadoop完全分布式集群的前期准备、安装过程、配置文件、启动过程、Shell操作、Java API操作。
(本文中的一些文件可能带有学号后缀,这是课程报告的要求,实际上不必写后缀)
Linux发行版:ubuntu-18.04.4-desktop-amd64
JDK版本:jdk1.8.0_144
Hadoop版本:hadoop-2.7.2
创建三台虚拟机,并完成各项准备工作。
以下的所有准备工作在三台虚拟机上都要做。由于在准备阶段,三台主机的操作几乎完全相同,所以在此以第一台主机hadoop1为例。
注意,本文的所有命令均是在root账号下运行。
(1) 修改主机名,依次为hadoop1,hadoop2,hadoop3。
(2) 关闭防火墙
输入命令ufw disable
,关闭防火墙,重启后即可生效。
(3) 设置静态IP, hadoop1主机的设置如下图所示:
输入命令ifconfig
,查看一下IP,显示设置成功:
(4) 配置ssh免密登录,方便之后用xsync脚本进行集群分发。
输入命令vim /etc/hosts
,将主机名与各自IP相对应,如下图所示:
输入命令vim /etc/ssh/sshd_config
,找到PermitRootLogin 配置项将原先的PermitRootLogin的prohibit-password修改为yes:
输入命令service ssh restart
,重启ssh。
cd ~
(进入root目录)
ssh-keygen -t rsa
,再按3次回车
~/.ssh会生成两个文件:id_rsa(私钥)、id_rsa.pub(公钥)
然后将其公钥加到3个虚拟机目录下(会生成一个authorized_keys的公钥,如果已经存在,则在该文件后面将会继续追加公钥内容),输入以下命令:
ssh-copy-id root@hadoop1
ssh-copy-id root@hadoop2
ssh-copy-id root@hadoop3
三台虚拟机都完成如上操作后,在hadoop1主机上测试是否能以root账号免密登录到hadoop2。
输入命令ssh root@hadoop2
,无需输入密码则说明ssh免密登录配置成功,如下图所示:
输入命令exit
退出hadoop2的root账号,继续操作。
(5) 编写集群分发脚本xsync
输入命令vim /usr/local/bin/xsync
,编写内容如下:
#!/bin/bash if [[ -x $(command -v rsync) ]]; then echo yes > /dev/null else echo no rsync found! exit 1 fi #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if((pcount==0)); then echo no args! exit; fi #2 获取文件名称 p1=$1 fname=$(basename $p1) echo fname=$fname #3 获取文件绝对路径 pdir=$(cd -P $(dirname $p1); pwd) echo pdir=$pdir #4 获取当前用户名称 user=$(whoami) #5 循环 for((host=2; host<4; host++)); do echo --- hadoop$host --- rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done
输入命令chmod +x xsync
,将其提升为可执行文件的权限。
这个脚本只要写在hadoop1主机中即可,由它来向其他主机分发文件。
在hadoop1主机中安装JDK并配置相应文件,同时用xsync同步文件到其他主机。
输入命令tar -zxvf jdk-8u144-linux-x64.tar.gz
解压得到jdk1.8.0_144目录,将其改名为jdk1.8.0_144-2018214184。
输入命令xsync jdk1.8.0_144-2018214184
,将其分发到其他主机上。
输入命令vim /etc/profile.d/java.sh
,配置环境变量:
输入命令xsync /etc/profile.d/java.sh
,将其分发到其他主机上:
输入命令source /etc/profile
使环境变量生效。
最后,输入命令java -version
,检验是否配置成功,如图所示,说明java已经配置成功:
在hadoop1主机中安装Hadoop并配置相应文件,同时用xsync同步文件到其他主机。
输入命令tar -zxvf hadoop-2.7.2.tar.gz
解压得到hadoop-2.7.2目录。
输入命令xsync hadoop-2.7.2
,将其分发到其他主机上。
输入命令vim /etc/profile.d/hadoop.sh
,配置环境变量:
输入命令xsync /etc/profile.d/hadoop.sh
,将其分发到其他主机上:
输入命令source /etc/profile
使环境变量生效。
最后,再输入命令hadoop
,检验是否配置成功,如图所示,说明Hadoop已经配置成功:
集群部署规划:
为了能群启集群,还需要配置/opt/hadoop-2.7.2/etc/hadoop目录下的一些文件。
(1)vim hadoop-env.sh
,加入JAVA_HOME:
export JAVA_HOME=/opt/jdk1.8.0_144
如图:
(2)vim yarn-env.sh
,加入JAVA_HOME:
export JAVA_HOME=/opt/jdk1.8.0_144
如图:
(3)vim mapred-env.sh
,加入JAVA_HOME:
export JAVA_HOME=/opt/jdk1.8.0_144
如图:
(4)vim core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.2/data/tmp</value>
</property>
如图:
(5)vim hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
如图:
(6)vim yarn-site.xml
,注意是在两个<configuration>之间添加,其他内容不要改变:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
<property>
<name>yarn.resourcenamager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
如图:
(7)vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
如图:
(8)vim slaves
hadoop1
hadoop2
hadoop3
最后,输入命令xsync /opt/hadoop-2.7.2/etc/hadoop
,将配置文件同步到所有节点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。