设为首页 收藏本站
查看: 1456|回复: 0

[经验分享] Hadoop全分布式集群配置文档

[复制链接]

尚未签到

发表于 2018-10-31 13:06:08 | 显示全部楼层 |阅读模式
  CentOS6.2下Hadoop全分布式集群配置文档
集群网络环境介绍
  集群包含三个hadoop节点:1个namenode、2个datanode。节点之间局域网连接,可以互相ping通,并且配置了节点之间互相无密码ssh访问。节点IP地址如下:
  NameNode:192.168.1.220 主机名:master
  DataNode 1:192.168.1.223主机名:slaver1
  DataNode 2:192.168.1.224主机名:slaver2
  说明:105机器能ping通,但是ssh连接上去短暂的一段时间后自动断开,必须105用ssh访问其他网络之后,才能再次连接上。检查防火墙等各种原因之后未能解决。(望大家提供指导)
  三台机器系统均为CentOs6.2简体中文版。并且都新建了一个MDSS用户作为hadoop用户,其hadoop都安装在/home/MDSS/hadoop目录下。
集群环境配置/SSH无密码验证配置
配置主机名,以便ssh网络之间识别,在NameNode/192.168.15.102机器上作如下操作:


  在/etc/hosts文件中添加主机名和一下IP地址列表,以便ssh访问能识别主机名:


  同时,对datanode1/192.168.15.103机器上和datanode2/192.168.15.105机器上两台机器做如上操作。(区别:datanode1 HOSTNAME=slaver1 , datanode2 HOSTENAME=slaver2)
SSH无密码验证配置
  生成密钥文件

  输入如图所示命令,便可以在~/.ssh/下生产id_rsa、id_rsa.pub两个密钥文件,其中id_rsa为私钥,id_rsa.pub为公钥。
  将公钥文件添加到~/.ssh/authorized_keys文件中

  将公钥文件远程复制到datanode1和datanode2上

  分别用MDSS登陆datanod1/slaver1和datanode2/slaver2机器上,将NameNode/master的公钥文件添加到~/.ssh/authorized_keys文件中

  对anthorized_keys文件夹执行授权命令
  chmod 600 .ssh/authorized_keys
  此时,在namenode/master机器上执行 service sshd restart命令重启ssh服务

  到此,NameNode/master的MDSS用户机器就可以无密码访问datanode1/slaver1和datanode2/slaver2的MDSS用户了

  若要datanode1/slaver1和datanode2/slaver2的MDSS用户也能无密码SSH访问namenode/master的MDSS用户,只需按照以上步骤做相反的操作就可以。
JDK安装和JAVA环境变量配置
JDK安装
  在所有机器上安装jdk1.7
  下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
  我下载的是jdk-7u5-linux-i586.rpm,可以根据自己的机器操作系统和版本选择合适的

  最好还是先卸载掉openjdk,在安装sun公司的jdk
  先查看 rpm -qa | grep java
  显示如下信息:
  java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
  java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  卸载:
  rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
  rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  还有一些其他的命令
  rpm -qa | grep gcj
  rpm -qa | grep jdk
  如果出现找不到openjdk source的话,那么还可以这样卸载
  yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
  yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  安装下载到/opt目录下的jdk-7u5-linux-i586.rpm

在所有机器上设置JAVA环境变量
  编辑/etc/profile文件

  在其末尾添加如下配置行:

  使配置文件生效
  source /etc/profile
  输入javac或者java -version验证jdk安装和JAVA环境是否配置成功
  出现如下图界面则配置成功


Hadoop安装配置
  此次我安装的hadoop版本是hadoop-1.0.3
  下载地址:http://mirror.bjtu.edu.cn/apache/hadoop/core/hadoop-1.0.3/
下载并将hadoop-1.0.3.tar.gz包放置在/opt目录下

  将hadoop-1.0.3.tar.gz解压至/opt/hadoop-1.0.3

  将/opt/hadoop-1.0.3移置到/home/MDSS/hadoop下

检查MDSS对hadoop的权限

  在所有机器上新建/home/MDSS/hadoop_tmp文件
配置hadoop-env.sh文件

  加入JAVA_HOME环境变量

配置core-site.xml文件

  修改fs.defaultname的value为hdfs://192.168.15.102:9000

  修改hadoop.tmp.dir为/home/MDSS/hadoop_tmp

