hadoop之集群搭建手把手教学01

虚拟机环境准备(克隆多台虚拟机)

1.更改子网

网络连接方式
虚拟机的子网ip是用来动态分配的,如192.168.1.0 动态分配的就都是192.168.1.x 网段下的
网关要和ip在同一网段下,(虚拟机和vmnet8虚拟网卡要在同一网段下),物理机的ip和网卡可以在不同网段下,物理机ping虚拟机要先通过vmnet8,由vmnet8与虚拟机通信
在这里插入图片描述

每台虚拟机网段都在192.168.1.x中
在这里插入图片描述
右键点击虚拟机,选择克隆
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.选择网卡

vi /etc/udev/rules.d/70-persistent-net.rules
删除eth0,把eth1改为eth0
在这里插入图片描述

3.修改网卡ip

vim /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR是上一步address的,如下
在这里插入图片描述

在这里插入图片描述

4.修改主机名

/etc/sysconfig/network
在这里插入图片描述

5.修改物理机和虚拟机的hosts映射

192.168.1.3 hadoop003
192.168.1.4 hadoop004
192.168.1.5 hadoop005
192.168.1.6 hadoop006
192.168.1.7 hadoop007
vim /etc/hosts虚拟机
C:\Windows\System32\drivers\etc物理机

6.关闭防火墙,关闭开机自启

chkconfig iptables off
在这里插入图片描述

7.重启

reboot

8.克隆完成

虚拟机和物理机互相ping
在这里插入图片描述
在这里插入图片描述

集群搭建

在各个机器上使用root用户在/opt目录下创建software(用于存放安装之前的压缩包)、module(用于存放解压后的程序)文件夹
在这里插入图片描述

7.安装jdk

解压

[root@hadoop003 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

配置path环境变量

[root@hadoop003 software]$  vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

使修改生效
source /etc/profile
测试jdk是否安装成功

[root@hadoop003 jdk1.8.0_144]# java -version

8.安装hadoop

解压

[root@hadoop003 software]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

配置path环境变量

[root@ hadoop003 hadoop-2.7.2]$  vi /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin

使修改生效

source /etc/profile

测试hadoop是否安装成功

[root @hadoop003 ~]$ hadoop version

9.配置集群

在这里插入图片描述四大块:
①hdfs
②yarn
③mapreduce
④从节点

配置方法

一,可以操作虚拟机挨个修改
二,可以在物理机通过notpad++修改,要去掉中文注释,会有乱码产生
物理机和虚拟机建立连接,双击下载到本地修改,ctrl+s保存自动上传到虚拟机
在这里插入图片描述

hdfs配置

配置Hadoop所使用Java的环境变量,告知hadoop我们jdk的安装目录/opt/module/hadoop-2.7.2/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

在这里插入图片描述
因为hdfs要启动namenode、datanode等进程,会产生pid,hadoop要把pid记录在某个位置,默认是放在/tmp下。这里修改pid文件存放位置:
/opt/module/hadoop-2.7.2/sbin/hadoop-daemon.sh
添加

export HADOOP_PID_DIR=/opt/module/hadoop-2.7.2/pid

在这里插入图片描述
核心配置文件:/opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml(hdfs的核心配置文件)

<!-- 指定HDFS中NameNode的地址,我们要在hadoop003上启动namenode进程 -->
	<property>
		<name>fs.defaultFS</name>
        <value>hdfs://hadoop003:9000</value> 
	</property>

	<!-- datanode是个进程,我们把数据交给它后,它会把数据存储到本地磁盘,这里指定存储到磁盘的位置-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
	</property>

在这里插入图片描述

hdfs配置文件 /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml

<!--副本数量-->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
<!--secondarynamenode辅助namenode工作,指定要在hadoop005上启动该进程-->
	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop005:50090</value>
    </property>

在这里插入图片描述

Yarn的配置

a) 修改/opt/module/hadoop-2.7.2/etc/hadoop/yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

在这里插入图片描述
Yarn的进程也会产生pid,修改pid文件存放位置:
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh
添加

export YARN_PID_DIR=/opt/module/hadoop-2.7.2/pid

在这里插入图片描述
b) 修改/opt/module/hadoop-2.7.2/etc/hadoop/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>hadoop004</value>
	</property>

在这里插入图片描述

mapreduce配置

a) 修改/opt/module/hadoop-2.7.2/etc/hadoop/mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

在这里插入图片描述
b) 修改/opt/module/hadoop-2.7.2/etc/hadoop/mapred-site.xml

<!-- 指定mr运行在yarn上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

