Centos7-hadoop完全分布式搭建
准备
- 两部虚拟机,master,slave(我用的主节点master是Desktop模式的,子节点slave为了节省空间,装的Minimal模式的,但不影响)
- JDK
- Hadoop
master上安装JDK
下载java包
解压
tar -zxvf jdk-8u201-linux-x64.tar.gz
先创建文件夹java
mkdir -p /usr/java
移动文件到/usr/java
下
mv -v jdk1.8.0_201 /usr/java
添加环境变量
vi /etc/profile
找到java安装路径
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
更新环境变量
source /etc/profile
验证jdk
java -version
下载hadoop安装包
下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
下好后,将压缩包解压到目录/usr/local
下,并修改文件名,当然要在root权限下操作
tar -zxvf hadoop-2.9.2.tar.gz -C /usr/local
mv -v hadoop-2.9.2 hadoop
修改配置文件
hadoop配置涉及的文件有7个:core-site.xml
、hadoop-env.sh
、yarn-env.sh
、mapred-site.xml
、yarn-site.xml
、slaves
、hdfs-site.xml
,这些文件都在/usr/local/hadoop/etc/hadoop/目录
下
新建需要的文件
配置之前先在/usr/local/hadoop
下创建所需的文件
mkdir -p /usr/local/hadoop/hdfs/tmp
mkdir -p /usr/local/hadoop/hdfs/data
mkdir -p /usr/local/hadoop/hdfs/name
修改core-site.xml文件
这个是Hadoop的核心配置文件,需要配置两个属性:
-
fs.default.name
配置来Hadoop的HDFS系统的命名,位置为主机的9000端口 -
hadoop.tmp.dir
配置了Hadoop的临时文件的位置
添加以下代码:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hdfs/tmp</value>
</configuration>
修改hadoop-env.sh文件
该文件是Hadoop运行基本环境的配置,需要修改JDK的实际位置。。故在该文件中修改为JAVA_HOME值为本季安装位置:
export JAVA_HOME=/usr/java/jdk1.8.0_201
修改yarn-env.sh文件
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_201
修改mapred-site.xml
这个是MapReduce的相关配置,Hadoop2.x中没有mapred-site.xml文件,需要由mapred-site.xml.template复制的到
cp -v mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
添加以下代码:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
注意:master为自己主机名
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value> # namenode临时文件所存放的目录
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value> # datanode临时文件所存放的目录
</property>
<property>
<name>dfs.replication</name>
<value>3</value> #默认3
</property>
</configuration>
修改slaves文件
该文件里面保存有slave节点的信息,在slave文件里添加以下代码:
slave #有几个子节点,就添加几个,我这创了一个
修改/etc/hosts文件
该文件配置的是主机名与IP地址的映射。
192.168.144.143 master
192.168.144.144 slave
添加hadoop环境变量
vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
更新变量:source /etc/profile
hadoop version
配置SSH免密登录
主节点master和子节点slave都要配置
关闭防火墙
systemctl disable firewalld #关闭防火墙
reboot #重启
使用ssh-******产生公钥和私钥对
输入命令ssh-****** -t rsa
,连续按三次Enter健
ssh-copy-id将公钥复制到远程机器中
ssh-copy-id -i /root/.ssh/id_rsa.pub master #依次输入yes,root用户密码
ssh-copy-id -i /root/.ssh/id_rsa.pub slave
验证ssh是否能够无**登录
在master下输入ssh slave
,如图所示,配置成功
配置slave节点
设置固定IP地址
ifconfig -a # 查看当前ip地址
修改/etc/sysconfig/network-scripts/ifcfg-ens33
复制java文件
复制master上java文件到slave
scp -r /usr/java [email protected]:/usr
复制hadoop文件
复制master上hadoop文件到slave
scp -r /usr/local/hadoop [email protected]:/usr/local
配置环境变量
vim /etc/profile
添加以下代码:
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
更新环境变量
source /etc/profile
配置成功
配置ntp时间同步服务
NTP是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,提供高精准度的时间校正。Hadoop集群对时间要求很高,主节点和各从节点的时间都必须要同步。配置时间同步服务主要是为了进行集群间的时间同步。
安装NTP服务
在各节点安装NTP服务,执行命令:
yum install -y ntp
最终出现complete!,安装完成
设置master节点为NTP服务主节点
vi /etc/ntp.conf
注释掉以server
开头掉行,并添加以下代码:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
在slave节点中也同样配置ntp服务,修改slave节点中的ntp.conf
,注释掉以server开头的行,添加以下代码:
server master
启动NTP服务
1.在master节点执行命令:
service ntpd start & chkconfig ntpd on
2. 在slave上执行命令
ntpdate master
3. 在slave上执行命令:
service ntpd start & chkconfig ntpd on
永久开启时间同步
启动关闭集群
格式化
启动之前需要先格式化一下,在master上执行命令:
hdfs namenode -format
若出现一下画面,则格式化成功:
启动集群命令
在master上直接进入Hadoop安装目录
cd $HADOOP_HOME # 进入hadoop安装目录
sbin/start-dfs.sh # 启动HDFS相关服务
sbin/start-yarn.sh # 启动YARN相关服务
sbin/mr-jobhistory-daemon.sh start historyserver # 启动日志相关服务
或者直接执行命令:
start-all.sh
在主节点master和子节点slave上分别执行
jps
命令### 关闭集群命令
cd $HADOOP_HOME
sbin/stop-dfs.sh # 启动HDFS相关服务
sbin/stop-yarn.sh # 启动YARN相关服务
sbin/mr-jobhistory-daemon.sh stop historyserver # 启动日志相关服务
监控集群
HDFS监控
在自己电脑浏览器上输入网址:http://192.168.144.143:50070
,回车,便可看到HDFS的监控界面
1.Overview记录了NameNode的启动时间、版本号编译版本等一些基本信息
2.Summary是集群信息,提供了当前集群环境的一些有用信息,从图中可知所有DataNode节点的基本存储信息。
选择"Utilities"->"Browse the file system"菜单命令可以查看HDFS上的文件信息。
YARN监控
在浏览器的地址输入"http://master:8088",便可看到YARN的监控界面## 搭建完成!