配置hdfs-site.xml文件

  修改datanode的数量,默认为3,由于现在我只有两个datanode节点,所以配置为2,若是配置的数量大于实际的datanode节点数,则hadoop会启动失败。

配置mapred-site.xml文件


配置 masters文件

  加入Namenode节点IP

配置slaves文件

  加入所有dataNode节点IP

将配置好的hadoop文件远程复制到两个datanode节点机器slaver1/slaver2上

在slaver1和slaver2上新建/home/MDSS/hadoop_tmp文件
配置HADOOP_HOME
  编辑/etc/profile
  在末尾加入
  HADOOP_HOME=/home/MDSS/hadoop
  PATH=$HADOOP_HOME/bin:$PATH
  export HADOOP_HOME
  export PATH
  使修改生效,执行:source /etc/profile
启动Hadoop
格式化NameNode

启动所有服务
  在NameNode节点启动hadoop服务

检查NameNode是否启动成功
  在NameNode节点上用java自带工具jps查看进程

检查datanode是否启动成功
  在所有dataNode节点机器上用java自带的jps查看进程

在NameNode上查看集群状态
  在NameNode节点执行:hadoop dfsadmin –report命令查看集群状态

Hadoop安装和配置常出现的问题及解决办法
权限不够:没有执行权限,不能创建目录
  做好权限控制,及时检查用户是否有执行权限。
hadoop-root-datanode-master.log 中有如下错误:  ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in
导致datanode启动不了。原因:每次namenode format会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.name.dir参数配置的目录中的id不一致。namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空dfs.data.dir参数配置的目录.

如果datanode连接不上namenode,导致datanode无法启动。  ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to ... failed on local exception: java.net.NoRouteToHostException: No route to host
关闭防火墙

  Shell代码
  1.service iptables stop
从本地往hdfs文件系统上传文件,出现如下错误:  INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink
  INFO hdfs.DFSClient: Abandoning block blk_-1300529705803292651_37023
  WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable to create new block.
解决方法:关闭防火墙:

  Shell代码
  1.service iptables stop
  1.
  禁用selinux:
  编辑 /etc/selinux/config文件,设置“SELINUX=disabled”
  4、安全模式导致的错误
  org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in safe mode
  在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
  Java代码
  1.hadoop dfsadmin -safemode leave
  关闭安全模式
  Hadoop集群启动的时候一切正常,但一直处于safemode,只能读不能写,这种时候应该查看namenode的logs,当然这可能会出现不同的情况... 下面仅介绍一种错误处理方案,希望能抛砖引玉,能对大家有所启发。
  以下是日志提示(此地只摘抄了重要部分)
  org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /home/hadoop/tmp/mapred/system. Name node is in safe mode.
  The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned off automatically.
  由日志可以看出无法删除/home/hadoop/tmp/mapred/system.(其实这只是一种假象,往往我们会去纠结于这个目录,其实不然)
  解决方案:
  1:终极办法强制退出安全模式(safemode)   hadoop dfsadmin -safemode leave   这种方式虽然快,但会有遗留问题,我在用habse的时候就遇到过,很麻烦,然后你就用“hadoop fsck /”工具慢慢恢复吧。
  2:删除namenode下/home/hadoop/tmp下的所有文件,重新format,当然这种方式非常暴力,因为你的数据完全木有了(对于format后可能会遇到的问题我的另一篇文章 http://blog.csdn.net/rzhzhz/article/details/7056812有提到)
  3:参考源码可发现这个错误是在检查file的时候抛出来的,基本也就是file的block丢失、错误等原因造成的。这种情况在副本数为1的情况下会很棘手,其他的时候hadoop基本能自行解决,错误数很多的情况下就会一直处于safemode下,当然你可以强制离开安全模式,先保证正常读写,然后再启用“hadoop fsck /”工具慢慢修复。
  关于集群修改配置文件后的分发,本人写了一个配置文件分发工具http://blog.csdn.net/rzhzhz/article/details/7056775,希望能给大家带来便利。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629005-1-1.html 上篇帖子: Hadoop 伪分布常见错误解决 下篇帖子: 关于hadoop中datanode节点不同的dfs.data.dir之间数据均衡问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表