zookeeper+hadoop2.X HA集群搭建

前期准备:

1.VM准备4台centenOs虚拟节点,主机名分别为:node01,:node02,node03,node04.

2.ssh免密登录,node01能ssh登录其他三台包括自己,node04能ssh登录自己和node01.

3.安装jdk1.7.配置环境变量。

具体搭建如下:

一.搭建zookeeper集群(node01,node02,node03)

1.1解压并在node01节点上在zookeeper安装目录下到conf目录下新建zoo.cfg,配置内容如下:
tickTime=2000
dataDir=/var/lib/zookeeper //zk数据存放目录
clientPort=2181
initLimit=5
syncLimit=2
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

1.2在node01,node02,node03上的/var/lib/zookeeper(对应上面配置的dataDir配置)新建myid文件,节点分别对应服务号;
例如:node01上的/var/lib/zookeeper的myid内容为1,以此类推。

1.3scp -r zookeeper-3.4.6/ root@node02:/home/,同理node03/

1.4检查集群时间是否一致,不一致修改集群各机器时间使一致。
date -s "2017-02-11 23:43:00"

1.5启动zookeeper集群:
在三台机器上执行zookeeper安装目录下的bin下的zkServer.sh start,
查看当前目录下的zookeeper.out日志文件若无报错则成功。



二.hadoopHA搭建

2.1解压tar -zxvf ***.tar.gz hadoop安装包

2.2 配置hadoop安装后的etc下的hadoop下的文件:

2.2.1vi hdfs-size.xml,内容如下:<configuration>
<property>
  <name>dfs.nameservices</name>
  <value>wt</value>
</property>
<property>
  <name>dfs.ha.namenodes.wt</name>
  <value>nn1,nn2</value>
</property>
<!--namenode:node01,node04-->
<!--RPC协议配置 -->
<property>
  <name>dfs.namenode.rpc-address.wt.nn1</name>
  <value>node01:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.wt.nn2</name>
  <value>node04:8020</value>
</property>
<!--HTTP协议配置 -->
<property>
  <name>dfs.namenode.http-address.wt.nn1</name>
  <value>node01:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.wt.nn2</name>
  <value>node04:50070</value>
</property>
<!--共享edits文件节点到uri ,node02,node03,node04-->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node02:8485;node03:8485;node04:8485/aaa</value>
</property>
<!--帮助客户端获得active的namenode-->
<property>
  <name>dfs.client.failover.proxy.provider.wt</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_rsa</value>
</property>
<!--配置journalnode数据存放的目录-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/journalnode</value>
</property>
<!--启用自动切换 -->
 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
</configuration>

2.2.2vi core-site,配置内容如下:
<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://wt</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-2.5</value>
</property>
 <property>
   <name>ha.zookeeper.quorum</name>
   <value>node01:2181,node02:2181,node03:2181</value>
 </property>
</configuration>

2.2.3vi slaves,datanode的主机名,配置内容如下:
node02
node03
node04

2.2.4将node01上节点的hadoop安装文件分发到其他节点

2.2.5在journalnode节点(node02,node03,node04)上分别启动命令如下:
hadoop-daemon.sh start journalnode

2.2.6随便在其中一台namenode上格式化,这里选node01:
hdfs namenode -format --初始化fsimage文件

2.2.7将node01上生成的/opt/hadoop-2.5拷贝到另外一台namenode节点node04上,在node04上执行:
scp -r root@node04:/opt/hadoop-2.5 /opt/

2.2.8在zookeeper中初始化HA,在其中一台namenode(node01)上执行格式化zookeeper命令:
hdfs zkfc -formatZK

2.2.9配置hadoop环境变量,并启动脚本start-dfs.sh

2.2.10去页面url:node01:50070;node05:50070

搭建中遇到的错误:

1.启动start-dfs.sh,报了如下错误:Could not resolve hostname try:Name or service not know,如图:


解决如下:

出现上述问题主要是环境变量没设置好,在~/.bash_profile或者/etc/profile中加入以下语句就没问题了。
  #vi /etc/profile或者vi ~/.bash_profile
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
然后用source重新编译使之生效即可!

2.解决上述问题后启动start-dfs.sh仍然报错,如图:


解决如下:

修改hadoop-env.sh中设JAVA_HOME(绝对路径)

启动成功后如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值