博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop HA- hadoop集群部署
阅读量:6367 次
发布时间:2019-06-23

本文共 4914 字,大约阅读时间需要 16 分钟。

前期部署,至少准备3台服务器(可以是虚拟机)

1、linux系统环境准备

    ip地址配置

    hostname配置

    hosts映射配置

    关闭防火墙 service iptables stop ,也可以设置防火墙不开机自启动 chkconfig iptables off 

 init启动级别修改

2.java环境的配置

    上传jdk,解压,修改/etc/profile

3.zookeeper集群的部署,安装zookeeper,环境变量,发送zookeeper文件,profile文件给其他服务器并刷新他,都创建myid文件,开启3台zookeeper: zkServer.sh start ,出现错误可以检查日志文件

 

4.解压hadoop安装包,配置PATH环境

5.做免密钥登录SSH

node1到node1-3node2到node1-3注意:namenode之间一定要做免密钥SSH

6.修改hadoop配置文件

hadoop-env.sh中添加java的环境变量JAVA_HOME
core-site.xml
  
  
    
fs.defaultFS
    
hdfs://ns1/
  
  
  
    
hadoop.tmp.dir
    
/usr/hadoop/hdpt
  
  
  
    
ha.zookeeper.quorum
    
server01-hosetname:2181,server02-hostname:2181,server03-hostname:2181
//server-hostname这里写你实际的服务器主机名  

hdfs-site.xml

configuration>  
  
  
dfs.nameservices
  
ns1
  
  
  
  
dfs.ha.namenodes.ns1
  
nn1,nn2
  
  
  
  
dfs.namenode.rpc-address.ns1.nn1
  
server01-hostname:9000
  
  
  
  
dfs.namenode.http-address.ns1.nn1
  
server01-hostname:50070
  
  
  
  
dfs.namenode.rpc-address.ns1.nn2
  
server02-hostname:9000
  
  
  
  
dfs.namenode.http-address.ns1.nn2
  
server02-hostname:50070
  
  
  
  
dfs.namenode.shared.edits.dir
  
qjournal://hostname05:8485;hostname06:8485;hostname07:8485/ns1
//hostname为3台journalnode服务器的主机名  
  
  
  
dfs.journalnode.edits.dir
  
/home/hadoop/app/hadoop-2.4.1/journaldata
  
  
  
  
dfs.ha.automatic-failover.enabled
  
true
  
  
  
  
dfs.client.failover.proxy.provider.ns1
  
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
  
  
  
  
dfs.ha.fencing.methods
  
   sshfence    shell(/bin/true)   
  
  
  
  
dfs.ha.fencing.ssh.private-key-files
  
/home/hadoop/.ssh/id_rsa
//里面放的值为SSH放密钥地址在你所在的用户家目录下的.ssh文件夹内,root用户在/root/.ssh/ ,加密方式不同可能不是id_rsa,自己选择即可类似的文件即可  
  
  
  
dfs.ha.fencing.ssh.connect-timeout
  
30000
  
/configuration>

7.同步配置文件

8.启动3台journalnode服务器: hadoop-daemon.sh start journalnode (也可以先不启动)

9.格式化NN(namenode01): hdfs namenode -format ,并启动hdfs: start-dfs.sh 。

10.同步其他没有格式化的NN(namenode)上执行node2 hdfs namenode -bootstrapStandby

   如果格式化后的NN没有开启,第二台NN上执行 hdfs namenode -format会失败,出现

11.开启3台zookeeper,如果开启了忽略。

12.格式化zk, 在一台NN上执行 hdfs zkfc -formatZK 

13启动集群  start-dfs.sh 

 

搭建完成后重启集群 
stop-dfs.sh 
 
再启动:
1.启动ZK集群 三台zk node1,2,3执行 
zkServer.sh start 
2.启动 hadoop  
start-dfs.sh 

3启动yarn  start-yarn.sh 或者 start-all.sh //同时把集群和yarn开启 

jps检查namenode是否正常开启,没有的话需要手动单点启动: hadoop-daemon.sh start namenode 

 

 

报错解决:这样一个情况,在设置了Hadoop的HA模式。每次开启zookeeper之后再输入 start-all.sh 将hdfs 和yarn都开启来。一切启动正常,但是namenode的进程却在很短的时间内就消失了,必须通过hadoop-daemon.sh start namenode 手动才能重新上线namenode。

进检查namenode的日志文件,出现下面的警告:

WARN org.apache.hadoop.hdfs.server.namenode.FSEditLog: Unable to determine input streams from QJM to

jps查看进程,namenode进程已经消失。

肯定NameNode不能正常运行,不是配置错了,而是不能连接上JournalNode、

查看JournalNode的日志没有问题,那么问题就在JournalNode的客户端NameNode。

来分析上句的日志:

NameNode作为JournalNode的客户端发起连接请求,但是失败了,然后NameNode又向其他节点依次发起了请求都失败了,直至到了最大重试次数。

通过实验知道,先启动JournalNode或者再次启动NameNode就可以了,说明JournalNode并没有准备好,而NameNode已经用完了所有重试次数。

三、解决办法

修改core-site.xml中的ipc参数
 <property>
  <name>ipc.client.connect.max.retries</name>
  <value>100</value>
  <description>Indicates the number of retries a client will make to establish
      a server connection.
  </description>
 </property>
 <property>
  <name>ipc.client.connect.retry.interval</name>
  <value>10000</value>
  <description>Indicates the number of milliseconds a client will wait for
  before retrying to establish a server connection.
  </description>
 </property>

Namenode向JournalNode发起的ipc连接请求的重试间隔时间和重试次数,我的虚拟机集群实验大约需要2分钟,NameNode即可连接上JournalNode。连接后很稳定。

注意:仅对于这种由于服务没有启动完成造成连接超时的问题,都可以调整core-site.xml中的ipc参数来解决。如果目标服务本身没有启动成功,这边调整ipc参数是无效的。

 

转载于:https://www.cnblogs.com/RzCong/p/7324425.html

你可能感兴趣的文章
我的友情链接
查看>>
忘记root用户密码怎么办?
查看>>
esxi定时任务
查看>>
Scaffold-DbContext
查看>>
关于VMware Workstation主机列表问题求教
查看>>
配置管理小报101021:给ubuntu加监控
查看>>
qml文字滚动效果的封装,实现方式运用的qml中提供的动画效果,另一种实现方式也可以使用定时器修改控件的坐标来实现...
查看>>
标准C++实现任务队列
查看>>
jdbc url
查看>>
刷leetcode第704题-二分查找
查看>>
debug_backtrace() 函数生成一个 backtrace(追踪)
查看>>
第七天,还是盒子
查看>>
XAMPP软件包下载
查看>>
XXL-JOB初体验-ORACLE版
查看>>
沉思录:别人的棺材
查看>>
jersey + spring + mybatis + redis项目搭建
查看>>
PAT 1006 部分正确_另一种解法
查看>>
在Keil环境下使用JLink实现printf输出重定向至debug窗口
查看>>
JFreeChart生成3D饼图
查看>>
postgres的\d命令不显示全部的用户表
查看>>