天天看点

搭建Hadoop完全分布式环境

资料来源,阿里云大数据开发学习视频

分析:

1)准备3台客户机(关闭防火墙、静态ip、主机名称,hosts配置)

2)安装JDK

3)配置环境变量

4)安装Hadoop

5)配置环境变量

6)配置集群

7)单点启动

8)配置ssh

9)群起并测试集群

4.3.1虚拟机准备

4.3.2编写集群分发脚本xsync

1.scp(securecopy)安全拷贝

(1)scp定义:

scp可以实现服务器与服务器之间的数据拷贝。(fromserver1toserver2)

(2)基本语法

scp-r$pdir/[email protected]$host:$pdir/$fname

命令递归要拷贝的文件路径/名称目的用户@主机:目的路径/名称

2.rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更

新。scp是把所有文件都复制过去。

(1)基本语法

rsync-rvl$pdir/[email protected]$host:$pdir/$fname

命令选项参数要拷贝的文件路径/名称目的用户@主机:目的路径/名称

(2)需求分析:

(a)rsync命令原始拷贝:

rsync  -rvl  /opt/module  [email protected]:/opt/

(b)期望脚本:

xsync要同步的文件名称

(c)说明:在/home/hadoop/bin这个目录下存放的脚本,hadoop用户可以在系统

任何地方直接执行。

#!/bin/bash
#1获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi
#2获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1);pwd`
echopdir=$pdir
#4获取当前用户名称
user=`whoami`
#5循环
for((host=133;host<135;host++));do
  echo ------------------- hadoop$host --------------
  rsync -rvl $pdir/$fname [email protected]$host:$pdir
done
           

(b)修改脚本xsync具有执行权限

chmod 777  xsync

(c) 调用同步脚本

xsync/home/atguigu/bin

4.3.3集群配置

1.集群部署规划(hdfs初始化在Hadoop132,yarn启动在Hadoop133)

2-3 集群配置

HADOOP132 HAdoop133 HAdoop133
HDFS

DataNode

NameNode

DataNode

DataNode

SecondaryNameNode

YARN NodeManager

ResourceManager

NodeManger

NodeManager

2.配置集群(在Hadoop的etc/hadoop 里面)

(1)核心配置文件

配置core-site.xml

<configuration>

<!--指定HDFS中NameNode的地址-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop132:9000</value>

</property>

<!--指定Hadoop运行时产生文件的存储目录-->

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

</configuration>

(2)HDFS配置文件

配置hadoop-env.sh

export JAVA_HOME=/opt/jdk1.8.0_241

配置hdfs-site.xml

<configuration>

<!--指定HDFS副本的数量可省略,默认为3-->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<!--指定Hadoop辅助名称节点主机配置-->

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop134:50090</value>

</property>

</configuration>

(3)YARN配置文件

配置yarn-env.sh

export JAVA_HOME=/opt/jdk1.8.0_241

配置yarn-site.xml

<!--Reducer获取数据的方式-->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<!--指定YARN的ResourceManager的地址-->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop133</value>

</property>

3.在集群上分发配置好的Hadoop配置文件

xsync  /opt/module/hadoop-2.7.2/

4.3.4集群单点启动

(1)如果集群是第一次启动,需要格式化NameNode

4.3.4集群单点启动

(1)如果集群是第一次启动,需要格式化NameNode

(2)在hadoop132上启动NameNode

hadoop-daemon.sh start namenode

(3)在hadoop132、hadoop133以及hadoop134上分别启动DataNode

hadoop-daemon.sh start datanode

4.3.5SSH无密登录配置(集群群起准备)

(1)免密登录原理

搭建Hadoop完全分布式环境

(2)生成公钥和私钥:

进入.ssh 目录(在当前用户) ssh-keygen -t  rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id  hadoop132

ssh-copy-id  hadoop133

ssh-copy-id  hadoop134

还需要在hadoop132上采用root账号,配置一下无密登录到hadoop132、hadoop133、

hadoop134;

还需要在hadoop133上采用hadoop账号配置一下无密登录到hadoop132、hadoop133、

hadoop134服务器上。

4.3.6群起集群

1.配置slaves

vi  /opt/module/hadoop-2.7.2/etc/hadoop/slaves

加入以下内容

hadoop132

hadoop133

hadoop134

同步所有节点配置文件

xsync slaves

2.启动集群

(1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

(2)启动HDFS(hadoop 132) start-dfs.sh

(3)启动YARN(hadoop133) start-yarn.sh

搭建Hadoop完全分布式环境
搭建Hadoop完全分布式环境
搭建Hadoop完全分布式环境

与设计一样,打工告成.

本文章只对关键部分进行记录,具体的参考文件,原文件是存放在阿里云上面,

继续阅读