基于CentOS虚拟机的Hadoop安装教程(自用备忘)

Posted Asymptote_tanaka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CentOS虚拟机的Hadoop安装教程(自用备忘)相关的知识,希望对你有一定的参考价值。

该博文是用于记录Hadoop的安装过程,且记录其中出现的一些问题,防止日后遗忘

实验环境:

	虚拟机:CentOS7
	Hadoop:3.3.2
	java:java 8u331

下载连接:
CentOS:centos-7-x86_64-dvd-2009.iso
如果不能下载请到这里找可以下载的镜像网站:镜像
JDK:jdk-8u331-linux-x64.rpm
Hadoop:Hadoop-3.3.2

CentOS安装

使用VMware构造虚拟机
新建虚拟机
选择 经典(推荐)

填写全名,用户名和密码

注:用户名只能全小写,且root用户和该用户密码一致
下一步,下一步
在自定义硬件这里,需要小修改一下
处理器该栏取消勾选

然后耐心等待虚拟机构建好

至此虚拟机已经安装完毕

JDK配置

因为该虚拟机在构造的时候预先给我们配置好了java环境,但我们首先需要把他全部卸载掉,然后再安装我们的JDK
1.删除已有的jdk安装包
检测虚拟机上jdk安装包:rpm -qa | grep java

使用:rpm -e --nodeps 包名 删除jdk安装包直到所有jdk安装包都不存在为止
最后再次使用 rpm -qa | grep java 命令查看是否为空

2.安装jdk
这里使用的是 jdk-8u331-linux-x64.rpm进行安装,可根据自己需求自行选择压缩包或其他方式安装
把rpm文件拖入虚拟机,使用 rpm -ivh jdk-8u331-linux-x64.rpm 命令进行安装

安装完毕,java路径为 /usr/java/jdk1.8.0_331-amd64
PS:如果遇到这种安装失败情况,请重新下载一次rpm文件试试看,我这边在拖进虚拟机一次之后就不能再拖进一个新的虚拟机里面,新下的拖进去会弹窗报错,按一下retry就好

系统配置

设置主机名:
	vim /etc/sysconfig/network
	添加 HOSTNAME=cMaster
	另外两台机子为cSlave0和cSlave1
设置hosts
	使用ifconfig查看ip地址
	vim /etc/hosts   //ip是三台主机的ip地址,后面的是主机名
	[ip1] cMaster
	[ip2] cSlave0
	[ip3] cSlave1
关闭防火墙
	systemctl stop firewalld.service   //停止防火墙服务   
	systemctl disable firewalld.service   //不允许防火墙服务开机自启动

hadoop安装

把下载好的hadoop压缩包拖进虚拟机
使用 tar -zxvf hadoop-3.3.2.tar.gz解压缩
然后移动到 /opt 目录下
mv ./hadoop-3.3.2 /opt/
也可以在解压缩的时候指定目录
tar -zxvf hadoop-3.3.2.tar.gz -C /opt
移动到hadoop的配置目录
cd /opt/hadoop-3.3.2/etc/hadoop/

修改配置文件

hadoop-env.sh

JAVA_HOME=/usr/java/jdk1.8.0_331-amd64
路径为jdk路径

core-site.xml

<configuation></configuation>中添加
<property><name>hadoop.tmp.dir</name><value>/opt/hadoop-3.3.2/hadoopdata</value></property>
<property><name>fs.defaultFS</name><value>hdfs://cMaster:8020</value></property>

hdfs-site.xml

<property>
 <name>dfs.namenode.name.dir</name>
 <value>/opt/hadoop-3.3.2/hadoopdata/name</value>
</property>
<property>
 <name>dfs.datanode.data.dir</name>
 <value>/opt/hadoop-3.3.2/hadoopdata/data</value>
</property>
<property>
 <name>dfs.replication</name>
 <value>1</value>
</property>
<property>
 <name>dfs.secondary.http.address</name>
 <value>cSlave0:50090</value>
