环境准备
软件版本
-
电脑系统:macOS 10.14.6
-
虚拟机软件:Parallels Desktop15
-
Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso
-
CentOS 7 JDK版本:jdk1.8.0_162
-
Hadoop版本:hadoop-2.7.7
环境配置说明
-
电脑配置:MacBook Pro 13(8G + 256G)
-
三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)
-
三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)
-
三台虚拟机的用户名:lyh
操作说明
-
下面所有的操作,都是在root权限下进行的:
su root
进入root权限 -
下面所有的操作,都是用 Mac 的终端远程连接(ssh)三台 CentOS 7 进行的,这样会比较方便快捷
-
由于centos虚拟机网络环境没有本机好,所以这里采用的是本地下载好所需文件包,然后通过MacOS 终端上传到虚拟机,大家也可以采取直接从虚拟机上下载所需的文件包。
免密登录配置
vim 的安装
CentOS-7-Minimal
刚安装好,需要给三台主机都安装vim编辑器:
yum install vim -y
如果不确定vim是否安装成功,可以输入vim -h
查看是否有vim命令
host配置
-
开启虚拟机,默认是在
/home/lyh
目录下的,host配置文件在根目录下的etc
文件夹下,给三台虚拟机均进行配置。 -
注意,下面的host配置,一定要根据自己的主机名和ip进行配置,三台主机的配置均一样。
-
根目录下,输入:
vim ../../etc/hosts
,最后面添加如下内容:10.211.55.18 node1 10.211.55.19 node2 10.211.55.20 node3
关闭防火墙
三台主机都需要进行该配置。
-
查看防火墙状态
firewall-cmd --state
-
停止防火墙
systemctl stop firewalld.service
-
禁止防火墙开机启动
systemctl disable firewalld.service
-
关闭selinux
-
第一步:在
/home/lyh'
目录下,输入:vim ../../etc/selinux/config
-
注释掉
SELINUX=enforcing
,添加如下内容:SELINUX=disabled
也可以直接将enforcing修改为disabled。
-
-
配置所有各自服务器本身公钥和免密:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
-
将公钥追加到”authorized_keys”文件
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
-
免密登录公钥分发
每台主机,互相分发公钥,实现各个主机之间的免密登录。
说明:三台主机对应的IP
node1(10.211.55.18) node2(10.211.55.19) node3(10.211.55.20)
-
node1 分发给:node2、node3
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
-
node2 分发给:node1、node3
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
-
node3 分发给:node1、node2
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
-
-
免密登录配置,已经完成,可以进行测试
ssh node1 ssh node2 ssh node3
三台主机之间可以实现免密登录了
下载并配置JDK
下载JDK并上传到虚拟机
大家可以去到:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html ,选择自己需要下载的JDK版本,我这里下载的是 jdk-8u162-linux-x64.tar.gz,下载好后,通过终端,分别上传到三台虚拟机:
scp -r 本地下载好的JDK路径 虚拟机用户名@虚拟机ip:要上传到虚拟机的路径
如:下载好的JDK包在桌面,要上传到 lyh
用户的 /app
路径下,该用户的IP为 10.211.55.18
。
scp -r ~/Desktop/jdk-8u162-linux-x64.tar.gz lyh@10.211.55.18:/app
这里上传到虚拟机根目录的 app
文件夹下,app 文件夹是需要自己创建的。
解压JDK包并配置Linux环境变量
进入 app
文件夹(三台虚拟机都需要安装JDK)
-
解压JDK包
tar -zxvf jdk-8u162-linux-x64.tar.gz
-
创建为JDK软链接
ln -s jdk1.8.0_162 jdk
-
配置环境变量
在根目录
/
下,输入vim /etc/profile
,添加如下内容:# JAVA export JAVA_HOME=/app/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:. export PATH=${JAVA_HOME}/bin:$PATH
路径要根据自己的实际情况来更改,如我这里的是:/app/jdk
-
如果不能写入,说明没有前面没有进入root权限,请按下esc后,强制写入保存:
输入:
:w !sudo tee %
回车后,需要输入用户密码,以及输入字母
O
确认。然后退出:
:!q
-
使刚刚的配置生效
source /etc/profile
-
验证JDK安装是否完成
java -version
出现以下字眼说明安装成功了
java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
安装Hadoop-2.7.7
三台虚拟机都需要安装Hadoop-2.7.7
下载hadoop2.7.7并上传到虚拟机
下载地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/
选择hadoop-2.7.7.tar.gz进行下载,这里默认将文件下载到 ~/Desktop
,上传到虚拟机的 /app
目录下
分别上传到三台虚拟机:
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.18:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.19:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.20:/app
解压安装包并配置Linux环境变量
-
解压Hadoop安装包
tar -zxvf hadoop-2.7.7.tar.gz
-
为hadoop-2.7.7创建软链接
ln -s hadoop-2.7.7 hadoop
-
配置Linux环境变量
-
进入根目录
/
vim /etc/profile
-
添加如下内容
# HADOOP export HADOOP_HOME=/app/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
保存并退出,是写入的内容生效
source /etc/profile
-
-
检查是否安装成功
-
输入:whereis hdfs
输出:
hdfs: /app/hadoop-2.7.7/bin/hdfs.cmd /app/hadoop-2.7.7/bin/hdfs
-
输入:whereis start-all.sh
输出:
start-all: /app/hadoop-2.7.7/sbin/start-all.cmd /app/hadoop-2.7.7/sbin/start-all.sh
-
-
这时候说明安装成功了
Hadoop 配置
时间同步配置
三台虚拟机都需要安装。
yum install -y ntp
设置NTP服务开机启动
chkconfig ntpd on
查看ntp进程是否启动
ps aux | grep ntp
在node1进行文件配置
修改目录 ${HADOOP_HOME}/etc/hadoop 目录中的文件
cd ${HADOOP_HOME}/etc/hadoop
-
设置 hadoop-env.sh
-
编辑hadoop-env.sh文件,找到export JAVA_HONE,修改如下:
export JAVA_HOMT=/app/jdk
-
-
修改 core-site.xml 配置文件
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/app/hadoop/tmp</value> </property> </configuration>
-
修改 hdfs-site.xml 配置文件
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
-
将 mapred-site.xml.template 复制为文件名是 mapred-site.xml 的文件
cp mapred-site.xml.template mapred-site.xml
-
修改 mapred-site.xml 配置文件
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
修改 yarn-site.xml 配置文件
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- Site specific YARN configuration properties --> </configuration>
-
修改 slaves 文件,删除原有内容,修改为如下内容:
node2 node3
分发配置到 node2、node3 虚拟机
-
将
hadoop/etc
目录下的hadoop
文件夹分发给另外两台虚拟机cd ${HADOOP_HOME}/etc
scp -r hadoop lyh@node2:/app/hadoop/etc/
scp -r hadoop lyh@node3:/app/hadoop/etc/
初始化及启动
-
在此之前需要先下载openjdk-devel
yum install java-1.8.0-openjdk-devel.x86_64
-
在 node1 格式化 hdfs
hdfs namenode -format
-
启动Hadoop服务
-
启动HDFS:
start-dfs.sh
-
启动YARN:
start-yarn.sh
-
启动all:
start-all.sh
-
-
输入
jps
可以查看进程 -
关闭Hadoop服务
stop-all.sh