5.分布式集群环境

1.虚拟机VMware Tools安装:

安装VMWare Tools非常简单,右键一个虚拟机,选择“安装VMware Tools” (其实,这时候就将VMware Tools安装包加载到光驱了) 。

以root用户登录该台服务器。将光驱挂载到任一目录下(我这里使用 /mnt):

mount /dev/cdrom /mnt

这时候,在 /mnt 目录可以看到文件 “VMwareTools-10.0.0-2977863.tar.gz”。

由于,我们要将该压缩文件解压,而/mnt目录当前挂载的是光驱,是不可写的,所以要将该文件拷贝到其他目录(我们就使用/tmp目录即可)。

cp VMwareTools-10.0.0-2977863.tar.gz /tmp/

cd /tmp

tar zxf VMwareTools-10.0.0-2977863.tar.gz

解压完成后,进入vmware-tools-distrib目录 ,执行脚本 vmware-install.real.pl 

perl vmware-install.pl

后边,就一路使用默认项,回车,回车即可完成安装了。

安装完成后重启虚拟机。


2.分布式集群硬件规划和系统环境准备:

namenode建议使用raid1/raid5,datanode不建议使用raid。

1. Hadoop集群实验环境规划:

目前为止,我们需要在三台集群环境上规划我们的现有的Hadoop角色,我们需要设计下面的这些角色都安装到哪台服务器上:

HDFS :  namenode 、 datanode 、 secondarynamenode

YARN : resourcemanager   nodemanager

HISTORY:  historyserver

2. 角色安装规划表:

Hadoop角色安装规划

如果我们需要安装更多的角色,或者我们有更多的主机,也可以按照上表的方式来进行规划,然后按照这张表来进行环境的安装搭建。下面我们按照上表的配置来就行环境的搭建。

3. 准备系统环境:

注意:以下4个步骤的操作,需要在三个服务器上分别执行。

(1)关闭三台服务器的selinux和防火墙。

该操作需要使用root用户执行。

a). 关闭selinux,需要修改配置文件:

# vi /etc/sysconfig/selinux

修改配置:

SELINUX=disabled

b). 关闭防火墙:

修改后一次生效:

# service iptables stop

下次重启时也生效:

# chkconfig iptables off

(2)固定主机名:

我的三台主机名分别是 :

hadoop-senior01.pmpa.com

hadoop-senior02.pmpa.com

hadoop-senior03.pmpa.com

需要修改文件:

# vi /etc/sysconfig/network

修改下边一行:

HOSTNAME=hadoop-senior01.pmpa.com

(3)添加hosts文件:

修改/etc/hosts文件,添加下边内容:

192.168.8.128    hadoop-senior01.pmpa.com

192.168.8.129    hadoop-senior02.pmpa.com

192.168.8.130    hadoop-senior03.pmpa.com

(4) 在三个服务器上,都新建用户 natty:

# useradd natty

# echo 123456 | passwd --stdin natty


3.NTP时间同步:

NTP代表 Network Time Protocal , 也就是同步互联网上的时间服务器的时间。我们把第一台服务器hadoop-senior01.pmpa.com作为NTP服务器的Server端,其余两台服务器同步这个服务器的时间。

注意:该项操作需要使用root用户,但是在一台服务器上做即可,其他服务器同步这台服务器,我们在hadoop-senior01上做。

(1)修改服务器的时区

如果操作系统在安装时,选择的不是上海的时区,要首先修改成shanghai时区,否则时间同步会失败。先将原来的时区文件(/etc/localtime)改名备份:

mv /etc/localtime /etc/localtime_bak

再创建一个软链接文件,指向上海的时区文件:

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

(2)同步服务器的时间:

使用ntpdate命令来同步时间。选择亚洲时间服务器来同步时间:

# ntpdate asia.pool.ntp.org

把当前时间写入硬件BIOS:

# hwclock -w

(3)修改NTP配置文件:

关于NTP配置文件的详细介绍,可以参考下链接:Linux NTP配置详解

ntp配置文件的位置在 /etc/ntp.conf

a. 去掉下边这行的注释,并改成自己机器IP的网段:

该行用来控制相关权限,语法为: restrict IP地址 mask 子网掩码 参数  。

其中,nomodify notrap 都是参数。

nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。

restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap

b. 下面3行加上注释:

这三行原本的作用是设定NTP主机来源,由于我们将hadoop-senior01设定为了NTP Server端,所以这几行都注释掉。

#server 0.centos.pool.ntp.org

#server 1.centos.pool.ntp.org

#server 2.centos.pool.ntp.org

以下两行去掉注释:

如果无法与上层ntp server通信以本地时间为标准时间。

server  127.127.1.0    # local clock

fudge  127.127.1.0 stratum 10

