hadoop伪分布实训及后续实验所需软件:
链接:https://pan.baidu.com/s/1YK3noz1cBHYN8ySleHuU5Q?pwd=ri9c
提取码:ri9c
请确保你之前的实验是按照文档要求安装的centos7.6,不然后续linux中安装mysql会比较麻烦,可能导致后续实验失败
你可以通过以下命令查看centos版本:
cat /etc/centos-release
为了后续实验的成功,请你在VMware上克隆一个新的CentOS系统,并在新的系统上完成实验
后续实验都需要在此基础上进行,即使你已经搭建过hadoop集群,也请按照本教程再搭建一次
一 设置静态IP
我这里设置的静态ip地址为:192.168.31.188
请你将你的ip地址设置为192.168.xx.188
静态IP设置教程可参考:
CentOS7设置静态ip
shell脚本一键设置CentOS静态ip教程
二、环境准备
1.修改主机名
[root@localhost app]# hostnamectl set-hostname master
[root@localhost app]# bash
[root@master app]#
2. 修改hosts文件
[root@master app]# vim /etc/hosts
3. 关闭防火墙和selinux
关闭防火墙命令:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
关闭selinux:
[root@localhost ~]# vim /etc/selinux/config
将参数设置为disabled 然后保存退出:
4. 配置无密码ssh登录
[root@master ~]# ssh-keygen -t rsa -P ''
[root@master ~]# ssh-copy-id master
三 安装JAVA
准备工作:
在CentOS7.6上的/root目录下新建一个app文件夹
然后用xftp将java和hadoop安装包上传到/root/app中
1.进入app目录,解压jar包,解压完成后删除jar包
[root@master ~]# cd /root/app
[root@master app]# tar -zxvf jdk-8u202-linux-x64.tar.gz
[root@master app]# rm -rf jdk-8u202-linux-x64.tar.gz
2.配置java环境变量,进入java目录,ls查看java安装目录为:/root/app/jdk1.8.0_202
设置环境变量:
[root@master app]# vim /etc/profile
添加以下四行:
#java path
export JAVA_HOME=/root/app/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
3使环境变量生效:
[root@master app]# source /etc/profile
4验证jdk是否配置成功:
[root@master app]# java -version
四 安装Hadoop2.7.7
1.解压hadoop,解压完成后删除原始的安装包
[root@master app]# cd /root/app [root@master app]# tar -zxvf hadoop-2.7.7.tar.gz [root@master app]# rm -rf hadoop-2.7.7.tar.gz
2. 进入hadoop,打印并hadoop所处的目录:/root/app/hadoop-2.7.7
3配置hadoop环境变量:
[root@master hadoop-2.7.7]#vim /etc/profile
添加以下5行:
#hadoop_path export JAVA_HOME=/root/app/jdk1.8.0_202 export HADOOP_HOME=/root/app/hadoop-2.7.7 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib:$CLASSPATH
4使配置生效:
[root@master hadoop-2.7.7]# source /etc/profile
5.验证安装是否成功:
[root@master hadoop-2.7.7]# hadoop
五 让环境变量持续生效
注:必须设置,否则可能在执行某些脚本,如第6章脚本执行到一半,hadoop命令失效
当前设置的java版本和hadoop命令会在关闭终端和在其他目录打开终端时失效,可通过如下方式解决:
[root@master app]# vim /root/.bashrc
在最后添加以下代码:
#java path export JAVA_HOME=/root/app/jdk1.8.0_202 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH #hadoop path export HADOOP_HOME=/root/app/hadoop-2.7.7 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib:$CLASSPATH
设置完成后保存退出,再bash以下使之生效!
[root@master app]# bash
六 配置hadoop的配置文件(位于安装目录的etc/hadoop目录下)
[root@master hadoop]# cd /root/app/hadoop-2.7.7/etc/hadoop [root@master hadoop]# ls
1.在hadoop-env.sh中修改jdk的环境变量:
[root@master hadoop]# vim hadoop-env.sh
将:
export JAVA_HOME=${JAVA_HOME}
改为:
export JAVA_HOME=/root/app/jdk1.8.0_202
3. 配置slaves文件:
[root@master hadoop]# vim slaves master
4. 修改hdfs的配置文件(core-site.xml,hdfs-site.xml)
配置core-site.xml:
[root@master hadoop]# vim core-site.xml <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!--指定hadoop临时目录--> <property> <name>hadoop.tmp.dir</name> <value>/root/app/hadoop-2.7.7/tmp</value> </property>
还可以在core-site.xml指定hdfs缓存大小,但是不设置也没出问题
<!--指定hdf缓存大小-->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
设置hdfs-site.xml文件:
[root@master hadoop]# vim hdfs-site.xml <!--设备数据备份数量--> <property> <name>dfs.replication</name> <value>1</value> </property>
5. 配置mapreduce配置文件(mapred-site.xml,yarn-site.xml):
配置mapred-site.xml:
mapred-site.xml本身并不存在可以使用cp命令复制mapred-site.xml.template再更改:
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml [root@master hadoop]# vim mapred-site.xml
<!--配置mapreduce框架用yarn启动--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
配置yarn-site.xml:
yarn-site.xml是ResourceManager进程相关配置文件:
[root@master hadoop]# vim yarn-site.xml
<!--设置对外暴露的访问地址(或者yarn资源管理者的主机)为master--> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
至此,hadoop的配置结束
七 验证伪分布是否成功
格式化namenode节点
[root@master hadoop]# hdfs namenode -format
格式化完成后像这样:
如果执行成功,在/root/app/hadoop-2.7.7目录下会生成一个tmp目录,可以使用tree (没有此命令可以使用yum -y install tree 来安装tree命令)来查看tmp目录下的文件结构
[root@master hadoop]# yum -y install tree [root@master hadoop]# tree /root/app/hadoop-2.7.7/tmp
启动/关闭hadoop
[root@master hadoop]# start-all.sh
jps查看启动的进程
[root@master hadoop]# jps
从jps的结果我们可以看到:
伪分布安装成功后DataNode 和NameNode均在本机上
查看节点信息
[root@master hadoop]# hdfs dfsadmin -report
可以看到一个存活的数据节点:
八web端验证
web端验证是唯一有效验证hadoop是否部署成功的依据,我们这是伪分布,看不出区别,如果在全分布情况下,可能出现通过命令能看到节点都启动成功了,但主节点控制不了数据节点的情况,即使集群出问题了,或者没有搭建成功,我们会误以为集群工作正常
总之:一定要进行web端验证
Web端hdfs页面地址:http://192.168.31.188:50070/
yarn web页面地址为:http://192.168.31.188:8088
关闭集群命令:
[root@master ~]# stop-all.sh
注意:关闭虚拟机之前,必须先执行关闭集群的命令,否则数据节点可能使用不了
如果数据节点使用不了,可以先启动再关闭,再启动集群试试。
附录:
hadoop集群常见错误及解决办法
本文作者为BUG之神,转载请注明。