1. 前言
本文搭建了一个由三节点(master、slave1、slave2)构成的Hadoop完全分布式集群,并通过Hadoop分布式计算的一个示例测试集群的正确性。
2. 基础集群的搭建
目的:获得一个可以互相通信的三节点集群
使用VMware安装master节点(稍后其他两个节点可以通过复制master节点的虚拟机文件创建)。
三个节点存储均为30G默认安装,master节点内存大小为1GB,单核,slave节点内存大小1GB,单核
3. 集群网络配置
本文中的集群网络环境配置如下:
ubuntu1内网IP:192.168.186.101
ubuntu2内网IP:192.168.186.102
ubuntu3内网IP:192.168.186.103
4. 集群SSH免密登陆设置
4.1 创建master用户
为三个节点分别创建相同的用户master,并在以后的操作均在此用户下操作,操作如下:
$su -
#useradd -m master
#passwd master
为hadoop添加sudo权限
#visudo
在该行root ALL=(ALL) ALL下添加master ALL=(ALL) ALL保存后退出,并切换回hadoop用户
#su master
注意事项:三个节点的用户名必须相同,不然以后会对后面ssh及hadoop集群搭建产生巨大影响
4.2 Host文件设置
为了不直接使用IP,可以通过设置hosts文件达到ssh slave1这样的的效果(三个节点设置相同)
$sudo vim /etc/hosts
在文件尾部添加如下行,保存后退出:
192.168.186.101 ubuntu1
192.168.186.102 ubuntu2
192.168.186.103 ubuntu3
4.3 ssh设置
设置master节点和两个slave节点之间的双向ssh免密通信,下面以master节点ssh免密登陆slave节点设置为例,进行ssh设置介绍(以下操作均在master机器上操作):
首先生成master的rsa密钥:$ssh-keygen -t rsa
设置全部采用默认值进行回车
将生成的rsa追加写入授权文件:$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
给授权文件权限:$chmod 600 ~/.ssh/authorized_keys
进行本机ssh测试:$ssh master正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码
将master上的authorized_keys传到slave1
sudo scp ~/.ssh/authorized_keys master@ubuntu2:~/.ssh/
退出slave1:$exit
进行免密ssh登陆测试:$ssh ubuntu2
5. Java安装
目的:hadoop是基于Java的,所以要安装配置Java环境(三个节点均需要操作,以下以master节点为例)
配置JavaPATH和Java_HOME
export JAVA_HOME=/opt/softwares/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:
6.Hadoop HDFS 安装
6.1 Hadoop的masetr节点配置
配置hadoop的配置文件core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves(都在~/hadoop/etc/hadoop文件夹下)
$cd ~/hadoop/etc/hadoop
$vim core-site.xml其他文件相同,以下为配置文件内容:
core-site.xml
<configuration>
<!-- 指定HDFS namenode的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ubuntu1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/softwares/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>ubuntu1:50090</value>
</property>
</configuration
hadoop-env.sh
export JAVA_HOME=/opt/softwares/java/jdk1.8.0_191
配置vim /etc/profile
export JAVA_HOME=/opt/softwares/java/jdk1.8.0_191
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
#Zookeeper
export ZOOKEEPER_HOME=/opt/softwares/zookeeper/zookeeper-3.4.6
#Hadoop
export HADOOP_HOME=/opt/softwares/hadoop/hadoop-2.9.2
#PATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
7. Hadoop Namenode格式化
hdfs namenode -format (ubuntu1)
start-dfs.sh
8. 启动和关闭Hadoop HDFS
8.1 启动HDFS
启动hadoop Hdfs进程
start-dfs.sh
启动hadoop namenode进程
hadoop-daemon.sh start namenode
启动hadoop datanode进程
hadoop-daemon.sh start datanode
启动hadoop Secondarynamenode进程
hadoop-daemon.sh start secondarynamenode
8.2 关闭HDFS
关闭hadoop Hdfs进程
stop-dfs.sh
关闭hadoop namenode进程
hadoop-daemon.sh stop namenode
关闭hadoop datanode进程
hadoop-daemon.sh stop datanode
关闭hadoop Secondarynamenode进程
hadoop-daemon.sh stop secondarynamenode