说明
目标
ip | zk | namenode | zkfc | journalnode | datanode |
---|---|---|---|---|---|
192.168.10.128(node1) | y | y | y | y | - |
192.168.10.129(node2) | y | y | y | y | - |
192.168.10.130(node3) | y | - | - | y | y |
192.168.10.130(node3) | y | - | - | y | y |
192.168.10.130(node3) | y | - | - | y | y |
说明:
1.journalnode轻量级,故5台都装,也可以只装后3台,node1、node2不装
2.ha用户
安装包
zookeeper-3.4.14.tar.gz
hadoop-2.6.5.tar.gz
上传到五台服务器
/home/
其他
- jdk要配置好
部署
用户及服务器名称
/etc/hosts加入下面
192.168.10.128 node1
192.168.10.129 node2
192.168.10.130 node3
192.168.10.131 node4
192.168.10.132 node5
// 用户
useradd ha
su ha
// 解压文件到ha
tar zxf zookeeper-3.4.14.tar.gz -C /home/ha/
tar zxf hadoop-2.6.5.tar.gz -C /home/ha/
zookeeper安装
// ha用户就可以了
mkdir /home/ha/zookeeper-3.4.14/{logs,data}
touch /home/ha/zookeeper-3.4.14/data/myid
cat <<EOF > /home/ha/zookeeper-3.4.14/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ha/zookeeper-3.4.14/data
dataLogDir=/home/ha/zookeeper-3.4.14/logs
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888
server.5=node5:2888:3888
EOF
// 依次往5台服务器的myid输入1、2、3、4、5,下面以128服务器为例
cat <<EOF > /home/ha/zookeeper-3.4.14/data/myid
1
EOF
启动
cd /home/ha/zookeeper-3.4.14/bin
/home/ha/zookeeper-3.4.14/bin/zkServer.sh start
验证
/home/ha/zookeeper-3.4.14/bin/zkServer.sh status
/home/ha/zookeeper-3.4.14/bin/zkServer.sh stop
hadoopHA部署
修改配置
1)新建相关目录
mkdir -p /home/ha/hadoop-2.6.5/{logs,tmp,name,data,journal}
2)core-site.xml
cat <<EOF > /home/ha/hadoop-2.6.5/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoopha</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/ha/hadoop-2.6.5/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181,node4:2181,node5:2181</value>
</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>30000</value>
</property>
</configuration>
EOF
3)hdfs-site.xml
cat <<EOF > /home/ha/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/ha/hadoop-2.6.5/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/ha/hadoop-2.6.5/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<!--<value>3</value>-->
</property>
<!--HA -->
<property>
<name>dfs.nameservices</name>
<value>hadoopha</value>
</property>
<property>
<name>dfs.ha.namenodes.hadoopha</name>
<value>nn1,nn2</value>
</property>
<!--namenode1 RPC -->
<property>
<name>dfs.namenode.rpc-address.hadoopha.nn1</name>
<value>node1:9000</value>
</property>
<!--namenode1 HTTP -->
<property>
<name>dfs.namenode.http-address.hadoopha.nn1</name>
<value>node1:50070</value>
</property>
<!--namenode2 RPC -->
<property>
<name>dfs.namenode.rpc-address.hadoopha.nn2</name>
<value>node2:9000</value>
</property>
<!--namenode2 HTTP -->
<property>
<name>dfs.namenode.http-address.hadoopha.nn2</name>
<value>node2:50070</value>
</property>
<!--HA -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- journalnode -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485;node4:8485;node5:8485/hadoopha</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.hadoopha</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--failoverStandbyActiveNameNode fencesshfencesshfuserActiveNameNode-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<!--Journal Node -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/ha/hadoop-2.6.5/journal</value>
</property>
</configuration>
EOF
4)slaves
cat <<EOF > /home/ha/hadoop-2.6.5/etc/hadoop/slaves
node3
node4
node5
EOF
5)依次验证3个文件,很重要!!!
cat /home/ha/hadoop-2.6.5/etc/hadoop/core-site.xml
cat /home/ha/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
cat /home/ha/hadoop-2.6.5/etc/hadoop/slaves
初始化
// 1.防火墙要关闭,不启用
systemctl status firewalld
// 2.----------5台: 切换用户、启动zookeeper、journalnode------------------主要是让zookeeper.out放到这里
su app
cd /home/ha/zookeeper-3.4.14/bin/
/home/ha/zookeeper-3.4.14/bin/zkServer.sh start
cd /home/ha/hadoop-2.6.5/
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start journalnode
/home/ha/zookeeper-3.4.14/bin/zkServer.sh status
// 3.----------node1:
cd /home/ha/hadoop-2.6.5
./bin/hdfs namenode -format
./bin/hdfs zkfc -formatZK
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start namenode
// 4.----------node2:
cd /home/ha/hadoop-2.6.5
./bin/hdfs namenode -bootstrapStandby
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start namenode
// 5.检查http://192.168.10.129:50070/、http://192.168.10.128:50070/都是standby状态
// 6.node1和node2启动zkfc,哪个先启动,哪个就是active
cd /home/ha/hadoop-2.6.5/
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start zkfc
// 7.node3-5 3台启动datanode就完成了
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start datanode
// 8.50070上看到datanode正常注册了,再随便一台机器验证
hadoop fs -mkdir /test-data1
hadoop fs -put ./word.txt /test-data1
在master的50070界面可以搜索到上面文件了
将namenode active的那台机器reboot,验证active可以切换到另一台就ok了
su ha
cd /home/ha/zookeeper-3.4.14/bin/
/home/ha/zookeeper-3.4.14/bin/zkServer.sh start
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start namenode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start journalnode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start zkfc
jps
到这里就安装完成了!!!
注意
关闭
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop namenode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop datanode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop journalnode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop zkfc
/home/ha/zookeeper-3.4.14/bin/zkServer.sh stop
启动
// 1.all
cd /home/ha/zookeeper-3.4.14/bin/
/home/ha/zookeeper-3.4.14/bin/zkServer.sh start
/home/ha/zookeeper-3.4.14/bin/zkServer.sh status
// 2.node1及node2:
cd /home/ha/hadoop-2.6.5
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start namenode
// 3.node3、node4、node5
cd /home/ha/hadoop-2.6.5/
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start datanode
// 4.all
cd /home/ha/hadoop-2.6.5
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start journalnode
// 5.node1及node2
cd /home/ha/hadoop-2.6.5
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh start zkfc
删除
若hadoop的初始化不能一次性完成,删除相关文件后,再进行
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop namenode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop datanode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop journalnode
/home/ha/hadoop-2.6.5/sbin/hadoop-daemon.sh stop zkfc
/home/ha/zookeeper-3.4.14/bin/zkServer.sh stop
rm -rf /home/ha/zookeeper-3.4.14/data/version-2
rm -rf /home/ha/zookeeper-3.4.14/logs/*
rm -rf /home/ha/hadoop-2.6.5/data/*
rm -rf /home/ha/hadoop-2.6.5/name/*
rm -rf /home/ha/hadoop-2.6.5/journal/*
rm -rf /home/ha/hadoop-2.6.5/logs/*
rm -rf /home/ha/hadoop-2.6.5/tmp/*
rm -rf /home/ha/zookeeper.out
其他
1.hadoop可以注册环境遍历;
2.hadoop开启免密后,start-dfs.sh直接启动,关闭类似;
3.可以制作自启动脚本;