hdfs完全分布式的安装
完全分布式的安装
1、集群规划
组件 PC1 PC2 PC3
HDFS Namenode SecondaryNamenode
Datanode Datanode Datanode
Yarn RecourceManager
Nodemanager Nodemanager Nodemanager
Histrory HistroryServer
2、基本环境准备
2.1系统和软件【3台】
CentOS6.5 hadoop 2.5.0 jdk1.70—67
2.2配置IP和DNS(root)
配置静态IP
DNS
//检查主机映射
$cat /etc/hosts
//检查主机名
$cat/etc/sysconfig/network
//检查IP和DNS
$cat /etc/sysconfig/network-scripts/ifcfg-eth0
2.3关闭防火墙 (3台) (root)
#service iptables stop
#chkconfig iptables off
检查:
$sudo service iptables status
iptables:Firewall is not running.
$sudo chkconfig --list | grep iptables
0:off 1:off 2:off 3:off 4:off 5:off 6:off
关闭Linux安全子系统
#vi /etc/sysconfig/selinux
2.4创建相同普通用户名和密码 【3台】
#useradd user
#echo 123456 | passwd --stdin user
2.5配置主机映射 【三台都需要需要添加】
#vi /etc/hosts
192.168.7.9 vampire01
192.168.7.10 vampire02
192.168.7.11 vampire03
2.6卸载自带的jdk
#rpm -qa | grep jdk
# rpm -e --nodepstzdata-java-2012j-1.el6.noarch
# rpm -e --nodepsjava-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e --nodepsjava-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
配置Java环境变量
#vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
生效配置
source/etc/profile
检查Java环境变量
java-version
javaversion "1.7.0_67"
Java(TM) SE Runtime Environment (build1.7.0_67-b01)
二、配置NTP服务
*.把PC1作为整个集群的时间同步服务器
*.集群中所有其他服务器都来这台服务器PC1同步时间
1.检查每台服务器所在的时区
$ date -R
Thu,23 Mar 2017 11:13:57 +0800
如果不是+0800,如要通过如下命令调整
#rm -rf /etc/localtime ---如果时区不是+0800
#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.安装ntp服务
#rpm -qa | grep ntp --查看ntp软件包是否已安装
ntp-4.2.6p5-1.el6.centos.x86_64
ntpdate-4.2.6p5-1.el6.centos.x86_64
#yum -y install ntp --如果没有那就需要安装ntp
3.修改ntp的配置文件(PC1)
#vi /etc/ntp.conf
去掉第18行的# 修改成自己的网段
restrict192.168.7.0 mask 255.255.255.0 nomodify notrap
注释掉以下几行(22行)
#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
CentsOS6.4 去掉注释第35 36行
CentsOS6.5 去手动添加以下内容
server 127.127.1.0 #localclock
fudge 127.127.1.0 stratum 10
4、同步服务器的时间(PC1)
# ntpdate cn.pool.ntp.org -->操作这一步时关闭ntp服务
23 Mar 11:36:56 ntpdate[26856]: step timeserver 173.255.246.13 offset -12.240613 sec
5、启动ntp服务(默认式开始)PC1 root用户操作
# service ntpd start
# chkconfig ntopd on
$ sudo chkconfig --list | grep ntpd
$ sudo ntpdate 202.120.2.101
9Jun 15:27:49 ntpdate[2689]: the NTP socket is in use, exiting //ntpd一旦开启就不能手动同步时间
6、如果另外两台的ntp的进程开启,那么需要关闭
#service ntpd stop
#chkconfig ntpd off
7.第2、3台向第一台同步时间
#ntpdate vampire01
16Feb 17:43:27 ntpdate[2554]: adjust time server 192.168.7.9 offset -0.001412 sec
8.制定周期性时间同步计划任务(PC2、PC3定时向PC1手动同步时间)
在PC2 PC3每10分钟同步一次时间
#crontab -e
*/10 * * * * /usr/bin/sudo /usr/sbin/ntpdate vampire01
[注意]:如果确实无法向第一台同步时间,请在交互窗口(可以同时设置3台时间)执行手动设置时间
#date -s "11:48:00 2017/3/23"
三、配置SSH免**登录
使用ssh登录的时候不需要用户名密码
$sbin/start-dfs.sh
(PC1~PC3)
$ssh-******
* 回车,生产当前主机的公钥和私钥(需要确认和输入密码)
//分发**(要向3台都发送)
$ssh-copy-id vampire01
$ssh-copy-id vampire02
$ssh-copy-id vampire03
分发完成之后会在用户主目录下.ssh目录生成以下文件
$ ls .ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
测试失败,需要先删除.ssh目录,重做一遍
四、安装Hadoop(有8个文件需要配置,暂时三台所有的配置一致,配一台,然后拷贝到另外两台)
1.下载上传到Linux并解压hadoop的.tar.gz
$ tar -zxf hadoop-2.5.0.tar.gz -C/opt/modules/
2.删除${HADOOP_HOME}/share/doc
$ rm -rf doc/
3.配置java环境支持在${HADOOP_HOME}/etc/hadoop
在hadoop-env.sh mapred-env.sh yarn-env.sh中配置
exportJAVA_HOME=/opt/modules/jdk1.7.0_67
4.配置slaves(集群中所有的主机)
vampire01
vampire02
vampire03
5.=======core-site.xml===
<!--指定第一台作为NameNode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://vampire01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data</value>
</property>
=============hdfs-site.xml==========
<!-- 分布式副本数设置为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode主机名 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>vampire02:50090</value>
</property>
<!-- namenode的web访问主机名:端口号 -->
<property>
<name>dfs.namenode.http-address</name>
<value>vampire01:50070</value>
</property>
<!-- 关闭权限检查用户或用户组 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
=================mapred-site.xml=======
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>vampire01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>vampire01:19888</value>
</property>
================yarn-site.xml======
<property>
<name>yarn.resourcemanager.hostname</name>
<value>vampire03</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>
===============================
【注意事项】:
1.slaves中配置集群中所有的主机名
2.所有节点上的配置文件内容都是一样的(联盟模式例外)
3.要按照集群规划配置所属进程
五、(PC1)分发hadoop(已经配置好的)目录到其他两台(PC2和PC3)服务器上
scp -r PC1的hadoop目录(带路径) PC2:/要复制到的目录
$ scp -r /opt/modules/hadoop-2.5.0/ vampire02:/opt/modules/
$scp -r /opt/modules/hadoop-2.5.0/ vampire03:/opt/modules/
六、格式化Namenode
在PC1上的${HADOOP_HOME}/bin
$bin/hdfs namendoe -format
七、启动测试
【注意】
1.先将PC1的hadoop配置目录分发到PC2和PC3
2.保证3台上的配置内容一模一样
3.先确保将3台之前残留的data 和 logs删除掉
4.最后格式化