一、搭建分布式集群
三台主机:Master Worker1 Worker2
1.克隆虚拟机,至少3台达到分布式的效果
克隆完后,需分别配置网络和映射
2.新建一个目录搭建集群
mkdir app
3.解压Hadoop安装包和安装JDK
*-env.sh文件配置:
export JAVA_HOME=/opt/modules/jdk1.7.0_67
4.创建目录$ mkdir -p data/tmp
设置目录权限 sudo chown -R hadoop:hadoop app/
5.配置core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-2.5.0/data/tmp</value>
</property>
6.配置hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Worker2:50090</value>
</property>
7.配置slaves
IP地址 Master
IP地址 Worker1
IP地址 Worker2
8.配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Worker1</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
9.配置mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
10.删除Hadoop安装包下的share/doc目录,减少拷贝过程的时间
11.通过远程拷贝将安装主目录的配置文件信息分发到各个节点上去,分发前要在各个节点创建目录
scp -r hadoop-2.5.0/ Worker1:/opt/app/
scp -r hadoop-2.5.0/ Worker1:/opt/app/
在分发之前要在相应的主机上创建相应的目录,并设置权限
12.格式化namenode
$ bin/hdfs namenode -format
13.启动HDFS模块:
$ sbin/hadoop-daemon.sh start namenode 主节点启动
$ sbin/hadoop-daemon.sh start datanode 主节点启动、各个子节点启动
$ sbin/hadoop-daemon.sh start secondarynamenode 第二个子节点启动
14.查看集群的ID,集群的ID是唯一的,需要都相同
more data/tmp/dfs/data/current/VERSION
clusterID=CID-4541b2fa-73b5-4dcc-b2f4-e71382c695f3
clusterID=CID-4541b2fa-73b5-4dcc-b2f4-e71382c695f3
clusterID=CID-4541b2fa-73b5-4dcc-b2f4-e71382c695f3
15.测试HDFS文件系统创建、上传、读取
16.启动YARN模块
$ sbin/yarn-daemon.sh start resourcemanager 第一节点启动
$ sbin/yarn-daemon.sh start nodemanager 各个节点都启动
17.启动历史服务器
$ sbin/mr-jobhistory-daemon.sh start historyserver 主节点启动
二、配置ssh无秘钥登录
cd /home/hadoop/.ssh 进入到ssh目录
rm -rf ./* 删除目录下的所有文件
ssh-keygen -t rsa 生成公钥和私钥
ssh-copy-id Master 将公钥分发到各个节点
ssh Master 测试是否配置成功
三、集群时间同步
1、集群节点之间要求时间同步
2、在内网中,无法连接互联网,所以在集群中找一台机器作为时间服务器
3、集群中的其他所有机器都跟这台时间服务器进行时间同步
4、$ sudo rpm -qa | grep ntp
5、查看时间服务的服务
$ sudo service ntpd status
启动:$ sudo service ntpd start
6、设置开机启动时间服务器服务
$ sudo chkconfig ntpd on
7.修改配置文件
sudo vi /etc/ntp.conf
修改为自己的网段:
# Hosts on local network are less restricted.
#restrict IP地址 mask 255.255.255.0 nomodify notrap
将这三行打上#注释掉
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
将前面的注释去掉
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
修改完后重启服务:
$ sudo service ntpd restart
8.写Linux定时任务:每十分钟执行同步一次
crontab -e
##sync time
0-59/10 * * * * /usr/sbin/ntpdate Master
9.重启服务
service crond restart
10.执行时间同步
$ sudo /usr/sbin/ntpdate Master
11.同步系统与BIOS系统时间同步
$ sudo vi /etc/sysconfig/ntpd
添加: SYNC_HWCLOCK=yes
12.在启动服务之后的3-5分钟才能使用时间同步命令