原理解释://TODO:
搭建过程记录:
主要2大步,搭建zookeeper和配置HDFS
1.先搭建zookeeper
配置3台机器,先配置好一台然后分发到不同的机器上。
解压完先配环境变量。
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67
export HADOOP_PREFIX=/opt/jw/hadoop-2.6.5
export ZOOKEEPER_PREFIX=/opt/jw/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$ZOOKEEPER_PREFIX/bin
重新加载配置文件:. /etc/profile
修改zk的配置文件:cd /conf/
备注:里面的zoo_sample.cfg 此配置名称是不对的,修改其为zoo.cfg 记得备份
修改此处:dataDir=/tmp/zookeeper 此处的临时目录是可能被删除。修改为新建的
dataDir=/var/jw/zk
最后行追加:
server.1=192.168.159.38:2888:3888
server.2=192.168.159.36:2888:3888
server.3=192.168.159.37:2888:3888
然后在var/jw/zk下写入id。
[root@node03 zk]# echo 1 > myid 然后在对应的机器上配置myid为不同的值。
然后把安装包和profile文件都分发到不同的机器上。然后重新加载profile文件。
启动zk使用:zkServer.sh start 提示信息为Starting zookeeper … STARTED
但是查看 zkServer.sh status 发现: It is probably not running.
通过查看端口:netstat -natp | grep 2181
tcp 0 0 :::2181 :::* LISTEN 4866/java
发现是启动的,只是状态不可用而已。因为此集群只有一个角色,其势力范围没有过半,所以不可以用,再开启其他的服务器上的zk。启动完另一个zk[ip=36]后只有成功了,此时会拼一把大的获胜,既此服务就是lader。上一个[ip=38]则是follower。其他启动的就是follower。
2.hadoop配置
cd
HADOOPPREFIX【通过
H
A
D
O
O
P
P
R
E
F
I
X
【
通
过
加上环境变量的名字可直接进入到目录下 】
进入hadoop的etc目录下备份文件:[root@node03 etc]# cp -r hadoop hadoop-full
将不带HA的做备份。
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node03:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node02:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node03:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node03:8485;node01:8485;node02:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>