在这里插入图片描述

从节点配置

要注意把该文件自带的localhost要删除。配置了3台机器,意味着可以在这3台机器上都可以启动datanode、nodemanager进程。
/opt/module/hadoop-2.7.2/etc/hadoop/slaves
hadoop003
hadoop004
hadoop005
在这里插入图片描述

10.安全拷贝

①/opt/module

[root@hadoop003 /]$ scp -r /opt/module/*  hadoop004:/opt/module
[root@hadoop003 /]$ scp -r /opt/module/*  hadoop005:/opt/module

②/etc/profile

scp /etc/profile hadoop004:/etc
scp /etc/profile hadoop005:/etc

需要source重新加载文件才能让path配置生效

source /etc/profile

集群启动

如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!)
在格式化时,要保证一切正常,不要出现错误、异常、或者提示让选择yes或者no,如果出现这些情况,把所有的配置检查一遍确认无误后,将hadoop安装目录下的data、pid、logs目录删除重新格式化。

[root@hadoop003 hadoop-2.7.2]$ hadoop namenode -format

整体启动,会挨个登陆到每台虚拟机上启动hdfs进程(ssh)

a) 整体启动/停止hdfs(在namenode节点启动)

sbin/start-dfs.sh
sbin/stop-dfs.sh

b) 整体启动/停止yarn (在resourcemanager节点启动)

sbin/start-yarn.sh
sbin/stop-yarn.sh

注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。如果不在一台机器上,则ResourceManger所在机器也需要配置到其他机器的ssh免密登录。

查看hdfs
Hdfs的5个进程启动完毕后,就可以查看了,hadoop给我们提供了一个web页面,供我们查看hdfs文件系统,访问地址:http://hadoop003:50070。注意该地址与namenode的通信地址不同,namenode的通信地址是hdfs://hadoop003:9000,

在这里插入图片描述
查看yarn
Yarn的web页面查看地址:http://hadoop004:8088/
在这里插入图片描述

SSH免密登陆

Ssh是一种协议, 用于不同主机之间的通信,我们可以使用ssh通信协议,在一台机器上去访问另外一台机器,例如 在hadoop003机器上执行ssh hadoop004,提示输入密码后就可以远程登录hadoop004了。

免密登陆原理

在这里插入图片描述
免密登陆流程:
在本台机器生成公钥和私钥,将公钥拷贝给要免密登陆的机器即可
在这里插入图片描述

操作

hadoop003,hadoop004都要生成秘钥分发到三台节点,为了nn,rm
要在.ssh目录下进行,在root的家目录下找到.ssh
默认是没有.ssh,需要先ssh hadoop004登录到一台节点上,才会生成
在这里插入图片描述
生成公钥和私钥

[root@hadoop003 .ssh]$ ssh-keygen -t rsa 

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

在这里插入图片描述
将公钥拷贝到要免密登录的目标机器上
[root@hadoop003 .ssh]$ ssh-copy-id hadoop003
[root@hadoop003 .ssh]$ ssh-copy-id hadoop004
[root@hadoop003 .ssh]$ ssh-copy-id hadoop005

集群时间同步

时间同步的方式:在集群中找一台机器,作为时间服务器,集群中其他机器与这台机器定时的同步时间,比如,每隔十分钟,同步一次时间。
在这里插入图片描述

(1) 时间服务器配置(必须root用户)

修改ntp配置文件

[root@hadoop003 桌面]# vim /etc/ntp.conf

修改内容如下
i. 修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
ii. 修改2(集群在局域网中,不使用其他的网络时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
iii. 添加3(当该节点丢失网络连接,依然可以作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
c) 修改/etc/sysconfig/ntpd 文件

[root@hadoop003 桌面]# vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

d) 重新启动ntpd

[root@hadoop003 桌面]# service ntpd status

ntpd 已停

[root@hadoop003 桌面]# service ntpd restart

正在启动 ntpd: [确定]
e) 开机自启:

[root@hadoop003 桌面]# chkconfig ntpd on

(2) 其他机器配置(必须root用户,同时注意,将其它机器的ntp服务停掉 service ntpd stop chkconfig ntpd off

一、 在其他机器配置10分钟与时间服务器同步一次

[root@hadoop004 hadoop-2.7.2]# crontab -e

编写脚本

*/10 * * * * /usr/sbin/ntpdate hadoop003

二、 修改任意机器时间

[root@hadoop004 root]# date -s "2017-9-11 11:11:11"

三、 十分钟后查看机器是否与时间服务器同步

[root@hadoop004 root]# date
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值