首先 先测试Hadoop集群时间,确保集群时间同步
Hadoop集群机器策划
192.168.137.2 hadoop01 nn1 dn zk qjm
192.168.137.3 hadoop02 nn2 dn zk qjm
192.168.137.4 hadoop03 dn zk qjm
JDK规划 :1.7以上
防火墙规划:系统防火墙关闭
SSH免密码规划
hadoop01可免密访问hadoop02,hadoop03
hadoop02可免密访问hadoop01,hadoop03
生成密钥:#ssh-keygen -t rsa
向两外两台主机以及自己发送:ssh-copy-id
HDFS实现自动切换HA(全新HDFS)
1>修改 hadoop-env.sh
export JAVA_HOME=/home/master/modules/jdk1.7.0_67
2>修改 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://xiaojiu</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/master/hadoopdata/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>
3>修改 hdfs-site.xml
注:中文注释不要带
<configuration>
<!-- 指定hdfs的nameservice为beicai,就是那个代理程序,询问zk集群哪个namenode还活着 -->
<property>
<name>dfs.nameservices</name>
<value>xiaojiu</value>
</property>
<!—指定hdfs的两个NameNode都是什么名字(等会儿下面会配置他们所对应的机器的信息)-->
<property>
<name>dfs.ha.namenodes.xiaojiu</name>
<value>nn1,nn2</value>
</property>
<!—NameNode1的rpc通讯地址-->
<property>
<name>dfs.namenode.rpc-address.xiaojiu.nn1</name>
<value>master:8020</value>
</property>
<!—NameNode2的rpc通讯地址-->
<property>
<name>dfs.namenode.rpc-address.xiaojiu.nn2</name>
<value>server01:8020</value>
</property>
<!—NameNode1的web界面地址-->
<property>
<name>dfs.namenode.http-address.xiaojiu.nn1</name>
<value>master:50070</value>
</property>
<!—NameNode2的web界面地址-->
<property>
<name>dfs.namenode.http-address.xiaojiu.nn2</name>
<value>server01:50070</value>
</property>
<!---namenode存放元数据信息的Linux本地地址,这个目录不需要我们自己创建->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/master/modules/hadoopdata/name</value>
</property>
<!—datanode存放用户提交的大文件的本地Linux地址,这个目录不需要我们自己创建-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/master/modules/hadoopdata/name/data</value>
</property>
<!—QJM存放共享数据的方式-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal:// hadoop01:8485; hadoop02:8485; hadoop03:8485/xiaojiu</value>
</property>
<!—单个QJM进程(角色)存放本地edits文件的Linux地址-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/master/hadoopdata/journal1</value>
</property>
<!—开启hdfs的namenode死亡后自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 指定zookeeper集群地址,辅助两个namenode进行失败切换 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,server01:2181,server02:2181</value>
</property>
<!—zkfc程序的主类-->
<property>
<name>dfs.client.failover.proxy.provider.xiaojiu</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!—防止多个namenode同时active(脑裂)的方式-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>
<!—指定本机的私钥所在目录-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/master/.ssh/id_rsa</value>
</property>
<!—指定ssh通讯超时时间-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
启动顺序
1>先启动zk集群
在各个zk服务其上执行如下命令:sh zkServer.sh start
2>在master上启动所有journalnode
hadoop-daemons.sh start journalnode
3>格式化HDFS(在master上执行命令)
hadoop namenode -format
4>格式化后在master上执行:
hadoop-daemon.sh start namenode
5>在server01hadoop目录bin下执行:
hdfs namenode -bootstarpStandby
6>格式化ZK(在Master上执行即可)
hdfs zkfc -formatZK
7>启动HDFS(在master上执行)
start-dfs.sh
测试:
在网页上打开 :192.168.137.2:50070
再打开:192.168.137.3:50070
完成之后再回到ip为192.168.137.2的虚拟机上杀死namenode
kill -9 +namenode的序列号
再次回到网页,打开192.168.137.2:50070出现网页找不到
打开192.168.137.3,显示:
安装完成!!!