Hadoop-3.2.0 环境搭建

工作环境:CentOS7
工作时间:2019/02/17-2019/02/20
安装路径:/opt/hadoop-3.2.0/
注:本文在没有Linux和服务器集群的基础之上自行摸索,所以可能存在很多纰漏。如果想学习Hadoop-3.2.0分布式的搭建方法,可以完全参照2.7版本的搭建方法,唯一的不同是在指定datanode的文件从3.x版本开始从slave改为worker。

实验室有四台服务器,分别为数据服务器,GPU服务器和两台网络服务器。除数据服务器外,每台服务器配有两块网卡,分别是*.3..2.*的ip地址。

选择GPU服务器作为NameNode控制端,一个网络服务器作为SecondaryNameNode(防止NameNode宕机备用的控制端),其余的服务器作为DataNode作为数据储存端。服务器之间的数据传输采用*.3.的IP,用户与集群Master之间传输数据采用.2.*通讯。集群架构如下图所示:

hadoop本地传服务器 部署hadoop的服务器_服务器

流程:

  1. 免密登陆ssh设置
    首先测试ssh,发现集群中已经设置好了ssh。
    修改每个主机的/etc/hosts,加入以下内容:
{IP47} server47
{IP48} server48
{IP49} server49
{IP45} server45

设置Namenode免密登录,生成server47的秘钥,并将公钥添加到其他3台服务器上:

生成master(server47)公钥
# ssh-keygen -t rsa 
将公钥追加到root用户的授权keys中。 
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
修改授权keys文件的权限为600 
# chmod 600 ~/.ssh/authorized_keys
拷贝Namenode上的公钥文件 ~.ssh/id_rsa.pub到Datanode上。
# scp {IP47}:~/.ssh/id_rsa.pub ~
随后将公钥加入Datanode许可中
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

在从49回到47时报错,修改了~/.ssh/konwn.hosts,将其中的47删除,重新建立连接。
至此,45可以免密钥登陆其他服务器。同样的,为SecondaryNamenode对2个Datanode设置免密登录。

  1. 关闭防火墙
    永久性生效
    开启:chkconfig iptables on
    关闭:chkconfig iptables off
    即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop
  2. 下载hadoop
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

随后将文件解压到/opt

  1. 修改系统环境变量
    将HADOOP_HOME 和相关路径添加到/etc/profile中。随后source /etc/profile更新环境变量,将JAVA_HOME=/usr/java/jdk1.8.0_181添加到…/etc/hadoop/ hadoop_env.sh中。同时修改4台服务器。
  2. 设置Hadoop Daemons参数
    修改/opt/hadoop-3.2.0/etc/hadoop/core-site.xml,添加如下内容(设置一个NameNode URI,随意设置)
<property>
 	  	<name>fs.defaultFS</name>
    	<value>hdfs://server47:9000</value>
	</property>

修改/opt/hadoop-3.2.0/etc/hadoop/hdfs-site.xml。增加Secondarynamenode;设置Datanode文件存储 位置。Datanode的数据被存储在/data1/hadoop中。
添加如下内容:

<property>
			<name>dfs.namenode.secondary.http-address</name>
    		<value>server48:50090</value>
	</property>
	<property>
		<description>DataNode上文件数据块的存放目录</description>
		<name>dfs.datanode.data.dir</name>
		<value>/data1/hadoop</value>
	</property>

可以设置其他参数比如文件复制数量,空余空间等。

  1. 添加workers(Datanode)参数
    修改/opt/hadoop-3.2.0/etc/hadoop/workers
    添加如下内容:
{IP49}
{IP45}

表示该IP地址为Datanode的IP地址。可以将48加入,使得48同时成为Datanode和Secondarynamenode。

修改上述内容并重启Hadoop之后,需要将文件储存地址中的VERSION文件删除。
如,namenode中路径为:/tmp/hadoop-root/dfs/name/current。否则新的datamnode将无法与namenode匹配。将安装文件分配给其他三个服务器.

  1. 修改启动和关闭文件
    修改如下文件
vi /opt/hadoop-3.2.0/sbin/start-dfs.sh
vi /opt/hadoop-3.2.0/sbin/stop-dfs.sh

在开头添加:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

如果需要使用其他启动和关闭文件,需要修改其他文件。

  1. 启动
    第一次启动,需要格式化namenode配置:
hdfs namenode -format

启动命令:

start-dfs.sh

注:如果修改架构(比如增加Datenode等操作),需要删除所有服务器上的clusterID。Namenode在/tmp/hadoop-root/文件夹中
Datanode 在/data1/文件夹中

随后可以通过访问http://{IP47}:9870可视化了解架构情况。只能打开Namenode的网站。

目前两台服务器中挂载点/data1下的大小分别问99.65TB和45.28TB,其总和为Hadoop的总容量。

hadoop本地传服务器 部署hadoop的服务器_服务器_02

  1. 测试上传下载:
  2. 总结
    安装路径:/opt/hadoop-3.2.0
    Namenode和Secondarynamenode文件存放位置:/tmp/hadoop-root
    Datanode数据文件存放位置:/data1/hadoop