集群环境配置遇到的问题(随时更新)

公司给分配了3台新的虚拟机,打算从头配置一下zookeeper,kafka,storm,hadoop,hbase的环境。html

(之后配置mongodb,spark的时候,在陆续更新,目前(2016/4/21)只接触这么多)java

配置的过程当中发生了一些问题。这里共享一下笔记。固然,我作配置的时候的原则是:node

只配置知道的,不知道的就不去配置。虽然会发生问题,可是在解决问题的过程当中,能达到学习的目的。linux

因此,我在配置的过程当中,才发生了下面这么多的弱智的问题。略有愧疚。因此,每每前期要比别人花上更多的时间和精力web

 

-----------------------mongodb

软件版本:(不一样版本的问题有可能不同,这里的解决方法仅供参考,出现问题概不负责apache

【zookeeper】:zookeeper-3.4.6.tar.gz分布式

【kafka】:kafka_2.9.2-0.8.1.1.tgzoop

【storm】:apache-storm-0.9.5.tar.gz学习

【hadoop】:hadoop-2.7.1.tar.gz

【hbase】:hbase-1.2.1-bin.tar.gz

-----------------------

 

(1)查看zookeeper.out的日志发现了以下错误。

后来发现是个人配置文件中,将dataDir的路径写错了,修改以后就再也不出现这个错误。

这里其实只是个人一个最单纯的错误,留下这个错误的目的是:养成查看日志的习惯。大多数问题经过查看日志是能够找到缘由的。

 

(2)查看zookeeper.out的日志发现了以下错误。

日志中提示是端口发生了冲突,尝试更换了一下端口。问题解决。

大多数状况下,咱们都会使用zookeeper自带的端口号,当集群中启动的服务不少的时候,是会发生端口号冲突的。

 

(3)hadoop的配置文件不知道该如何配置。无图

hadoop的集群构建的时候,基本上都须要配置下面几个文件:

hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

可是,根据Hadoop的版本不一样,有可能配置的内容会有些许区别,网上的配置方法也众说纷纭。

固然,仍是要感谢网上的人能将配置项加上中文翻译的。

 

我最初配置的时候,是打算参考正确答案(官网),结果官网上罗列了不少的配置项,

后来咨询了一些大牛获得以下结论:(固然,这个结论仍是须要验证的)

①、官网上的配置项是一个“合集”,每一项都介绍的很详细。可是,其实大部分都用不上,最低配其实大部分指定点路径就好了。

②、除开JAVA_HOME等必须配置的项目以外,即便什么都不配,按理说也能够启动起来。

总结来讲:配置文件须要按需配置

 

(4)中止hadoop的时候出现"“no datanode to stop"的错误

网上大概有三个方法来解决这个问题,我这里偷懒罗列一下。我此次是用第③种方法解决的。

 

【第一种解决方法】

①、删除“/usr/hadoop/tmp”里面的内容:rm -rf /usr/hadoop/tmp

②、从新建立“/usr/hadoop/tmp”文件夹。

③、删除“/tmp”下以“hadoop”开头文件。

④、从新格式化hadoop:hadoop namenode -format

⑤、从新启动hadoop

 

【第二种解决方法】

修改每一个Slave的namespaceID,使其与Master的namespaceID一致。

或者

修改Master的namespaceID使其与Slave的namespaceID一致。

Master的“namespaceID”位于“/usr/hadoop/tmp/dfs/name/current/VERSION”文件里面,

Slave的“namespaceID”位于“/usr/hadoop/tmp/dfs/data/current/VERSION”文件里面。

 

【第三种解决方法】

在从新格式化分布式目录及对应文件时,须要将NameNode及DataNode上所配置的dfs.name.dir对应的路径删掉或移除,不然hadoop没法正常工做。

根据某资料所说的,这是为了不因为格式化而删掉已有且有用的的hdfs数据,因此格式化前dfs.name.dir对应的路径应当是不存在的。

 

(5)中止hadoop的时候出现"no nodemanager to stop"的错误

网上找到了一篇很牛的博客(不知道是否是原创)

http://www.codeweblog.com/%E8%A7%A3%E5%86%B3%E5%85%B3%E9%97%ADhadoop%E6%97%B6no-namenode-to-stop%E5%BC%82%E5%B8%B8/

看了这篇博客以后,总算知道了PID的意义和配置的必要性。配置一下以后,果然解决了。

我修改了两个文件的PID的保存位置:

①、hadoop-env.sh

②、yarn-env.sh

须要注意如下两点:

一、hadoop-env.sh中已经邮PID_DIR的属性了,修改它的值就能够,yarn-env.sh须要本身追加属性

二、记住要先关闭Hadoop再修改,否则你修改完又没法关闭了。

 

(6)nodemanager启动后一段时间自动关闭

略有感慨,老是有大牛可以写出很是透彻的分析。此次也找到了一篇很好的博客:

http://my.oschina.net/u/1451042/blog/223235

按照博客上的说法,若是不在yarn-site.xml中追加yarn.resourcemanager.hostname,

nodemanager启动后要经过心跳机制按期与RM通讯,不然RM会认为NM死掉,会中止NM的服务。

以下如所示,修改yarn-site.xml后,问题解决。

 

(7)HBase的regionServer没法经过Master节点启动

现象以下图所示,Master节点到时能够启动了,Slave节点未能与Master一同启动。

下图中左面是Master节点的进行状态,右面是Slave节点的进程状态。

 

缘由是hbase-site.xml中【hbase.cluster.distributed】属性没有配置。

若是不设置这个属性,就不能构成彻底集群模式。像下图所示追加属性以后,ReginServer正常启动。

 

(8)HBase的RegionServer过会就自动关闭

按照上述问题6中配置完成以后,过了一会我又去看了一下进程状态,发现Slave节点的RegionServer进行忽然消失了。

经过问题1养成了查看Log的好习惯)将原来的Log日志所有删除掉,从新启动Hbase,尝试实时监控Slave端的Log日志,

