简单的写了一份CentOS7安装Hadoop3.2.0部署伪分布式的教程,已多次实验成功,简单粗暴,全程带图,有手就行(
- 2020.4.11 DEBUG 修复了个别CV错误的配置文件,并且作者于1:27开始完全跟着文章1:48成功部署,如果你跟着这篇文章还有问题,那肯定不是作者的问题
- 不胎教了,我不配,小学生教育总可以了吧
- 如果你真的有问题,请帮帮你自己
- 加个补丁,所有操作都在root账户下执行
主要环境与软件版本:
VMware Workstation 15 Pro
CentOS 7
Hadoop3.2.0
jdk-8u181-linux-x64
MobaXterm V20.1
准备
Centos7安装与设置
- 创建虚拟机->典型->选择Centos7镜像->下一步->填写全名-用户名-密码,请记好密码,这同时会成为你root账户的密码->下一步->修改虚拟机名称(我的是hadoop-test)->选择虚拟机存放目录->下一步->指定磁盘容量,建议往大了选(我的是70GB),其余默认->去掉**创建后开启虚拟机**,点击完成。
- 选中刚才创建的虚拟机,点击编辑虚拟机设置(我们主要调整网络适配器,其他内存处理器等参数请读者自己仁者见仁智者见智,对于实验影响不大)
- 点击网络适配器,网络桥接模式选择NAT模式,点击确定。
VMware网络配置
- 点击VMware界面左上方编辑->虚拟网络编辑器
- 点击右下角的更改设置,选中VMnet8,将下方的使用本地DHCP服务将IP地址分配给虚拟机选项去掉,如果你下方的子网IP与图中不一致,请点击还原默认设置后修改为192.168.174.0,然后点击确定
-
选中VMnet8,点击NAT设置,查看并记下显示的内容(特别是网关)
虚拟机网络配置
启动虚拟机
- 耐心等待安装完毕
-
查看网卡信息
- 输入
ls /etc/sysconfig/network-scripts/
查看网卡信息配置文件
- 如图,我的网卡信息配置文件名为
ifcfg-eno16777736
,请注意,不同电脑有可能配置文件名不一样,请输入命令确定自己的网卡信息配置文件名 - 输入
vi /etc/sysconfig/network-scripts/****
(****为你的网卡信息配置文件名) - 如果你真的使不来vi编辑器,请自行根据路径找到文件打开修改
-
请做以下修改
BOOTPROTO=static #修改为static
ONBOOT=yes #修改为yes
IPADDR=192.168.174.200 #添加自己想固定成的IP,但是一定要与上面的VMnet8的子网IP在同一网段
GATEWAY=192.168.174.2 #这里的填写值就是上面NAT设置中让你记下的网关
NETMASK=255.255.255.0 #子网掩码,没啥好说的
DNS1=192.168.174.2 #同样也是上面NAT设置中让你记下的网关 - 可以参考我的修改情况
- 保存,重启虚拟机
- 输入
ifconfig -a
查看ip是否与自己固定的一致
网卡设置
- 如果你上方设置和显示都与我一样,请如图设置VMnet8网卡信息,否则请自行对比参考填入你的信息。(不设置这一步可能会导致你的物理机SSH与SFTP连接不上虚拟机)
关闭防火墙并停止开机自启
sudo systemctl stop firewalld.service #关闭防火墙
sudo systemctl disable firewalld.service #停止防火墙开机自启
sudo firewall-cmd --state #查看防火墙状态
保存快照1
为了你的身心健康,强烈建议你根据我的提示保存好每一步的快照,不然你可能会在某些问题发生的时候失去梦想
安装java
jdk
-
准备好jdk,如果你没有认真看开头,这篇文章使用的是jdk-8u181-linux-x64,我也仅保证与我使用该jdk相同的是没有问题的,使用其他版本的请自行斟酌参考
将jdk放入虚拟机中
- 打开MobaXtrem(或其他SFTP软件,甚至你可以直接通过VMware拖进虚拟机,要问为什么我用它,
因为我觉得这个软件帅因为它可以使用多种连接方式,包括SSH和SFTP) - 登入你的虚拟机(使用ROOT账户)
- 在 /usr/ 下创建一个文件夹 java(或者别的什么名字) ,将你的jdk-8u181-linux-x64.tar.gz文件丢进去
- 在/root/下创建一个文件夹 app(爱叫啥叫啥)
- (如果你也下载了MobaXtrem,那就直接拿SSH连接或者使用其他的SSH连接软件,不然就切回虚拟机在虚拟机终端中输入命令吧)
- 在终端中使用
cd
命令进入你刚才存放jdk的目录,输入命令解压jdktar -zxvf jdk-8u181-linux-x64.tar.gz -C ~/app/
(如果你上面是跟我一样的操作,这段命令直接复制粘贴,不然请自行修改后面的~/app/,这是你解压的目标路径) -
cd
进入你刚才解压的目标路径底下的bin目录下(~/app/jdk1.8.0_181/bin),输入./java -version
查看是否安装成功
配置java路径
- 我承认我也使不来vi编辑器,接下来的所有要操作文件内容修改的环节我都会直接用MobaXtrem内置的编辑器打开文件修改,有梦想的小伙伴可以继续使用vi编辑器
- 首先cd进你的jdk文件夹底下,输入pwd,获取你的JAVA_HOME的值(如果你是完美复刻我的操作,接下来复制就行了,不用特地去查看JAVA_HOME的值)
- 打开/etc/profile文件(
vi /etc/profile
) -
在文件底下添加四行
export JAVA_HOME=/root/app/jdk1.8.0_181 #填写你上面获取到的JAVA_HOME的值
export JRE_HOME=/root/app/jdk1.8.0_181/jre #自行类比上一条 export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #照抄就行了 export PATH=$PATH:$JAVA_HOME/bin #照抄 - 保存文件,在终端输入
source /etc/profile
- 在任意目录底下输入
java -version
查看java环境是否正确配置,如果显示版本与你配置的java不一致,请执行下一步,否则跳过接下来的操作,直接去hadoop安装环节 - 在终端输入
rpm -qa | grep java
查看你的虚拟机自带的java版本,一般开启图形化界面的centos都自带java,所以我们要删除它 - 记下来如图箭头所指的名字(如果显示不一致请自行类比)
- 在终端输入命令删除它们(千万别把其他的删了!)
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
-
此时你再执行
java -version
,显示的就是配置的java版本(最后先再运行一下source /etc/profile
)
保存快照2
安装Hadoop
Hadoop
准备好Hadoop,如果你没有认真看开头,这篇文章使用的是Hdoop3.2.0,我也仅保证与我使用该Hadoop相同的是没有问题的,使用其他版本的请自行斟酌参考
将Hadoop放入虚拟机中
- 在 /usr/ 下创建一个文件夹 hadoop(或者别的什么名字) ,将你的hadoop-3.2.0.tar.gz文件丢进去
- 参考安装java的步骤,解压去/root/app/文件夹下
tar -zxvf hadoop-3.2.0.tar.gz -C ~/app/
-
打开/etc/profile(
vi /etc/profile
),在最底下添加修改export HADOOP_HOME=/root/app/hadoop-3.2.0 #添加HADOOP_HOME路径,值为你的Hadoop解压后的目标路径 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin #修改PATH的值
-
终端中输入
source /etc/profile
,然后任意目录运行 hadoop version 查看Hadoop路径是否正确配置,如果版本号正常出现,就说明没问题
修改Hadoop配置文件
-
创建三个后面会用到的文件夹
mkdir /root/app/tmp
mkdir -p /root/app/hdfs/name
mkdir /root/app/hdfs/data - 进入你Hadoop目录下的 /etc/hadoop ,打开 hadoop-env.sh 进行修改
- 找到JAVA_HOME注释区
- 去掉注释,并将值修改为你上面填写的JAVA_HOME的值(/root/app/jdk1.8.0_181)
- 同一目录下,修改yarn-env.sh,在文件头加入
export JAVA_HOME=/root/app/jdk1.8.0_181
-
同一目录下,修改core-site.xml,在configuration标签中添加下面的内容(如果与我操作有些不同的读者请自行进行修改)
fs.default.name hdfs://master:9000 fs.defaultFS hdfs://master:9000 hadoop.tmp.dir /root/app/tmp
-
同一目录下,修改hdfs-site.xml,在configuration标签中下入下面的内容(如果与我操作有些不同的读者请自行进行修改)
dfs.namenode.name.dir file:/root/app/hdfs/name dfs.datanode.data.dir file:/root/app/hdfs/data dfs.replication 1
-
同一目录下,修改mapred-site.xml,在configuration标签中下入下面的内容(如果与我操作有些不同的读者请自行进行修改)
mapreduce.framework.name yarn
-
同一目录下,修改yarn-site.xml,在configuration标签中下入下面的内容(如果与我操作有些不同的读者请自行进行修改)
yarn.resourcemanager.hostname master yarn.nodemanager.aux-services mapreduce_shuffle
-
切换至目录/root/app/Hadoop-3.2.0/sbin,在start-dfs.sh,stop-dfs.sh文件头部加入下面的内容
HDFS_DATANODE_USER=root
HADOOP_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root -
依旧是在该目录下,在start-yarn.sh,stop-yarn.sh文件头部加入=下面的内容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
保存快照3
部署
设置SSH免密码登录
- 打开/etc/hostsname(
vi /etc/hostname
),将里面的内容修改为master
- 打开/etc/hosts(
vi /etc/hosts
),在下方添加一行192.168.174.200 master
(注意IP和主机名间有一个空格)
- 输入
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
,于~/.ssh/id_dsa创建一个无密码的公钥 -
输入
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
,将公钥id_dsa.pub添加进keys
格式化
-
输入
hadoop namenode -format
格式化namenode启动
- 输入
start-dfs.sh
- 输入
start-yarn.sh
- 如果上面的两条命令运行不了,说明你的PATH中没有配置hadoop/sbin目录,请自行去etc/profile修改
-
输入
jps
查看进程,如果你上面的操作都没有问题,那么你就会显示一共6个进程,这代表你成功了,如果少了,请仔细检查有没有步骤操作失误或遗忘操作某些步骤(特别是防火墙)
测试
访问网址
- 访问 192.168.174.200:9870 (3.1.0之前端口号是50070)
-
花絮
- 这篇文章诞生于一个神奇的实验文档.....那篇文档实在过于意识流,以至于我看着部署Hadoop的时候硬是部署到凌晨2点才解决,而且我当时偷工减料了....所以我才重新写一篇符合实验实际规定的教程
- 事实上,我第一遍写这个实验的时候使用的是Hadoop3.0.0(这就是偷工减料的地方),在3.0.0以及之前版本中的WebUI访问端口是50070.........于是我被这玩意从9点钟坑到10点钟......
- 原本还想写个openstack部署教程的,但是我想起来openstack的部署纯粹是时间长,过程并没有什么尿点,还是算了吧,如果有同学问到我再重新写一篇查漏补缺的文章出来充数吧
- 找头图找了半小时,奥里给!
参考
参考来源
- Centos设置静态IP https://blog.csdn.net/aafeiyang/article/details/81533542
- CentOS 7 + Hadoop3.0.0 搭建伪分布式集群 https://www.cnblogs.com/thousfeet/p/8618696.html
- Centos7卸载自带jdk https://blog.csdn.net/hui_2016/article/details/69941850
3 comments
南哥哥好棒棒
(´இ皿இ`)