hadoop高可用的完全分布式部署
Posted z-l-j
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop高可用的完全分布式部署相关的知识,希望对你有一定的参考价值。
1、将zookeeper-3.4.6.tar.gz解压(例:root目录下)
2、将/root/zookeeper-3.4.6/conf/zoo_simple.cfg修改为zoo.cfg
并修改zookeeper存放文件的目录:dataDir=/tmp/zookeeper
添加:
#其中1、2、3是zookeeper的服务编号,后面是对应服务器的主机名
server.1=zlj02:2888:3888
server.2=my01:2888:3888
server.3=my02:2888:3888
3、mkdir /tmp/zookeeper(三个zookeeper所在的机器都要)
4、创建并存放各自zookeeper的服务编号:vim /tmp/zookeeper/myid
5、拷贝zookeeper到其他两台机器中:scp -r zookeeper-3.4.6 [email protected]:~
6、配置zookeeper的环境变量(vim ~/.bash_profile)并重新加载配置文件
7、启动zookeeper(三台机器上各自启动(zkServer.sh start))日志:/root/zookeeper.out(启动后可以完全不用再理了,其所占资源很少)
8、配置/root/hadoop-2.5.2/etc/hadoop/hdfs-site.xml
<configuration>
<!--配置nameservicesID,即该集群的名字 -->
<property>
<name>dfs.nameservices</name>
<value>gzsxt</value>
</property>
<!-- 配置namenodesID,唯一区分每个namenode -->
<property>
<name>dfs.ha.namenodes.gzsxt</name>
<value>nn1,nn2</value>
</property>
<!-- 配置两个NameNode的rpc协议的地址和端口 -->
<property>
<name>dfs.namenode.rpc-address.gzsxt.nn1</name>
<value>zlj02:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.gzsxt.nn2</name>
<value>my01:8020</value>
</property>
<!-- 设置http的地址 -->
<property>
<name>dfs.namenode.http-address.gzsxt.nn1</name>
<value>zlj02:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.gzsxt.nn2</name>
<value>my01:50070</value>
</property>
<!-- 设置journalnade的主机名 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://zlj02:8485;my01:8485;my02:8485/abc</value>
</property>
<!-- 通过代理类来让客户端连接active的NameNode -->
<property>
<name>dfs.client.failover.proxy.provider.gzsxt</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyPro
vider</value>
</property>
<!--隔离机制:通过远程登录,杀掉NameNode来保证只有一个active的NameNode(保证
已经设置了免密登录) -->
<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_rsa</value>
</property>
<!-- journalnade保存数据用的目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/journalnode</value>
</property>
<!--配置NameNode的自动切换的开关 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
9、配置/root/hadoop-2.5.2/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://gzsxt:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop</value>
</property>
<!--配置三台zookeeper主机名 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>zlj02:2181,my01:2181,my02:2181</value>
</property>
</configuration>
10、复制/root/hadoop-2.5.2/etc/hadoop下所有的xml配置文件到其他机器中
11、启动所有journalnode:在其中的一台设置了免密登录的机器上敲一下代码即可:hadoop-daemon.sh start journalnode
12、初始化和同步两台NameNode的元数据(生成fsimage文件)
A) 随便一台NameNode机器上执行初始化:hdfs namenode -format(如果原来已经有,最好先删除)
B) 将元数据拷贝到另外一台NameNode下的:scp -r /opt/hadoop/ [email protected]:/opt/
13、在其中一台NameNode下初始化zookeeper:hdfs zkfc -formatZK
14、启动hadoop:start-dfs.sh
15、设置两台NameNode的相互免密登录:
a) 生成密钥:ssh-keygen
b) 拷贝主节点的公钥到所有节点中去。ssh-copy-id -i id_rsa.pub [email protected]
以上是关于hadoop高可用的完全分布式部署的主要内容,如果未能解决你的问题,请参考以下文章