Hadoop详解(三):HDFS完全分布式环境搭建

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

猜你喜欢

转载自blog.csdn.net/qq_21125183/article/details/86578084