</property>
<property><name>dfs.http.address</name><value>0.0.0.0:50070</value></property>

yarn-site.xml

<property><name>yarn.resourcemanager.hostname</name><value>cMaster</value></property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
<property><name>yarn.application.classpath</name><value>/opt/hadoop-3.3.2/etc/hadoop:/opt/hadoop-3.3.2/share/hadoop/common/lib/*:/opt/hadoop-3.3.2/share/hadoop/common/*:/opt/hadoop-3.3.2/share/hadoop/hdfs:/opt/hadoop-3.3.2/share/hadoop/hdfs/lib/*:/opt/hadoop-3.3.2/share/hadoop/hdfs/*:/opt/hadoop-3.3.2/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.3.2/share/hadoop/mapreduce/*:/opt/hadoop-3.3.2/share/hadoop/yarn:/opt/hadoop-3.3.2/share/hadoop/yarn/lib/*:/opt/hadoop-3.3.2/share/hadoop/yarn/*</value></property>
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property> 

mapred-site.xml

<property><name>mapreduce.framwork.name</name><value>yarn</value></property>

workers 添加三个结点的主机名

cMaster
cSlave0
cSlave1

设置环境变量

vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_331-amd64
export HADOOP_HOME=/opt/hadoop-3.3.2
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
PATH=$PATH:$HOME/bin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

source /etc/profile

重启后使用hadoop看一下是否成功设置

能够看到使用帮助的话为设定成功
初始化

hadoop namenode -format

出现这条信息代表初始化成功

启动hadoop

start-dfs.sh

但直接启动会报错,因为没有设置三台主机的免密登录

免密ssh登录设置:

ssh配置文件设置

//ssh配置
vim /etc/ssh/sshd_config
//添加
PermitRootLogin yes
UsePAM no
PasswordAuthentication no
RSAAuthentication yes
//修改
PubkeyAuthentication yes

在root用户下生成公钥和私钥

ssh-keygen


可以看到有三个文件

公钥:id_rsa.pub
私钥:id_rsa
生成保存其他主机公钥的文件touch ~/.ssh/authorized_keys
把三个主机的公钥信息都保存到authorized_keys文件中
使用cat ~/.ssh/id_rsa.pub 获取公钥信息,当然用vim也可以

把三台主机都配置好
配置好了之后可以直接使用ssh cSlave0访问,如果不需要密码就能ssh登录的话代表成功
注:这里把三台主机的公钥都添加进去,因为前面xml设置的时候把自己主机的结点也添加进去了,所以会访问自己,不然也会无法访问
注注:如果有自己想法可以按自己需求来,这里只是其中一个解决思路
参考:https://blog.csdn.net/qq_36657997/article/details/107691144

然后再次启动就可以了

访问localhost:50070,如果出现active代表启动成功

启动存储服务

cMaster
yarn-daemon.sh start resourcemanager 启动主存储服务
cSlave结点
yarn-daemon.sh start nodemanager  启动从存储服务

访问主节点的8088端口,如果出现该页面代表配置成功

一些踩过的坑:
1.在初始化的时候,无法访问主类
Could not find or load main class org.apache.hadoop…
这是因为在一开始使用了原本系统有的jdk,但具体路径不知道,所以出现错误,后来自己下载jdk解决
2.访问被拒绝
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
在启动的时候会弹出这个错误,因为没有设置免密登录,所以无法访问其他两个结点

如果有其他问题可以参考一下这几篇博文:
https://blog.csdn.net/newbrid007/article/details/114398905
https://blog.csdn.net/qq_45981158/article/details/117434353

以上是关于基于CentOS虚拟机的Hadoop安装教程(自用备忘)的主要内容,如果未能解决你的问题,请参考以下文章

VMware下CentOS7虚拟机中基于Docker的Hadoop的完全分布式环境搭建

Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

Hadoop集群+Spark集群搭建基于VMware虚拟机教程

虚拟机的centos上安装wordpress