centos7上搭建hadoop集群

参考:

https://blog.csdn.net/cafebar123/article/details/73500014

Hadoop+Spark+Zookeeper+HBase+Hive集群搭建:

https://blog.csdn.net/qazwsxpcm/article/details/78937820

一、Hadoop datanode正常启动,但是livenodes为0

问题描述:

所有数据节点都已经正常启动了(通过jps查看子节点、或8088页面显示节点RUNNING),防火墙关闭,同时通过web页面查看http://master:50070,在Live Nodes那一栏显示位0(或节点不够数)。【我这里只有2个datanode】

  • master一个作为NameNode
  • slave1作为DataNode
  • slave2作为另一个DataNode

解决方法:

第一种可能:

1. 打开配置文件hdfs-site.xml找到dfs.datanode.name.dir这个属性,或者dfs.data.dir具体看你用哪个设置的数据存储路径。

2. 分别在master, slave1, slave2中更改此属性

 # master中的值
 <property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/usr/hadoop/hadoop-2.6.2/dfs/data</value>
 </property>

 # slave1中的值
 <property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/usr/hadoop/hadoop-2.6.2/dfs/data/slave1</value>
 </property>
 
 # slave2中的值
 <property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/usr/hadoop/hadoop-2.6.2/dfs/data/slave2</value>
 </property>

问题可能就是多个节点存放data数据的目录路径相同了,造成了报告中误认为只有一个datanode。

第二种可能:(克隆虚拟机所导致的)

1. 首先在master机上查看端口使用情况是否正常,再去slave机中查看datanode有关日志,若发现slave机在反复尝试连接localhost:9000,因为一开始在配置master中的core-site.xml时属性fs.defaultFS的值为hdfs://localhost:9000,然后克隆出的两个slave机会导致了启动守护线程时slave机去尝试连接本地的9000端口。

2. 需要将slave机中core-site.xml的value改为hdfs://master:9000即可

第三种可能:

查看/etc/hosts,localhost前面不能有其他名称,如下

这里写图片描述

hadoop在启动的时候,根据配置文件监听的时候监听的是hadoop01的9000端口,而这个hadoop01被解析成了127.0.0.1,这样hadoop01节点就不会监听master的9000端口,来自hadoop02和hadoop03的信息不会被hadoop01节点接收到,也就会出现hadoop02和hadoop03节点日志里面的内容,live node一直为0。

2016-03-05 07:34:23,972 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: hadoop01/192.168.116.101:9000
2016-03-05 07:34:29,980 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: hadoop01/192.168.116.101:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

正确的:

 

最后 hdfs namenode -format,重新启动  start-all.sh

二、zookeeper集群重启 Error contacting service. It is probably not running 问题

问题出现情形

  • 1 集群启动后异常关闭,重启出错
  • 2 集群未正常启动

查看zookeeper.out分析原因

cat zookeeper.out

问题排查

排查前确保防火墙关闭,确保每个机器都启动了zookeeper。初次启动个个环节都有可能有问题 如果有报错信息可以针对性解决。

1 java环境

java -version

2 排查端口占用

netstat -apn | grep 2181   #默认2181端口为服务端提供端口
备注:若集群未启动 则不应该有端口占用

kill -9 pid                #pid为占用端口的进程id号

3 排除网卡问题

ip addr

备注:如果为物理地址则 重启网卡

service network restart

4 排除网络问题

ping ip               #ping其他节点主机 若zoo.cfg 使用域名则用域名

备注:无ping命令则安装  yum install iputils-ping 若有问题则 host映射问题

5 排查节点配置信息

dataDir 是否存在 myid文件内容与 service.x 中x对应

例如:zk01  其对应service.x  则该目录下myid内容为1

6 删除节点残留信息

rm -rf version-2/ zookeeper_server.pid

7 防火墙拦截端口

systemctl status firewalld.service

 

systemctl stop firewalld.service #关闭防火墙

systemctl disable firewalld.service #禁止启动防火墙

三、[Fatal Error] core-site.xml:66:3:

意思是 hbase-site.xml的第66行第3列出错。

解决办法:

打开文件,仔细查找,我的错误是因为配置文件的时候不小心增加了一个空行。

注意:不要轻易改变hadoop(或其他)配置文件的一个空行,甚至一个空格。

四、启动HBase时 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m ,MaxPermSize=128m;

解决办法:

vim hbase-env.sh

注释掉47、48(You can safely remove it for JDK8+)

JDK8之后移除了永久代(PermGen),替换为元空间(Metaspace),故使用JDK8+可不必设置此参数

五、Hbase 启动报错 cannot initialize Java class org.apache.hadoop.hbase.HColumnDescriptor

在集群中Zookeeper中会通过投票方式选举出一个Zookeeper为主,其余类似于主的热备,而主Zookeeper会指定Hmaster,并由指定的Hmaster来进行Hbase的操作。

启动的zookeeper的时候,尽量安装master、slave1、slave2顺序启动,这样master为leader,子节点为follower。然后用master启动HBASE。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值