发现Log中出现大量的下面的日志:

 

从Log中能看出来,貌似一直在尝试与ZK集群建创建链接,但是链接不上。因而乎,想到了配置文件中的须要追加zookeeper的配置。

向下面这样修改以后,再次监控上面的Log,发现不在出现这个问题了。

注意:在配置zookeeper的地址的时候,若是不写明后面的端口号,默认为2181,因为我修改过默认端口号,因此必须写明。

若是没有修改过端口号,value中写[master,slave1,slave2]或者[192.168.1.179,192.168.1.180,192.168.1.181]均可以。

 

另外有一点也须要注意,若是须要zookeeper和hbase分别单独启动,不须要Hbase启动的时候自动去启动zookeeper时,

须要在hbase-env.sh的属性【HBASE_MANAGES_ZK】设置为false。默认是true的。修改后以下:

 

(9)启动hadoop的时候,老是提示下面的警告

在公司的时候,使用的版本是2.7.1没有出现这个问题,周末在家搞的时候,使用的是本身机器上的虚拟机,

hadoop的版本为2.5.1,就会出现这个问题。

在网上查看了一下相关信息,说是因为本地库没有加载成功的缘由,使用hadoop checknative查看了一下,确实是有问题。

比较蛋疼的是,在网上找到的文章中,都是说在hadoop-env.sh中加入如下下面配置就能够解决。

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/"

结果尝试了几回以后没有效果。开启hadoop的debug模式以后,检测了一下启动Log。有以下提示:

说明系统中的glibc的版本和libhadoop.so须要的版本不一致致使。查看一下系统的libc版本。显示版本为2.12

*后来在网上找到一个与我同样的问题的博客:http://blog.sina.com.cn/s/blog_4eca88390102vn86.html

到网站【http://ftp.gnu.org/gnu/glibc/】上下载【glibc-2.14.tar.bz2】和【glibc-linuxthreads-2.5.tar.bz2】上传到Linux上。

(待更新)

 

--END--

相关文章
相关标签/搜索