hadoop完全分布式搭建的总结

重点内容 通过自己对hadoop平台的几次搭建,从中总结了一下自己的安装过程以及遇到的一些坑,希望对看到此文章的人有所帮助。同时也算是对自己所学知识的总结,其中有什么不足之处希望各位指正。

系统环境准备
1.网卡 网关 设置 [root][四台]
编辑文件
# vi /etc/sysconfig/network-scritps/ifcfg-eth0
修改一下内容
ONBOOT=yes #开机启动
BOOTPROTO=static #静态IP
IPADDR=192.168.xx.xx #设置IP地址
GATEWAY=192.168.xx.2 #设置网关
NETMASK=255.255.255.0 #子网
DNS1=192.168.xx.2
DNS2=202.2.209.5
2.修改主机名 [root][四台]
# vi /etc/sysconfig/network
修改
HOSTNAME=master
集群主机命名(不要使用下划线)
master
work1
work2
work3
3.创建用户 [root][四台]
添加用户
# useradd hadoop
修改密码
# echo hadoop | passwd –stdin hadoop
4.防火墙、selinux –> 默认端口 22 [root][四台]
# service iptables stop #关闭防火墙
# chkconfig iptables off #关闭开机启动
修改配置文件
# vi /etc/sysconfig/selinux
SELINUX=enforcing
改成
SELINUX=disabled
5.主机名映射 [root][四台]
修改文件
# vi /etc/hosts
在最后加上
192.168.xx.xx master(work*)
6.JDK [root][四台]
先创建工作文件夹
# mkdir /opt/modules # 工作目录
# mkdir /opt/softwares # 存放软件工具
修改文件夹权限
# chown hadoop:hadoop /opt/modules
# chown hadoop:hadoop/opt/softwares
卸载系统自带JDK
# rpm -qa | grep -i java # 查找相关文件
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
# rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e –nodeps tzdata-java-2012j-1.el6.noarch
# rpm -e –nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
安装JDK
解压
# tar zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
配置环境变量
# vi /etc/profile
# JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
(1,2,5三步设置是用来hadoop服务进程间的通信,其他的相信大家应该都知道是干嘛的,在这就不提了)

集群搭建:
1.配置NTP时间服务器
** 把master这台服务器配置为时间服务器
** 然后集群内其他服务器都来同步这台服务器的时间
** 目的: 集群内部所有服务器时间一致,这是很关键的。
–> 同步时间 [root] [master]
# ntpdate s2m.time.edu.cn
15 Dec 14:13:25 ntpdate[4978]: step time server 202.112.7.13 offset 55371.954291 sec
(同步时间的时候可能会遇到无法同步的坑,我出现这个问题的时候是将/etc/sysconfig/network-scritps/ifcfg-eth0文件中的DNS1改成了8.8.8.8,当然这不是通用的解决办法,由于本人学习较浅,并不知道这个问题的根本原因)
–> 修改ntp配置文件 [root] [master]
# vi /etc/ntp.conf
####去掉下面这行前面的# ,并把网段修改成自己的网段
restrict 192.168.17.0 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
–> 重启ntp服务 [root] [master]
# service ntpd start
# chkconfig ntpd on
–> 同步时间 [root][work1、work2、work3]
** 去同步master这台时间服务器时间
# service ntpd stop
# chkconfig ntpd off
# ntpdate master –去第一台服务器同步时间
25 Aug 15:16:47 ntpdate[2092]: adjust time server 192.168.17.** offset 0.311666 sec
制定计划任务,周期性同步时间
# crontab -e
/10 * * * /usr/sbin/ntpdate master
[分 时 日 月 星期]
# service crond restart

SSH无密钥登陆
master –> master
work1
work2
work3
work1 –> work1
master
work2
work3(work1的公钥复制出来是因为我把work1作为了secondarynamenode,如果你使用了HA的话需要把另一台namenode的公钥复制给其他结点)
[master/work1]
生成密钥 一直回车
$ ssh-keygen -t rsa
将公钥复制给
$ ssh-copy-id master
$ ssh-copy-id work1
$ ssh-copy-id work2
$ ssh-copy-id work3

配置JDK [work1/work2/work3]
创建文件夹
# mkdir /opt/modules
# mkdir /opt/softwares
修改权限
# chown hadoop:hadoop /opt/modules/
# chown hadoop:hadoop /opt/softwares/
将master上的JDK复制到
work1/work2/work3
$ scp -r modules/jdk1.7.0_67/ work1:/opt/modules
$ scp -r modules/jdk1.7.0_67/ work2:/opt/modules
$ scp -r modules/jdk1.7.0_67/ work3:/opt/modules

hadoop配置
1.删除hadoop/data
$ rm -rf data/
2.hadoop配置文件

1.core-site.xml
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:8020</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/modules/hadoop-2.5.0/data</value>
</property>
2.hdfs-site.xml
副本个数
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
secondaryNameNode服务器
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>work1:50090</value>
</property>
NameNode服务器
<property>
    <name>dfs.namenode.http-address</name>
    <value>master:50070</value>
</property>
3.slaves
    制定那些服务器是dataNode节点
work1
work2
work3
4.yarn-site.xml
配置resourceManager服务器
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>86400</value>
</property>
5.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>
6.创建data文件夹
    $ mkdir data
7.删除hadoop/share/doc
    $ rm -rf /opt/modules/hadoop-2.5.0/share/doc/
8.将配置好的Hadoop复制到其他三台服务器
$ scp -r hadoop-2.5.0/ work1:/opt/modules
$ scp -r hadoop-2.5.0/ work2:/opt/modules
$ scp -r hadoop-2.5.0/ work3:/opt/modules
8.启动
    格式化 [master]
    $ bin/hdfs namenode -format
    启动 [master]
    $ sbin/hadoop-daemon.sh start namenode
    $ sbin/yarn-daemon.sh start resourcemanager
    启动 [work1]
    $ sbin/hadoop-daemon.sh start secondaryNamenode
    $ sbin/hadoop-daemon.sh start datanode
    $ sbin/yarn-daemon.sh start nodemanager
    启动 [work2]
    $ sbin/hadoop-daemon.sh start datanode
    $ sbin/yarn-daemon.sh start nodemanager
    启动 [work3]
    $ sbin/hadoop-daemon.sh start datanode
    $ sbin/yarn-daemon.sh start nodemanager
    第二种方式启动
    $ sbin/start-all.sh
    $ sbin/stop-all.sh  
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页