(4)修改nptd服务配置:

重启nptd服务:

# service ntpd restart

设置ntpd服务,开机后启动(默认是开机后不启动ntpd服务):

# chkconfig ntpd on

(5)设置hadoop-senior02和hadoop-senior03两个服务器,每隔5分钟向hadoop-senior01同步一次时间,使用crontab来实现。

# crontab -e

*/10 * * * * /usr/sbin/ntpdate hadoop-senior01.pmpa.com


4.SSH无秘钥登录:

注意:该项操作,需要使用natty用户进行。

1. 使用SSH无秘钥登陆的作用:

(1)方便使用scp命令在 不同节点间拷贝文件;

(2)按模块启动服务, start-dfs.sh   start-yarn.sh。

2. 配置无秘钥登陆:

配置hadoop-senior01可以无秘钥登陆 hadoop-senior01、hadoop-senior02、hadoop-senior03。在hadoop-senior01上执行:

$ ssh-keygen -t rsa

执行后,不输入任何内容,一直回车就可以。

下面步骤,将上一步在hadoop-senior01上生成的公钥copy到hadoop-senior02和hadoop-senior03上。第一次需要输一次密码。

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

在hadoop-senior02和 hadoop-senior03上重复上边的步骤。


5.分布式环境搭建和测试启动:

1. 在02和03机器上,创建/opt/modules目录,并赋权限(跟01保持一致)。

# mkdir /opt/modules

# chown -R natty:natty /opt/modules/


2. 在02和03上配置环境变量

# vi /etc/profile

把java环境变量的配置复制到02和03的/etc/profile文件中。


3. 拷贝java安装目录到02和03服务器:

$ scp -r /opt/modules/jdk1.7.0_67/ [email protected]:/opt/modules/


4. 修改 hadoop的配置文件:

需要修改以下4个组件:

core-site.xml

hdfs-site.xml

yarn-site.xml

mapred-site.xml

datanode在$HADOOP_HOME/etc/hadoop/slaves 文件中配置。把所有作为datanode的节点的主机名列在这个文件中就可以。

slaves


5. 拷贝一个配置好的节点的haoop目录内容,到其他2个节点上。

在这里,由于我之前配置了伪分布式模式,在hadoop-senior01机器上,所以将hadoop-senior01配置好的内容,直接scp到hadoop-senior02和hadoop-senior03上。


$ scp -r hadoop-2.5.0/ [email protected]:/opt/modules/ ; scp -r hadoop-2.5.0/ [email protected]:/opt/modules/


6.删除02和03机器上已经安装好的java(操作系统默认安装的)

切换到root用户,查看已经安装的版本:

# rpm -qa | grep java

删除这些已经安装的java,进而使用我们安装jdk 1.7 

# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64 tzdata-java-2012j-1.el6.noarch java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64

执行环境变量(当然重启系统也是可以的):

# source /etc/profile


7.  格式化hdfs:

$ bin/hdfs namenode -format


8. 启动hdfs、yarn 和 jobhistory组件:

根据在文章最开始时候,我设计的安装规划表,namenode是安装在hadoop-senior01上的,所以启动hdfs需要在hadoop-senior01上执行;ResourceManager是安装在hadoop-senior02上的,所以在hadoop-senior02 上启动yarn。 jobhistoryserver是在hadoop-senior03上安装的,jobhistory启动在hadoop-senior03上。

在第一台服务器上启动hdfs:

$ sbin/start-dfs.sh

在第二台服务器上启动yarn(配置的resourcemanager在hadoop-senior02上)

$ sbin/start-yarn.sh

在第三台服务器上启动 jobhistory 服务:

$ sbin/mr-jobhistory-daemon.sh  start historyserver


9.测试集群有效性:

可以执行一些hdfs的命令来进行测试:

$ bin/hdfs dfs -mkdir /input

$ bin/hdfs dfs -ls /

$ bin/hdfs dfs -put etc/hadoop/core-site.xml /input/

$ bin/hdfs dfs -text /input/core-site.xml

运行 yarn上的mapreduce来测试:

$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input/core-site.xml /output01

$ bin/hdfs dfs -text /output01/part*

修改windows本地的hosts文件(C:\Windows\System32\drivers\etc\hosts)添加映射,来用浏览器来测试:

HDFS访问页面(hdfs-site.xml):  http://hadoop-senior01.pmpa.com:50070/

YARN访问页面(可以进入yarn的管理页面,默认配置):http://hadoop-senior02.pmpa.com:8088   

在上一个页面,点击“History” 可以跳转到第三个服务器的地址。


5.分布式集群环境_第1张图片
yarn管理界面

点击了History直接跳转:


5.分布式集群环境_第2张图片
JobHistory服务器界面

你可能感兴趣的:(5.分布式集群环境)