天天看点

Hadoop 2.5.2分布式集群配置

这里一共有三台机器,系统为ubuntu 14.04.2,其中一台为master 其余两台为slave

首先用adduser命令添加一个普通用户,命令如下:

修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉

这里设置三台机器的用户名统一为lq

/etc/hostname文件中存放的是主机名,修改文件后保存然后重启机器,重新登陆后主机名生效 这里设置master机器主机名为rfidlabmaster 其余两台机器主机名分别为rfidlabslave1、rfidlabslave2

配置hosts 在三台机器上分别修改/etc/hosts文件,如在master机器上修改:

用以下形式添加

在master机器下

一直回车。.ssh目录下多出两个文件

私钥文件:id_rsa公钥文件:id_rsa.pub

复制id_rsa.pub文件为authorized_keys

将公钥文件authorized_keys分发到节点rfidlabslave1、rfidlabslave2上:

注意:如果当前用户目录下没有.ssh目录,可以自己创建一个该目录,该目录的权限最好设置为700,authorized_keys权限最好设置为600

验证ssh无密码登录:

由于master机器上已经安装过java,安装目录为/usr/lib/jvm/jdk1.8.0_60,所以直接将安装目录发到其他的slave节点,如果没有java,就要去官网下载解压。

修改/etc/profile文件 配置java环境变量

<a href="http://hadoop.apache.org/releases.html">hadoop下载地址</a>

可以选择一个自己需要的版本,这里选择的是hadoop-2.5.2

先下载一个到master服务器的/opt/tools路径下,如果该路径不存在就自己创建一个该目录

修改hadoop xml文件配置

修改etc/conf/core-site.xml 配置如下

修改etc/conf/mapred-site.xml 配置如下

conf/hdfs-site.xml 配置如下,注意文件路径中不要包含一些点、逗号等特殊字符,文件路径需要写成完全路径,以file:开头

修改etc/hadoop/yarn-site.xml

修改 etc/hadoop/slaves

etc/hadoop/hadoop-env.sh和yarn-env.sh中配置java环境变量

使用scp 直接把以上配置copy到另外的集群上

修改/etc/profile文件 配置hadoop环境变量

分布式hadoop环境搭建完毕

(1)格式化文件系统

如果启动失败 则需要手动创建目录

成功会显示 info common.storage: storage directory /home/lq/hadoop/dfs/name has been successfully formatted.

(2) 启动hadoop

输出:

如果出现以下输出使其卡着不动,则要在/etc/ssh/ssh_config 文件中添加

stricthostkeychecking no 然后重启ssh服务/etc/init.d/ssh restart

去其他slave节点输入 jps 查看

fatal org.apache.hadoop.hdfs.server.datanode.datanode: initialization failed for block pool (datanode uuid unassigned) service to master/xxx. exiting. java.io.ioexception: incompatible clusterids

问题定位:所有namenode目录、所有datanode目录、从节点临时目录

问题原因:

1) 主节点的namenode clusterid与从节点的datanode clusterid不一致

2) 多次格式化了namenode跟datanode之后的结果,格式化之后从节点生成了新的id,造成不一致

解决办法:

在格式化之前,先把所有的服务停掉(stop-dfs.sh、stop-yarn.sh或者stop-all.sh),确保都停掉了之后,分别到所有节点的namenode目录、datanode目录、临时目录,把以上目录里面的所有内容都删除掉。然后再重新启动就可以了。一个个机器删除比较麻烦 附上一个脚本可以在各台机器上批量删除,参考该博客改写的

创建脚本:allcmd.sh

创建完执行chmod +x allcmd.sh

创建命令文件 cmdlist

创建服务器列表文件 serverlist

使用方法:在脚本所在目录下建立cmdlist文件和serverlist

然后调用:./allcmd.sh serverlist cmdlist 即可